Skip to content

Commit 30e5954

Browse files
committed
feat: action for setup, run and teardown added
1 parent a438bb4 commit 30e5954

File tree

4 files changed

+219
-96
lines changed

4 files changed

+219
-96
lines changed
Lines changed: 61 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,61 @@
1+
name: Run AWS S3 Integration Tests
2+
description: Runs integration tests against to aws infrastructure.
3+
4+
inputs:
5+
access_key_id:
6+
description: 'AWS Access Key ID'
7+
required: true
8+
secret_access_key:
9+
description: 'AWS Secret Access Key'
10+
required: true
11+
region_name:
12+
description: 'AWS Region Name'
13+
required: true
14+
stack_name:
15+
description: 'CloudFormation Stack Name (required for IAM tests)'
16+
required: true
17+
test_type:
18+
description: 'Type of test to run (e.g.,aws, aws-iam, aws-assume)'
19+
required: true
20+
focus_regex:
21+
description: 'Ginkgo Focus Regex for tests to run'
22+
required: false
23+
s3_endpoint_host:
24+
description: 'Custom S3 Endpoint Host'
25+
required: false
26+
role_arn:
27+
description: 'AWS Role ARN to test assume role functionality'
28+
required: false
29+
default: ''
30+
31+
runs:
32+
using: 'composite'
33+
steps:
34+
- name: Run AWS S3 Integration Tests
35+
shell: bash
36+
run: |
37+
set -e
38+
export access_key_id="${{inputs.access_key_id}}"
39+
export secret_access_key="${{inputs.secret_access_key}}"
40+
export region_name="${{inputs.region_name}}"
41+
export stack_name="${{inputs.stack_name}}"
42+
43+
if [[ "${{inputs.test_type}}" == "aws" ]]; then
44+
export role_arn="${{inputs.role_arn}}"
45+
export s3_endpoint_host="${{inputs.s3_endpoint_host}}"
46+
export focus_regex="${{inputs.focus_regex}}"
47+
echo "Running standard AWS integration tests..."
48+
./.github/scripts/s3/run-integration-aws.sh
49+
elif [[ "${{inputs.test_type}}" == "aws-iam" ]]; then
50+
echo "Running AWS IAM role tests..."
51+
./.github/scripts/s3/run-integration-aws-iam.sh
52+
elif [[ "${{inputs.test_type}}" == "aws-assume" ]]; then
53+
export assume_role_arn="${{inputs.role_arn}}"
54+
export focus_regex="${{inputs.focus_regex}}"
55+
echo "Running AWS assume role tests..."
56+
./.github/scripts/s3/run-integration-aws-assume.sh
57+
else
58+
echo "Error: Unknown test_type '${{inputs.test_type}}'"
59+
echo "Valid options are: aws, aws-iam, aws-assume"
60+
exit 1
61+
fi
Lines changed: 34 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,34 @@
1+
name: Set up AWS S3 Integration Infrastructure
2+
description: Sets up AWS S3 Integration Infrastructure for testing purposes.
3+
4+
inputs:
5+
access_key_id:
6+
description: 'AWS Access Key ID'
7+
required: true
8+
secret_access_key:
9+
description: 'AWS Secret Access Key'
10+
required: true
11+
region_name:
12+
description: 'AWS Region Name'
13+
required: true
14+
stack_name:
15+
description: 'CloudFormation Stack Name'
16+
required: true
17+
role_arn:
18+
description: 'AWS Role ARN'
19+
required: false
20+
default: ''
21+
22+
runs:
23+
using: 'composite'
24+
steps:
25+
- name: Set up AWS Infrastructure
26+
shell: bash
27+
run: |
28+
set -e
29+
export access_key_id="${{inputs.access_key_id}}"
30+
export secret_access_key="${{inputs.secret_access_key}}"
31+
export role_arn="${{inputs.role_arn}}"
32+
export region_name="${{inputs.region_name}}"
33+
export stack_name="${{inputs.stack_name}}"
34+
./.github/scripts/s3/setup-aws-infrastructure.sh
Lines changed: 28 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,28 @@
1+
name: 'Tear down AWS S3 Integration Infrastructure'
2+
description: 'Tears down AWS S3 Integration Infrastructure used for testing purposes.'
3+
inputs:
4+
access_key_id:
5+
description: 'AWS Access Key ID'
6+
required: true
7+
secret_access_key:
8+
description: 'AWS Secret Access Key'
9+
required: true
10+
region_name:
11+
description: 'AWS Region Name'
12+
required: true
13+
stack_name:
14+
description: 'CloudFormation Stack Name'
15+
required: true
16+
17+
runs:
18+
using: 'composite'
19+
steps:
20+
- name: Teardown AWS Infrastructure
21+
shell: bash
22+
run: |
23+
set -e
24+
export access_key_id="${{inputs.access_key_id}}"
25+
export secret_access_key="${{inputs.secret_access_key}}"
26+
export region_name="${{inputs.region_name}}"
27+
export stack_name="${{inputs.stack_name}}"
28+
./.github/scripts/s3/teardown-infrastructure.sh

.github/workflows/s3-integration.yml

Lines changed: 96 additions & 96 deletions
Original file line numberDiff line numberDiff line change
@@ -12,167 +12,167 @@ jobs:
1212
name: AWS S3 US Integration
1313
runs-on: ubuntu-latest
1414
environment: aws-integration
15+
env:
16+
REGION_NAME: us-east-1
17+
STACK_NAME: s3cli-iam
18+
S3_ENDPOINT_HOST: https://s3.amazonaws.com
1519
steps:
1620
- name: Checkout code
1721
uses: actions/checkout@v4
1822

1923
- name: Set up Go
2024
uses: actions/setup-go@v5
2125
with:
22-
go-version-file: 'go.mod'
26+
go-version-file: go.mod
2327

2428
- name: Install Ginkgo
2529
run: go install github.com/onsi/ginkgo/v2/ginkgo@latest
2630

2731
- name: Setup AWS infrastructure
28-
run: |
29-
set -e
30-
export access_key_id="${{ secrets.AWS_ACCESS_KEY_ID }}"
31-
export secret_access_key="${{ secrets.AWS_SECRET_ACCESS_KEY }}"
32-
export role_arn=""
33-
export region_name="us-east-1"
34-
export stack_name="s3cli-iam"
35-
./.github/scripts/s3/setup-aws-infrastructure.sh
32+
uses: ./.github/actions/s3-integration-setup
33+
with:
34+
access_key_id: ${{ secrets.AWS_ACCESS_KEY_ID }}
35+
secret_access_key: ${{ secrets.AWS_SECRET_ACCESS_KEY }}
36+
region_name: ${{ env.REGION_NAME }}
37+
stack_name: ${{ env.STACK_NAME }}
3638

3739
- name: Test Static Credentials
38-
run : |
39-
set -e
40-
export access_key_id="${{ secrets.AWS_ACCESS_KEY_ID }}"
41-
export secret_access_key="${{ secrets.AWS_SECRET_ACCESS_KEY }}"
42-
export role_arn=""
43-
export region_name="us-east-1"
44-
export stack_name="s3cli-iam"
45-
export s3_endpoint_host="https://s3.amazonaws.com"
46-
export focus_regex="GENERAL AWS|AWS V2 REGION|AWS V4 REGION|AWS US-EAST-1"
47-
./.github/scripts/s3/run-integration-aws.sh
40+
uses: ./.github/actions/s3-integration-run
41+
with:
42+
access_key_id: ${{ secrets.AWS_ACCESS_KEY_ID }}
43+
secret_access_key: ${{ secrets.AWS_SECRET_ACCESS_KEY }}
44+
region_name: ${{ env.REGION_NAME }}
45+
stack_name: ${{ env.STACK_NAME }}
46+
s3_endpoint_host: ${{ env.S3_ENDPOINT_HOST }}
47+
focus_regex: 'GENERAL AWS|AWS V2 REGION|AWS V4 REGION|AWS US-EAST-1'
48+
test_type: 'aws'
4849

4950
- name: Test IAM Roles
50-
run : |
51-
set -e
52-
export access_key_id="${{ secrets.AWS_ACCESS_KEY_ID }}"
53-
export secret_access_key="${{ secrets.AWS_SECRET_ACCESS_KEY }}"
54-
export region_name="us-east-1"
55-
export stack_name="s3cli-iam"
56-
./.github/scripts/s3/run-integration-aws-iam.sh
57-
51+
uses: ./.github/actions/s3-integration-run
52+
with:
53+
access_key_id: ${{ secrets.AWS_ACCESS_KEY_ID }}
54+
secret_access_key: ${{ secrets.AWS_SECRET_ACCESS_KEY }}
55+
region_name: ${{ env.REGION_NAME }}
56+
stack_name: ${{ env.STACK_NAME }}
57+
test_type: 'aws-iam'
58+
5859
- name: Test Assume Roles
59-
run: |
60-
set -e
61-
export access_key_id="${{ secrets.AWS_ACCESS_KEY_ID }}"
62-
export secret_access_key="${{ secrets.AWS_SECRET_ACCESS_KEY }}"
63-
export assume_role_arn="${{ secrets.AWS_ROLE_ARN }}"
64-
export region_name="us-east-1"
65-
export focus_regex="AWS ASSUME ROLE"
66-
./.github/scripts/s3/run-integration-aws-assume.sh
60+
uses: ./.github/actions/s3-integration-run
61+
with:
62+
access_key_id: ${{ secrets.AWS_ACCESS_KEY_ID }}
63+
secret_access_key: ${{ secrets.AWS_SECRET_ACCESS_KEY }}
64+
region_name: ${{ env.REGION_NAME }}
65+
role_arn: ${{ secrets.AWS_ROLE_ARN }}
66+
focus_regex: 'AWS ASSUME ROLE'
67+
test_type: 'aws-assume'
6768

6869
- name: Teardown AWS infrastructure
6970
if: always()
70-
run: |
71-
set -e
72-
export access_key_id="${{ secrets.AWS_ACCESS_KEY_ID }}"
73-
export secret_access_key="${{ secrets.AWS_SECRET_ACCESS_KEY }}"
74-
export role_arn=""
75-
export region_name="us-east-1"
76-
export stack_name="s3cli-iam"
77-
./.github/scripts/s3/teardown-infrastructure.sh
71+
uses: ./.github/actions/s3-integration-teardown
72+
with:
73+
access_key_id: ${{ secrets.AWS_ACCESS_KEY_ID }}
74+
secret_access_key: ${{ secrets.AWS_SECRET_ACCESS_KEY }}
75+
region_name: ${{ env.REGION_NAME }}
76+
stack_name: ${{ env.STACK_NAME }}
7877

7978
# AWS S3 Public Read Integration
8079
aws-s3-public-read-integration:
8180
name: AWS S3 Public Read Integration
8281
runs-on: ubuntu-latest
8382
environment: aws-integration
83+
env:
84+
REGION_NAME: us-east-1
85+
STACK_NAME: s3cli-public-bucket
86+
S3_ENDPOINT_HOST: https://s3.amazonaws.com
8487
steps:
8588
- name: Checkout code
8689
uses: actions/checkout@v5
8790

8891
- name: Set up Go
8992
uses: actions/setup-go@v6
9093
with:
91-
go-version-file: 'go.mod'
94+
go-version-file: go.mod
9295

9396
- name: Install Ginkgo
9497
run: go install github.com/onsi/ginkgo/v2/ginkgo@latest
9598

9699
- name: Setup AWS infrastructure
97-
run: |
98-
set -e
99-
export access_key_id="${{ secrets.AWS_ACCESS_KEY_ID }}"
100-
export secret_access_key="${{ secrets.AWS_SECRET_ACCESS_KEY }}"
101-
export role_arn=""
102-
export region_name="us-east-1"
103-
export stack_name="s3cli-public-bucket"
104-
./.github/scripts/s3/setup-aws-infrastructure.sh
100+
uses: ./.github/actions/s3-integration-setup
101+
with:
102+
access_key_id: ${{ secrets.AWS_ACCESS_KEY_ID }}
103+
secret_access_key: ${{ secrets.AWS_SECRET_ACCESS_KEY }}
104+
region_name: ${{ env.REGION_NAME }}
105+
stack_name: ${{ env.STACK_NAME }}
105106

106107
- name: Run public read tests
107-
run: |
108-
set -e
109-
export access_key_id="${{ secrets.AWS_ACCESS_KEY_ID }}"
110-
export secret_access_key="${{ secrets.AWS_SECRET_ACCESS_KEY }}"
111-
export role_arn=""
112-
export region_name="us-east-1"
113-
export stack_name="s3cli-public-bucket"
114-
export focus_regex="PUBLIC READ ONLY"
115-
./.github/scripts/s3/run-integration-aws.sh
108+
uses: ./.github/actions/s3-integration-run
109+
with:
110+
access_key_id: ${{ secrets.AWS_ACCESS_KEY_ID }}
111+
secret_access_key: ${{ secrets.AWS_SECRET_ACCESS_KEY }}
112+
region_name: ${{ env.REGION_NAME }}
113+
stack_name: ${{ env.STACK_NAME }}
114+
s3_endpoint_host: ${{ env.S3_ENDPOINT_HOST }}
115+
focus_regex: 'PUBLIC READ ONLY'
116+
test_type: 'aws'
116117

117118
- name: Teardown AWS infrastructure
118119
if: always()
119-
run: |
120-
set -e
121-
export access_key_id="${{ secrets.AWS_ACCESS_KEY_ID }}"
122-
export secret_access_key="${{ secrets.AWS_SECRET_ACCESS_KEY }}"
123-
export role_arn=""
124-
export region_name="us-east-1"
125-
export stack_name="s3cli-public-bucket"
126-
./.github/scripts/s3/teardown-infrastructure.sh
120+
uses: ./.github/actions/s3-integration-teardown
121+
with:
122+
access_key_id: ${{ secrets.AWS_ACCESS_KEY_ID }}
123+
secret_access_key: ${{ secrets.AWS_SECRET_ACCESS_KEY }}
124+
region_name: ${{ env.REGION_NAME }}
125+
stack_name: ${{ env.STACK_NAME }}
127126

128127
# AWS S3 Frankfurt Integration
129128
aws-s3-frankfurt-integration:
130129
name: AWS S3 Frankfurt Integration
131130
runs-on: ubuntu-latest
132131
environment: aws-integration
132+
env:
133+
REGION_NAME: eu-central-1
134+
STACK_NAME: s3cli-private-bucket
135+
S3_ENDPOINT_HOST: https://s3.eu-central-1.amazonaws.com
136+
133137
steps:
134138
- name: Checkout code
135139
uses: actions/checkout@v5
136140

137141
- name: Set up Go
138142
uses: actions/setup-go@v6
139143
with:
140-
go-version-file: 'go.mod'
144+
go-version-file: go.mod
141145

142146
- name: Install Ginkgo
143147
run: go install github.com/onsi/ginkgo/v2/ginkgo@latest
144148

145149
- name: Setup AWS infrastructure
146-
run: |
147-
set -e
148-
export access_key_id="${{ secrets.AWS_ACCESS_KEY_ID }}"
149-
export secret_access_key="${{ secrets.AWS_SECRET_ACCESS_KEY }}"
150-
export role_arn=""
151-
export region_name="eu-central-1"
152-
export stack_name="s3cli-private-bucket"
153-
./.github/scripts/s3/setup-aws-infrastructure.sh
150+
uses: ./.github/actions/s3-integration-setup
151+
with:
152+
access_key_id: ${{ secrets.AWS_ACCESS_KEY_ID }}
153+
secret_access_key: ${{ secrets.AWS_SECRET_ACCESS_KEY }}
154+
region_name: ${{ env.REGION_NAME }}
155+
stack_name: ${{ env.STACK_NAME }}
154156

155157
- name: Run Frankfurt region tests
156-
run: |
157-
set -e
158-
export access_key_id="${{ secrets.AWS_ACCESS_KEY_ID }}"
159-
export secret_access_key="${{ secrets.AWS_SECRET_ACCESS_KEY }}"
160-
export role_arn=""
161-
export region_name="eu-central-1"
162-
export stack_name="s3cli-private-bucket"
163-
export focus_regex="GENERAL AWS|AWS V4 REGION"
164-
export s3_endpoint_host="https://s3.eu-central-1.amazonaws.com"
165-
./.github/scripts/s3/run-integration-aws.sh
158+
uses: ./.github/actions/s3-integration-run
159+
with:
160+
access_key_id: ${{ secrets.AWS_ACCESS_KEY_ID }}
161+
secret_access_key: ${{ secrets.AWS_SECRET_ACCESS_KEY }}
162+
region_name: ${{ env.REGION_NAME }}
163+
stack_name: ${{ env.STACK_NAME }}
164+
s3_endpoint_host: ${{ env.S3_ENDPOINT_HOST }}
165+
focus_regex: 'GENERAL AWS|AWS V4 REGION'
166+
test_type: 'aws'
166167

167168
- name: Teardown AWS infrastructure
168169
if: always()
169-
run: |
170-
set -e
171-
export access_key_id="${{ secrets.AWS_ACCESS_KEY_ID }}"
172-
export secret_access_key="${{ secrets.AWS_SECRET_ACCESS_KEY }}"
173-
export region_name="eu-central-1"
174-
export stack_name="s3cli-private-bucket"
175-
./.github/scripts/s3/teardown-infrastructure.sh
170+
uses: ./.github/actions/s3-integration-teardown
171+
with:
172+
access_key_id: ${{ secrets.AWS_ACCESS_KEY_ID }}
173+
secret_access_key: ${{ secrets.AWS_SECRET_ACCESS_KEY }}
174+
region_name: ${{ env.REGION_NAME }}
175+
stack_name: ${{ env.STACK_NAME }}
176176

177177

178178
# s3-compatible-integration:
@@ -186,7 +186,7 @@ jobs:
186186
# - name: Set up Go
187187
# uses: actions/setup-go@v5
188188
# with:
189-
# go-version-file: 'go.mod'
189+
# go-version-file: go.mod
190190

191191
# - name: Install Ginkgo
192192
# run: go install github.com/onsi/ginkgo/v2/ginkgo@latest

0 commit comments

Comments
 (0)