Skip to content

Commit a37767e

Browse files
committed
Output the layer version instead of layer arn from the deploy layer workflow and added update ssm workflow to be called from the publish layer workflow
1 parent f647154 commit a37767e

File tree

4 files changed

+63
-24
lines changed

4 files changed

+63
-24
lines changed

.github/scripts/update_layer_arn.sh

Lines changed: 4 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -8,13 +8,12 @@
88
# see .github/workflows/publish_layer.yml
99

1010

11-
# Get the new layer arn from the first command-line argument
12-
new_layer_arn=$1
13-
if [ -z "$new_layer_arn" ]; then
14-
echo "Usage: $0 <new_layer_arn>"
11+
# Get the new layer version from the first command-line argument
12+
new_version=$1
13+
if [ -z "$new_version" ]; then
14+
echo "Usage: $0 <new_version>"
1515
exit 1
1616
fi
17-
new_version=$(echo $new_layer_arn | sed 's/.*://')
1817

1918
# Find all files with specified extensions in ./docs and ./examples directories
2019
# -type f: only find files (not directories)

.github/workflows/publish_layer.yml

Lines changed: 21 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -80,6 +80,26 @@ jobs:
8080
secrets:
8181
target-account-role: ${{ secrets.AWS_LAYERS_PROD_ROLE_ARN }}
8282

83+
update-ssm-beta:
84+
needs: [deploy-beta]
85+
uses: ./.github/workflows/update_ssm.yml
86+
permissions:
87+
contents: read
88+
with:
89+
environment: beta
90+
package_version: ${{ inputs.latest_published_version }}
91+
layer-version: ${{ needs.deploy-beta.outputs.layer-version }}
92+
93+
update-ssm-prod:
94+
needs: [deploy-prod]
95+
uses: ./.github/workflows/update_ssm.yml
96+
permissions:
97+
contents: read
98+
with:
99+
environment: prod
100+
package_version: ${{ inputs.latest_published_version }}
101+
layer-version: ${{ needs.deploy-prod.outputs.layer-version }}
102+
83103
update_layer_arn_docs:
84104
needs: [deploy-prod]
85105
# Force Github action to run only a single job at a time (based on the group name)
@@ -98,7 +118,7 @@ jobs:
98118
ref: ${{ github.sha }}
99119
- name: Replace layer versions in documentation
100120
run: |
101-
./.github/scripts/update_layer_arn.sh ${{ needs.deploy-prod.outputs.layer-arn }}
121+
./.github/scripts/update_layer_arn.sh ${{ needs.deploy-prod.outputs.layer-version }}
102122
- name: Stage changes
103123
run: git add .
104124
- name: Create PR

.github/workflows/reusable_deploy_layer_stack.yml

Lines changed: 8 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -16,9 +16,9 @@ on:
1616
required: true
1717
type: string
1818
outputs:
19-
layer-arn:
20-
description: "The latest deployed Layer ARN"
21-
value: ${{ jobs.deploy-cdk-stack.outputs.layer-arn }}
19+
layer-version:
20+
description: "The latest deployed Layer version"
21+
value: ${{ jobs.deploy-cdk-stack.outputs.layer-version }}
2222
secrets:
2323
target-account-role:
2424
required: true
@@ -70,7 +70,7 @@ jobs:
7070
"mx-central-1"
7171
]
7272
outputs:
73-
layer-arn: ${{ steps.store-latest-layer-arn.outputs.layer-arn }}
73+
layer-version: ${{ steps.store-latest-layer-arn.outputs.layer-version }}
7474
steps:
7575
- name: checkout
7676
uses: actions/checkout@08c6903cd8c0fde910a37f88322edcfb5dd907a8 # v5.0.0
@@ -100,10 +100,11 @@ jobs:
100100
run: |
101101
mkdir cdk-layer-stack
102102
jq -r -c '.LayerPublisherStack.LatestLayerArn' layers/cdk-outputs.json > cdk-layer-stack/${{ matrix.region }}-layer-version.txt
103+
layer_arn=$(cat cdk-layer-stack/${{ matrix.region }}-layer-version.txt)
104+
echo "$layer_arn"
103105
if [ "${{ matrix.region }}" = "us-east-1" ]; then
104-
echo "layer-arn=$(cat cdk-layer-stack/${{ matrix.region }}-layer-version.txt)" | tee -a "$GITHUB_OUTPUT"
105-
else
106-
cat cdk-layer-stack/${{ matrix.region }}-layer-version.txt
106+
layer_version=$(echo $layer_arn | sed 's/.*://')
107+
echo "layer-version=$layer_version" >> "$GITHUB_OUTPUT"
107108
fi
108109
- name: Save Layer ARN artifact
109110
if: ${{ inputs.stage == 'PROD' }}

.github/workflows/update_ssm.yml

Lines changed: 30 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -26,8 +26,8 @@ on:
2626
description: Environment to deploy to
2727
type: choice
2828
options:
29-
- Beta
30-
- Prod
29+
- beta
30+
- prod
3131
required: true
3232

3333
write_latest:
@@ -40,6 +40,32 @@ on:
4040
type: string
4141
required: true
4242

43+
layer-version:
44+
description: Layer version of the published layer
45+
type: string
46+
required: true
47+
48+
workflow_call:
49+
inputs:
50+
environment:
51+
description: Environment to deploy to
52+
type: string
53+
required: true
54+
55+
write_latest:
56+
description: Write to the latest path
57+
type: boolean
58+
required: false
59+
60+
package_version:
61+
description: Semantic Version of published layer
62+
type: string
63+
required: true
64+
layer-version:
65+
description: Layer version of the published layer
66+
type: string
67+
required: true
68+
4369
name: SSM Parameters
4470
run-name: SSM Parameters - TypeScript
4571

@@ -101,22 +127,15 @@ jobs:
101127
# Dynamic secret access is safe here - secrets are scoped per environment
102128
role-to-assume: ${{ secrets[format('{0}', steps.transform.outputs.CONVERTED_REGION)] }}
103129
mask-aws-account-id: true
104-
- id: get-version
105-
env:
106-
prefix: ${{ inputs.environment == 'beta' && '/aws/service/powertools/beta' || '/aws/service/powertools' }}
107-
run: |
108-
current_layer_version=$(aws ssm get-parameter --name ${{ env.prefix }}/typescript/generic/all/${{ inputs.package_version }} --query Parameter.Value --output text --region us-east-1)
109-
new_layer_version=$((current_layer_version + 1))
110-
echo "new_layer_version=$new_layer_version" >> "$GITHUB_OUTPUT"
111130
- id: write-version
112131
env:
113132
prefix: ${{ inputs.environment == 'beta' && '/aws/service/powertools/beta' || '/aws/service/powertools' }}
114133
run: |
115-
aws ssm put-parameter --name ${{ env.prefix }}/typescript/generic/all/${{ inputs.package_version }} --value "arn:aws:lambda:${{ matrix.region }}:094274105915:layer:AWSLambdaPowertoolsTypeScriptV2:${{ steps.get-version.outputs.new_layer_version }}" --type String --overwrite
134+
aws ssm put-parameter --name ${{ env.prefix }}/typescript/generic/all/${{ inputs.package_version }} --value "arn:aws:lambda:${{ matrix.region }}:094274105915:layer:AWSLambdaPowertoolsTypeScriptV2:${{ inputs.layer-version }}" --type String --overwrite
116135
117136
- id: write-latest
118137
if: inputs.write_latest == true
119138
env:
120139
prefix: ${{ inputs.environment == 'beta' && '/aws/service/powertools/beta' || '/aws/service/powertools' }}
121140
run: |
122-
aws ssm put-parameter --name ${{ env.prefix }}/typescript/generic/all/latest --value "arn:aws:lambda:${{ matrix.region }}:094274105915:layer:AWSLambdaPowertoolsTypeScriptV2:${{ steps.get-version.outputs.new_layer_version }}" --type String --overwrite
141+
aws ssm put-parameter --name ${{ env.prefix }}/typescript/generic/all/latest --value "arn:aws:lambda:${{ matrix.region }}:094274105915:layer:AWSLambdaPowertoolsTypeScriptV2:${{ inputs.layer-version }}" --type String --overwrite

0 commit comments

Comments
 (0)