Skip to content

Commit f7bebcc

Browse files
committed
update S3 preview setup and teardown to support configurable keys
1 parent 97333aa commit f7bebcc

5 files changed

Lines changed: 99 additions & 89 deletions

File tree

readme.md

Lines changed: 13 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -110,17 +110,17 @@ The following inputs can be used as `step.with` keys:
110110

111111
| Name | Required/Default | Description |
112112
|-----------------------------|-----------------------------|-----------------------------------------------------|
113-
| `configmap-name` | `app-spring-deployment-env` | Name of the ConfigMap |
113+
| `configmap-name` | `app-spring-deployment-environments` | Name of the ConfigMap |
114114
| `namespace` | required | Kubernetes namespace |
115115
| `preview-number` | required | Preview number (PR number) |
116-
| `secret-name` | `app-secrets` | Name of the secret containing AWS credentials |
116+
| `secret-name` | `app-secrets` | Name of the secret containing credentials |
117117
| `s3-bucket-key` | `S3_BUCKET` | Key for S3_BUCKET in ConfigMap |
118118
| `s3-endpoint-key` | `S3_ENDPOINT` | Key for S3_ENDPOINT in ConfigMap |
119-
| `aws-region-key` | `AWS_REGION` | Key for AWS_REGION in ConfigMap |
120-
| `aws-access-key-id-key` | `AWS_ACCESS_KEY_ID` | Key for AWS_ACCESS_KEY_ID in Secret |
121-
| `aws-secret-access-key-key` | `AWS_SECRET_ACCESS_KEY` | Key for AWS_SECRET_ACCESS_KEY in Secret |
122-
| `aws-session-token-key` | `AWS_SESSION_TOKEN` | Key for AWS_SESSION_TOKEN in Secret |
123-
| `base-prefix` | `main` | Base prefix to copy from |
119+
| `s3-region-key` | `S3_REGION` | Key for S3_REGION in ConfigMap |
120+
| `s3-root-folder-key` | `S3_ROOT_FOLDER` | Key for S3_ROOT_FOLDER in ConfigMap |
121+
| `s3-force-path-style-access-key` | `S3_FORCE_PATH_STYLE_ACCESS` | Key for S3_FORCE_PATH_STYLE_ACCESS in ConfigMap |
122+
| `s3-access-key-key` | `S3_ACCESS_KEY` | Key for S3_ACCESS_KEY in Secret |
123+
| `s3-secret-key-key` | `S3_SECRET_KEY` | Key for S3_SECRET_KEY in Secret |
124124

125125
### Teardown S3 Preview
126126

@@ -142,16 +142,16 @@ The following inputs can be used as `step.with` keys:
142142

143143
| Name | Required/Default | Description |
144144
|-----------------------------|-----------------------------|-----------------------------------------------------|
145-
| `configmap-name` | `app-spring-deployment-env` | Name of the ConfigMap |
145+
| `configmap-name` | `app-spring-deployment-environments` | Name of the ConfigMap |
146146
| `namespace` | required | Kubernetes namespace |
147147
| `preview-number` | required | Preview number (PR number) |
148-
| `secret-name` | `app-secrets` | Name of the secret containing AWS credentials |
148+
| `secret-name` | `app-secrets` | Name of the secret containing credentials |
149149
| `s3-bucket-key` | `S3_BUCKET` | Key for S3_BUCKET in ConfigMap |
150150
| `s3-endpoint-key` | `S3_ENDPOINT` | Key for S3_ENDPOINT in ConfigMap |
151-
| `aws-region-key` | `AWS_REGION` | Key for AWS_REGION in ConfigMap |
152-
| `aws-access-key-id-key` | `AWS_ACCESS_KEY_ID` | Key for AWS_ACCESS_KEY_ID in Secret |
153-
| `aws-secret-access-key-key` | `AWS_SECRET_ACCESS_KEY` | Key for AWS_SECRET_ACCESS_KEY in Secret |
154-
| `aws-session-token-key` | `AWS_SESSION_TOKEN` | Key for AWS_SESSION_TOKEN in Secret |
151+
| `s3-region-key` | `S3_REGION` | Key for S3_REGION in ConfigMap |
152+
| `s3-force-path-style-access-key` | `S3_FORCE_PATH_STYLE_ACCESS` | Key for S3_FORCE_PATH_STYLE_ACCESS in ConfigMap |
153+
| `s3-access-key-key` | `S3_ACCESS_KEY` | Key for S3_ACCESS_KEY in Secret |
154+
| `s3-secret-key-key` | `S3_SECRET_KEY` | Key for S3_SECRET_KEY in Secret |
155155

156156
### Setup PostgreSQL Preview Schema
157157

setup-s3-preview/action.yml

Lines changed: 27 additions & 27 deletions
Original file line numberDiff line numberDiff line change
@@ -4,15 +4,15 @@ inputs:
44
configmap-name:
55
description: 'Name of the ConfigMap'
66
required: false
7-
default: 'app-spring-deployment-env'
7+
default: 'app-spring-deployment-environments'
88
namespace:
99
description: 'Kubernetes namespace'
1010
required: true
1111
preview-number:
1212
description: 'Preview number (PR number)'
1313
required: true
1414
secret-name:
15-
description: 'Name of the secret containing AWS credentials'
15+
description: 'Name of the secret containing credentials'
1616
required: false
1717
default: 'app-secrets'
1818
s3-bucket-key:
@@ -23,26 +23,26 @@ inputs:
2323
description: 'Key for S3_ENDPOINT in ConfigMap'
2424
required: false
2525
default: 'S3_ENDPOINT'
26-
aws-region-key:
27-
description: 'Key for AWS_REGION in ConfigMap'
26+
s3-region-key:
27+
description: 'Key for S3_REGION in ConfigMap'
2828
required: false
29-
default: 'AWS_REGION'
30-
aws-access-key-id-key:
31-
description: 'Key for AWS_ACCESS_KEY_ID in Secret'
29+
default: 'S3_REGION'
30+
s3-root-folder-key:
31+
description: 'Key for S3_ROOT_FOLDER in ConfigMap'
3232
required: false
33-
default: 'AWS_ACCESS_KEY_ID'
34-
aws-secret-access-key-key:
35-
description: 'Key for AWS_SECRET_ACCESS_KEY in Secret'
33+
default: 'S3_ROOT_FOLDER'
34+
s3-force-path-style-access-key:
35+
description: 'Key for S3_FORCE_PATH_STYLE_ACCESS in ConfigMap'
3636
required: false
37-
default: 'AWS_SECRET_ACCESS_KEY'
38-
aws-session-token-key:
39-
description: 'Key for AWS_SESSION_TOKEN in Secret'
37+
default: 'S3_FORCE_PATH_STYLE_ACCESS'
38+
s3-access-key-key:
39+
description: 'Key for S3_ACCESS_KEY in Secret'
4040
required: false
41-
default: 'AWS_SESSION_TOKEN'
42-
base-prefix:
43-
description: 'Base prefix to copy from'
41+
default: 'S3_ACCESS_KEY'
42+
s3-secret-key-key:
43+
description: 'Key for S3_SECRET_KEY in Secret'
4444
required: false
45-
default: 'main'
45+
default: 'S3_SECRET_KEY'
4646

4747
runs:
4848
using: "composite"
@@ -54,25 +54,25 @@ runs:
5454
SECRET_NAME: "${{ inputs.secret-name }}"
5555
S3_BUCKET_KEY: "${{ inputs.s3-bucket-key }}"
5656
S3_ENDPOINT_KEY: "${{ inputs.s3-endpoint-key }}"
57-
AWS_REGION_KEY: "${{ inputs.aws-region-key }}"
58-
AWS_ACCESS_KEY_ID_KEY: "${{ inputs.aws-access-key-id-key }}"
59-
AWS_SECRET_ACCESS_KEY_KEY: "${{ inputs.aws-secret-access-key-key }}"
60-
AWS_SESSION_TOKEN_KEY: "${{ inputs.aws-session-token-key }}"
57+
S3_REGION_KEY: "${{ inputs.s3-region-key }}"
58+
S3_ROOT_FOLDER_KEY: "${{ inputs.s3-root-folder-key }}"
59+
S3_FORCE_PATH_STYLE_ACCESS_KEY: "${{ inputs.s3-force-path-style-access-key }}"
60+
S3_ACCESS_KEY_KEY: "${{ inputs.s3-access-key-key }}"
61+
S3_SECRET_KEY_KEY: "${{ inputs.s3-secret-key-key }}"
6162
PREVIEW_NUMBER: "${{ inputs.preview-number }}"
62-
BASE_PREFIX: "${{ inputs.base-prefix }}"
6363
run: |
6464
envsubst '
6565
$JOB_NAME
6666
$CONFIGMAP_NAME
6767
$SECRET_NAME
6868
$S3_BUCKET_KEY
6969
$S3_ENDPOINT_KEY
70-
$AWS_REGION_KEY
71-
$AWS_ACCESS_KEY_ID_KEY
72-
$AWS_SECRET_ACCESS_KEY_KEY
73-
$AWS_SESSION_TOKEN_KEY
70+
$S3_REGION_KEY
71+
$S3_ROOT_FOLDER_KEY
72+
$S3_FORCE_PATH_STYLE_ACCESS_KEY
73+
$S3_ACCESS_KEY_KEY
74+
$S3_SECRET_KEY_KEY
7475
$PREVIEW_NUMBER
75-
$BASE_PREFIX
7676
' < ${{ github.action_path }}/job-template.yml > job-setup-s3.yml
7777
7878
echo "Prepared job manifest: job-setup-s3.yml"

setup-s3-preview/job-template.yml

Lines changed: 26 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -20,12 +20,22 @@ spec:
2020
2121
echo "### START $(date --iso-8601=seconds) ###"
2222
23+
if [ "$S3_FORCE_PATH_STYLE_ACCESS" = "true" ]; then
24+
aws configure set default.s3.addressing_style path
25+
fi
26+
2327
S3_ARGS=""
2428
if [ -n "$S3_ENDPOINT" ]; then
2529
S3_ARGS="--endpoint-url $S3_ENDPOINT"
2630
fi
2731
28-
S3_MAIN_PREFIX="s3://$S3_BUCKET/${BASE_PREFIX}/"
32+
S3_SOURCE_PREFIX=""
33+
if [ -n "$S3_ROOT_FOLDER" ]; then
34+
S3_SOURCE_PREFIX="s3://$S3_BUCKET/${S3_ROOT_FOLDER%/}/"
35+
else
36+
S3_SOURCE_PREFIX="s3://$S3_BUCKET/"
37+
fi
38+
2939
S3_PREVIEW_PREFIX="s3://$S3_BUCKET/preview-${PREVIEW_NUMBER}/"
3040
3141
echo "Checking if $S3_PREVIEW_PREFIX already exists..."
@@ -36,8 +46,8 @@ spec:
3646
exit 0
3747
fi
3848
39-
echo "Syncing from $S3_MAIN_PREFIX to $S3_PREVIEW_PREFIX ..."
40-
aws s3 $S3_ARGS sync "$S3_MAIN_PREFIX" "$S3_PREVIEW_PREFIX"
49+
echo "Syncing from $S3_SOURCE_PREFIX to $S3_PREVIEW_PREFIX ..."
50+
aws s3 $S3_ARGS sync "$S3_SOURCE_PREFIX" "$S3_PREVIEW_PREFIX"
4151
4252
echo "Script finished successfully!"
4353
echo "### END $(date --iso-8601=seconds) ###"
@@ -53,31 +63,32 @@ spec:
5363
name: ${CONFIGMAP_NAME}
5464
key: ${S3_ENDPOINT_KEY}
5565
optional: true
56-
- name: AWS_REGION
66+
- name: AWS_DEFAULT_REGION
5767
valueFrom:
5868
configMapKeyRef:
5969
name: ${CONFIGMAP_NAME}
60-
key: ${AWS_REGION_KEY}
61-
- name: AWS_DEFAULT_REGION
70+
key: ${S3_REGION_KEY}
71+
- name: S3_ROOT_FOLDER
6272
valueFrom:
6373
configMapKeyRef:
6474
name: ${CONFIGMAP_NAME}
65-
key: ${AWS_REGION_KEY}
75+
key: ${S3_ROOT_FOLDER_KEY}
76+
optional: true
77+
- name: S3_FORCE_PATH_STYLE_ACCESS
78+
valueFrom:
79+
configMapKeyRef:
80+
name: ${CONFIGMAP_NAME}
81+
key: ${S3_FORCE_PATH_STYLE_ACCESS_KEY}
82+
optional: true
6683
- name: AWS_ACCESS_KEY_ID
6784
valueFrom:
6885
secretKeyRef:
6986
name: ${SECRET_NAME}
70-
key: ${AWS_ACCESS_KEY_ID_KEY}
87+
key: ${S3_ACCESS_KEY_KEY}
7188
- name: AWS_SECRET_ACCESS_KEY
7289
valueFrom:
7390
secretKeyRef:
7491
name: ${SECRET_NAME}
75-
key: ${AWS_SECRET_ACCESS_KEY_KEY}
76-
- name: AWS_SESSION_TOKEN
77-
valueFrom:
78-
secretKeyRef:
79-
name: ${SECRET_NAME}
80-
key: ${AWS_SESSION_TOKEN_KEY}
81-
optional: true
92+
key: ${S3_SECRET_KEY_KEY}
8293
- name: PREVIEW_NUMBER
8394
value: "${PREVIEW_NUMBER}"

teardown-s3-preview/action.yml

Lines changed: 22 additions & 22 deletions
Original file line numberDiff line numberDiff line change
@@ -4,15 +4,15 @@ inputs:
44
configmap-name:
55
description: 'Name of the ConfigMap'
66
required: false
7-
default: 'app-spring-deployment-env'
7+
default: 'app-spring-deployment-environments'
88
namespace:
99
description: 'Kubernetes namespace'
1010
required: true
1111
preview-number:
1212
description: 'Preview number (PR number)'
1313
required: true
1414
secret-name:
15-
description: 'Name of the secret containing AWS credentials'
15+
description: 'Name of the secret containing credentials'
1616
required: false
1717
default: 'app-secrets'
1818
s3-bucket-key:
@@ -23,22 +23,22 @@ inputs:
2323
description: 'Key for S3_ENDPOINT in ConfigMap'
2424
required: false
2525
default: 'S3_ENDPOINT'
26-
aws-region-key:
27-
description: 'Key for AWS_REGION in ConfigMap'
26+
s3-region-key:
27+
description: 'Key for S3_REGION in ConfigMap'
2828
required: false
29-
default: 'AWS_REGION'
30-
aws-access-key-id-key:
31-
description: 'Key for AWS_ACCESS_KEY_ID in Secret'
29+
default: 'S3_REGION'
30+
s3-force-path-style-access-key:
31+
description: 'Key for S3_FORCE_PATH_STYLE_ACCESS in ConfigMap'
3232
required: false
33-
default: 'AWS_ACCESS_KEY_ID'
34-
aws-secret-access-key-key:
35-
description: 'Key for AWS_SECRET_ACCESS_KEY in Secret'
33+
default: 'S3_FORCE_PATH_STYLE_ACCESS'
34+
s3-access-key-key:
35+
description: 'Key for S3_ACCESS_KEY in Secret'
3636
required: false
37-
default: 'AWS_SECRET_ACCESS_KEY'
38-
aws-session-token-key:
39-
description: 'Key for AWS_SESSION_TOKEN in Secret'
37+
default: 'S3_ACCESS_KEY'
38+
s3-secret-key-key:
39+
description: 'Key for S3_SECRET_KEY in Secret'
4040
required: false
41-
default: 'AWS_SESSION_TOKEN'
41+
default: 'S3_SECRET_KEY'
4242

4343
runs:
4444
using: "composite"
@@ -50,10 +50,10 @@ runs:
5050
SECRET_NAME: "${{ inputs.secret-name }}"
5151
S3_BUCKET_KEY: "${{ inputs.s3-bucket-key }}"
5252
S3_ENDPOINT_KEY: "${{ inputs.s3-endpoint-key }}"
53-
AWS_REGION_KEY: "${{ inputs.aws-region-key }}"
54-
AWS_ACCESS_KEY_ID_KEY: "${{ inputs.aws-access-key-id-key }}"
55-
AWS_SECRET_ACCESS_KEY_KEY: "${{ inputs.aws-secret-access-key-key }}"
56-
AWS_SESSION_TOKEN_KEY: "${{ inputs.aws-session-token-key }}"
53+
S3_REGION_KEY: "${{ inputs.s3-region-key }}"
54+
S3_FORCE_PATH_STYLE_ACCESS_KEY: "${{ inputs.s3-force-path-style-access-key }}"
55+
S3_ACCESS_KEY_KEY: "${{ inputs.s3-access-key-key }}"
56+
S3_SECRET_KEY_KEY: "${{ inputs.s3-secret-key-key }}"
5757
PREVIEW_NUMBER: "${{ inputs.preview-number }}"
5858
run: |
5959
envsubst '
@@ -62,10 +62,10 @@ runs:
6262
$SECRET_NAME
6363
$S3_BUCKET_KEY
6464
$S3_ENDPOINT_KEY
65-
$AWS_REGION_KEY
66-
$AWS_ACCESS_KEY_ID_KEY
67-
$AWS_SECRET_ACCESS_KEY_KEY
68-
$AWS_SESSION_TOKEN_KEY
65+
$S3_REGION_KEY
66+
$S3_FORCE_PATH_STYLE_ACCESS_KEY
67+
$S3_ACCESS_KEY_KEY
68+
$S3_SECRET_KEY_KEY
6969
$PREVIEW_NUMBER
7070
' < ${{ github.action_path }}/job-template.yml > job-teardown-s3.yml
7171

teardown-s3-preview/job-template.yml

Lines changed: 11 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -20,6 +20,10 @@ spec:
2020
2121
echo "### START $(date --iso-8601=seconds) ###"
2222
23+
if [ "$S3_FORCE_PATH_STYLE_ACCESS" = "true" ]; then
24+
aws configure set default.s3.addressing_style path
25+
fi
26+
2327
S3_ARGS=""
2428
if [ -n "$S3_ENDPOINT" ]; then
2529
S3_ARGS="--endpoint-url $S3_ENDPOINT"
@@ -52,31 +56,26 @@ spec:
5256
name: ${CONFIGMAP_NAME}
5357
key: ${S3_ENDPOINT_KEY}
5458
optional: true
55-
- name: AWS_REGION
59+
- name: AWS_DEFAULT_REGION
5660
valueFrom:
5761
configMapKeyRef:
5862
name: ${CONFIGMAP_NAME}
59-
key: ${AWS_REGION_KEY}
60-
- name: AWS_DEFAULT_REGION
63+
key: ${S3_REGION_KEY}
64+
- name: S3_FORCE_PATH_STYLE_ACCESS
6165
valueFrom:
6266
configMapKeyRef:
6367
name: ${CONFIGMAP_NAME}
64-
key: ${AWS_REGION_KEY}
68+
key: ${S3_FORCE_PATH_STYLE_ACCESS_KEY}
69+
optional: true
6570
- name: AWS_ACCESS_KEY_ID
6671
valueFrom:
6772
secretKeyRef:
6873
name: ${SECRET_NAME}
69-
key: ${AWS_ACCESS_KEY_ID_KEY}
74+
key: ${S3_ACCESS_KEY_KEY}
7075
- name: AWS_SECRET_ACCESS_KEY
7176
valueFrom:
7277
secretKeyRef:
7378
name: ${SECRET_NAME}
74-
key: ${AWS_SECRET_ACCESS_KEY_KEY}
75-
- name: AWS_SESSION_TOKEN
76-
valueFrom:
77-
secretKeyRef:
78-
name: ${SECRET_NAME}
79-
key: ${AWS_SESSION_TOKEN_KEY}
80-
optional: true
79+
key: ${S3_SECRET_KEY_KEY}
8180
- name: PREVIEW_NUMBER
8281
value: "${PREVIEW_NUMBER}"

0 commit comments

Comments
 (0)