@@ -42,26 +42,11 @@ permissions:
4242 actions : read
4343
4444concurrency :
45- group : aws-artifact-db-${{ github.ref }}
45+ group : aws-artifact-db-${{ github.ref }}-${{ github.event.inputs.environment || 'production' }}
4646 cancel-in-progress : true
4747
4848env :
4949 NODE_VERSION : ' 22'
50- AWS_REGION : ${{ secrets.AWS_REGION }}
51- AWS_ROLE_TO_ASSUME : ${{ secrets.AWS_ROLE_TO_ASSUME }}
52- AWS_ACCESS_KEY_ID_VALUE : ${{ secrets.AWS_ACCESS_KEY_ID }}
53- AWS_SECRET_ACCESS_KEY_VALUE : ${{ secrets.AWS_SECRET_ACCESS_KEY }}
54- AWS_S3_ARTIFACT_BUCKET : ${{ secrets.AWS_S3_ARTIFACT_BUCKET }}
55- AWS_CODEARTIFACT_DOMAIN : ${{ secrets.AWS_CODEARTIFACT_DOMAIN }}
56- AWS_CODEARTIFACT_DOMAIN_OWNER : ${{ secrets.AWS_CODEARTIFACT_DOMAIN_OWNER }}
57- AWS_CODEARTIFACT_REPOSITORY : ${{ secrets.AWS_CODEARTIFACT_REPOSITORY }}
58- DB_TYPE : ${{ secrets.DB_TYPE }}
59- DB_HOST : ${{ secrets.DB_HOST }}
60- DB_PORT : ${{ secrets.DB_PORT }}
61- DB_NAME : ${{ secrets.DB_NAME }}
62- DB_USER : ${{ secrets.DB_USER }}
63- DB_PASSWORD : ${{ secrets.DB_PASSWORD }}
64- DB_SSL : ${{ secrets.DB_SSL }}
6550
6651jobs :
6752 build-test-package :
@@ -100,7 +85,13 @@ jobs:
10085 shell : bash
10186 run : |
10287 set -euo pipefail
103- PACKAGE_FILE="$(npm pack --silent)"
88+ npm pack --silent > /tmp/npm-pack-output.txt
89+ cat /tmp/npm-pack-output.txt
90+ PACKAGE_FILE="$(grep -E '\.tgz$' /tmp/npm-pack-output.txt | tail -n 1)"
91+ if [ -z "$PACKAGE_FILE" ] || [ ! -f "$PACKAGE_FILE" ]; then
92+ echo "npm pack did not produce a .tgz file" >&2
93+ exit 1
94+ fi
10495 echo "package_file=${PACKAGE_FILE}" >> "$GITHUB_OUTPUT"
10596 mkdir -p dist-artifact
10697 cp "$PACKAGE_FILE" dist-artifact/
@@ -127,11 +118,17 @@ jobs:
127118 name : Database connectivity check
128119 runs-on : ubuntu-latest
129120 needs : build-test-package
121+ environment : ${{ github.event.inputs.environment || 'production' }}
130122 if : ${{ github.event_name == 'push' || github.event.inputs.run_db_check == 'true' }}
123+ env :
124+ DB_TYPE : ${{ secrets.DB_TYPE }}
125+ DB_HOST : ${{ secrets.DB_HOST }}
126+ DB_PORT : ${{ secrets.DB_PORT }}
127+ DB_NAME : ${{ secrets.DB_NAME }}
128+ DB_USER : ${{ secrets.DB_USER }}
129+ DB_PASSWORD : ${{ secrets.DB_PASSWORD }}
130+ DB_SSL : ${{ secrets.DB_SSL }}
131131 steps :
132- - name : Checkout repository
133- uses : actions/checkout@v4
134-
135132 - name : Setup Node.js ${{ env.NODE_VERSION }}
136133 uses : actions/setup-node@v4
137134 with :
@@ -230,6 +227,15 @@ jobs:
230227 - db-connectivity
231228 if : ${{ always() && needs.build-test-package.result == 'success' && (needs.db-connectivity.result == 'success' || needs.db-connectivity.result == 'skipped') && (github.event_name == 'push' || github.event.inputs.deploy_to_s3 == 'true' || github.event.inputs.publish_codeartifact == 'true') }}
232229 environment : ${{ github.event.inputs.environment || 'production' }}
230+ env :
231+ AWS_REGION : ${{ secrets.AWS_REGION }}
232+ AWS_ROLE_TO_ASSUME : ${{ secrets.AWS_ROLE_TO_ASSUME }}
233+ AWS_ACCESS_KEY_ID_VALUE : ${{ secrets.AWS_ACCESS_KEY_ID }}
234+ AWS_SECRET_ACCESS_KEY_VALUE : ${{ secrets.AWS_SECRET_ACCESS_KEY }}
235+ AWS_S3_ARTIFACT_BUCKET : ${{ secrets.AWS_S3_ARTIFACT_BUCKET }}
236+ AWS_CODEARTIFACT_DOMAIN : ${{ secrets.AWS_CODEARTIFACT_DOMAIN }}
237+ AWS_CODEARTIFACT_DOMAIN_OWNER : ${{ secrets.AWS_CODEARTIFACT_DOMAIN_OWNER }}
238+ AWS_CODEARTIFACT_REPOSITORY : ${{ secrets.AWS_CODEARTIFACT_REPOSITORY }}
233239 steps :
234240 - name : Download GitHub artifact
235241 uses : actions/download-artifact@v4
@@ -252,8 +258,15 @@ jobs:
252258 aws-secret-access-key : ${{ env.AWS_SECRET_ACCESS_KEY_VALUE }}
253259 aws-region : ${{ env.AWS_REGION || 'us-east-1' }}
254260
255- - name : Verify AWS identity
256- run : aws sts get-caller-identity
261+ - name : Verify AWS credentials configured
262+ shell : bash
263+ run : |
264+ set -euo pipefail
265+ if [ -z "${AWS_ROLE_TO_ASSUME:-}" ] && { [ -z "${AWS_ACCESS_KEY_ID_VALUE:-}" ] || [ -z "${AWS_SECRET_ACCESS_KEY_VALUE:-}" ]; }; then
266+ echo "AWS push skipped. Missing AWS_ROLE_TO_ASSUME or AWS access-key secrets."
267+ exit 0
268+ fi
269+ aws sts get-caller-identity
257270
258271 - name : Push artifact to S3
259272 if : ${{ env.AWS_S3_ARTIFACT_BUCKET != '' && (github.event_name == 'push' || github.event.inputs.deploy_to_s3 == 'true') }}
@@ -266,7 +279,7 @@ jobs:
266279 echo "Artifacts pushed to s3://${AWS_S3_ARTIFACT_BUCKET}/${PREFIX}/"
267280
268281 - name : Publish package to AWS CodeArtifact
269- if : ${{ env.AWS_CODEARTIFACT_DOMAIN != '' && env.AWS_CODEARTIFACT_REPOSITORY != '' && ( github.event.inputs.publish_codeartifact == 'true') }}
282+ if : ${{ env.AWS_CODEARTIFACT_DOMAIN != '' && env.AWS_CODEARTIFACT_REPOSITORY != '' && github.event.inputs.publish_codeartifact == 'true' }}
270283 shell : bash
271284 run : |
272285 set -euo pipefail
@@ -285,6 +298,7 @@ jobs:
285298 echo "## AWS artifact workflow"
286299 echo "- Commit: $GITHUB_SHA"
287300 echo "- Branch: $GITHUB_REF_NAME"
301+ echo "- Environment: ${{ github.event.inputs.environment || 'production' }}"
288302 echo "- GitHub artifact: sync-db-$GITHUB_SHA"
289303 echo "- S3 bucket: ${AWS_S3_ARTIFACT_BUCKET:-not configured}"
290304 echo "- CodeArtifact domain: ${AWS_CODEARTIFACT_DOMAIN:-not configured}"
0 commit comments