Lambda-compatible NodeJS images with AWS CLI installed.
Whenever a new NodeJS version is released, an instance of commit-on-release
creates an empty commit in the corresponding branch (v16
, v18
, v20
and v22
) so that a new image is published to Docker Hub by a Github Action workflow.
Instead of using e.g. node:22
and installing awscli
, jq
, and zip
every time the pipeline runs, just switch out the name of the image to sleavely/node-awscli:22.x
or another appropriate version tag.
In bitbucket-pipelines.yml
:
image: sleavely/node-awscli:22.x
pipelines:
default:
- step:
name: Deploy to test environment
script:
- npm ci
- npm run build-app-test
- aws s3 sync ./build s3://$(WEBHOSTING_BUCKET_NAME)/
In .circleci/config.yml
:
version: 2
jobs:
deploy:
docker:
- image: sleavely/node-awscli:22.x
steps:
- checkout
- run: npm ci
- run: npm run build-app-test
- run: aws s3 sync ./build s3://$(WEBHOSTING_BUCKET_NAME)/
In .github/worksflows/deploy.yml
:
name: Build and deploy
on:
push:
branches:
- main
jobs:
deploy:
runs-on: ubuntu-latest
container:
image: sleavely/node-awscli:22.x
steps:
- uses: actions/checkout@v3
- run: npm ci
- run: npm run build-app-test
- run: aws s3 sync ./build s3://$(WEBHOSTING_BUCKET_NAME)/
env:
AWS_ACCESS_KEY_ID: ${{ secrets.AWS_ACCESS_KEY_ID }}
AWS_SECRET_ACCESS_KEY: ${{ secrets.AWS_SECRET_ACCESS_KEY }}
WEBHOSTING_BUCKET_NAME: my-awesome-bucket