Skip to content

Commit

Permalink
build: update to Node.js 22 TDE-1193
Browse files Browse the repository at this point in the history
Keep our software up to date, and get any useful features, fixes, and
optimisations from new versions of dependencies.

1. Update the engine:

   ```
   jq '.engines.node = "^22.11.0"' package.json | sponge package.json
   ```
2. Update the uses of `linz/action-typescript`:

   ```
   for path in .github/workflows/*.y*ml; do
       yq --inplace '(.jobs.*.steps[] | select(.uses == "linz/action-typescript*").with.node-version) = "22.x"' "$path"
   done
   ```
3. Update Dockerfile manifest digest:

   ```
   sed --in-place --expression="s/^FROM node:.*/FROM node:22-slim@$(docker manifest inspect node:22-slim | jq --raw-output '.manifests[] | select(.platform.architecture == "amd64" and .platform.os == "linux") | .digest')/" Dockerfile
   ```
4. Verify the change:

   ```
   git clean -fdx --exclude=.idea
   npm install
   npm run build
   npm run test
   npm run docs
   npm run lint
   ```
  • Loading branch information
l0b0 committed Nov 10, 2024
1 parent e30dff9 commit 020d2a1
Show file tree
Hide file tree
Showing 6 changed files with 12 additions and 71 deletions.
22 changes: 2 additions & 20 deletions .github/workflows/pull-request-container.yml
Original file line number Diff line number Diff line change
@@ -1,5 +1,4 @@
name: Pull Request Containers

on:
pull_request:
types:
Expand All @@ -8,26 +7,20 @@ jobs:
containers:
name: Create containers
runs-on: ubuntu-latest

if: |
github.event.label.name == 'container'
environment:
name: nonprod

env:
AWS_CI_ROLE: ${{ secrets.AWS_CI_ROLE }}

permissions:
id-token: write
contents: read
packages: write

steps:
- uses: linz/action-typescript@dee99184c4305aea6c380a52db9b2d7abaaa3e78 # v3
with:
node-version: 20.x

node-version: 22.x
- name: Setup GIT version
id: version
run: |
Expand All @@ -36,42 +29,35 @@ jobs:
GIT_VERSION_MAJOR_MINOR=$(echo "$GIT_VERSION" | cut -d. -f1,2)
{ echo "version=${GIT_VERSION}"; echo "version_major=${GIT_VERSION_MAJOR}"; echo "version_major_minor=${GIT_VERSION_MAJOR_MINOR}"; } >> "$GITHUB_OUTPUT"
- name: Set up Docker Qemu
id: qemu
uses: docker/setup-qemu-action@2b82ce82d56a2a04d2637cd93a637ae1b359c0a7 # v2

- name: Set up Docker Buildx
uses: docker/setup-buildx-action@f95db51fddba0c2d1ec667646a06c2ce06100226 # v3

- name: Docker meta
id: meta
uses: docker/metadata-action@96383f45573cb7f253c731d3b3ab81c87ef81934 # v5
with:
images: ${{ github.repository }}
labels: |
org.opencontainers.image.version=${{ steps.version.outputs.version }}
- name: Login to GitHub Container Registry
uses: docker/login-action@343f7c4344506bcbf9b4de18042ae17996df046d # v3
with:
registry: ghcr.io
username: ${{ github.repository_owner }}
password: ${{ secrets.GITHUB_TOKEN }}

- name: Configure AWS Credentials
if: ${{ env.AWS_CI_ROLE != '' }}
uses: aws-actions/configure-aws-credentials@010d0da01d0b5a38af31e9c3470dbfdabdecca3a # v4
with:
aws-region: ap-southeast-2
mask-aws-account-id: true
role-to-assume: ${{ secrets.AWS_CI_ROLE }}

- name: Login to Amazon ECR
if: ${{ env.AWS_CI_ROLE != '' }}
id: login-ecr
uses: aws-actions/amazon-ecr-login@2fc7aceee09e9e4a7105c0d060c656fad0b4f63d # v1

- name: Setup docker tags
id: tags
uses: actions/github-script@d7906e4ad0b1822421a7e6a35d5ca353c962f410 # v6
Expand All @@ -84,7 +70,6 @@ jobs:
tags.push('${{ steps.login-ecr.outputs.registry }}/${{ github.event.repository.name }}:pr-${{ github.event.number }}');
}
return tags.join(', ')
- name: Build and push container
uses: docker/build-push-action@0565240e2d4ab88bba5387d719585280857ece09 # v5
with:
Expand All @@ -93,7 +78,4 @@ jobs:
push: true
labels: ${{ steps.meta.outputs.labels }}
platforms: linux/arm64,linux/amd64
build-args: |
GIT_HASH=${{ github.sha }}
GIT_VERSION=${{ steps.version.outputs.version }}
GITHUB_RUN_ID=${{ github.run_id}}
build-args: "GIT_HASH=${{ github.sha }}\nGIT_VERSION=${{ steps.version.outputs.version }} \nGITHUB_RUN_ID=${{ github.run_id}}\n"
30 changes: 3 additions & 27 deletions .github/workflows/push.yml
Original file line number Diff line number Diff line change
Expand Up @@ -6,22 +6,18 @@ jobs:
steps:
- uses: linz/action-typescript@dee99184c4305aea6c380a52db9b2d7abaaa3e78 # v3
with:
node-version: 20.x

node-version: 22.x
- name: Generate Readme
run: |
npm run docs
# Validate no READMEs have been updated
- name: Validate Readme generation
run: |
git diff --exit-code
# Only build containers on branches otherwise container builds are duplicated deploy-nonprod-containers
- name: Set up Docker Buildx
if: ${{ github.ref != 'refs/heads/master' }}
uses: docker/setup-buildx-action@f95db51fddba0c2d1ec667646a06c2ce06100226 # v3

- name: Build container
if: ${{ github.ref != 'refs/heads/master' }}
uses: docker/build-push-action@0565240e2d4ab88bba5387d719585280857ece09 # v5
Expand All @@ -32,37 +28,28 @@ jobs:
build-args: |
GIT_HASH=${{ github.sha }}
GITHUB_RUN_ID=${{ github.run_id}}
deploy-nonprod-containers:
runs-on: ubuntu-latest
concurrency: deploy-dev-${{ github.ref }}
needs: ['build']

# On push to master when it is not a release!
if: ${{ github.ref == 'refs/heads/master' && !startsWith(github.event.head_commit.message, 'release:') }}

permissions:
id-token: write
contents: read
packages: write

env:
AWS_CI_ROLE: ${{ secrets.AWS_CI_ROLE }}

environment:
name: nonprod

steps:
- uses: linz/action-typescript@dee99184c4305aea6c380a52db9b2d7abaaa3e78 # v3
with:
node-version: 20.x

node-version: 22.x
- name: Download actionlint
run: docker build --tag actionlint - < .github/workflows/actionlint.dockerfile

- name: Run actionlint to check workflow files
run: docker run --volume="${PWD}:/repo" --workdir=/repo actionlint -color

- name: Setup GIT version
id: version
run: |
Expand All @@ -71,42 +58,35 @@ jobs:
GIT_VERSION_MAJOR_MINOR=$(echo "$GIT_VERSION" | cut -d. -f1,2)
{ echo "version=${GIT_VERSION}"; echo "version_major=${GIT_VERSION_MAJOR}"; echo "version_major_minor=${GIT_VERSION_MAJOR_MINOR}"; } >> "$GITHUB_OUTPUT"
- name: Set up Docker Qemu
id: qemu
uses: docker/setup-qemu-action@2b82ce82d56a2a04d2637cd93a637ae1b359c0a7 # v2

- name: Set up Docker Buildx
uses: docker/setup-buildx-action@f95db51fddba0c2d1ec667646a06c2ce06100226 # v3

- name: Docker meta
id: meta
uses: docker/metadata-action@96383f45573cb7f253c731d3b3ab81c87ef81934 # v5
with:
images: ${{ github.repository }}
labels: |
org.opencontainers.image.version=${{ steps.version.outputs.version }}
- name: Login to GitHub Container Registry
uses: docker/login-action@343f7c4344506bcbf9b4de18042ae17996df046d # v3
with:
registry: ghcr.io
username: ${{ github.repository_owner }}
password: ${{ secrets.GITHUB_TOKEN }}

- name: Configure AWS Credentials
if: ${{env.AWS_CI_ROLE != ''}}
uses: aws-actions/configure-aws-credentials@010d0da01d0b5a38af31e9c3470dbfdabdecca3a # v4
with:
aws-region: ap-southeast-2
mask-aws-account-id: true
role-to-assume: ${{ secrets.AWS_CI_ROLE }}

- name: Login to Amazon ECR
if: ${{env.AWS_CI_ROLE != ''}}
id: login-ecr
uses: aws-actions/amazon-ecr-login@2fc7aceee09e9e4a7105c0d060c656fad0b4f63d # v1

- name: Setup docker tags
id: tags
uses: actions/github-script@d7906e4ad0b1822421a7e6a35d5ca353c962f410 # v6
Expand All @@ -122,7 +102,6 @@ jobs:
tags.push('${{ steps.login-ecr.outputs.registry }}/${{ github.event.repository.name }}:${{ steps.version.outputs.version }}');
}
return tags.join(', ')
- name: Build and push container
uses: docker/build-push-action@0565240e2d4ab88bba5387d719585280857ece09 # v5
with:
Expand All @@ -131,7 +110,4 @@ jobs:
push: true
labels: ${{ steps.meta.outputs.labels }}
platforms: linux/arm64,linux/amd64
build-args: |
GIT_HASH=${{ github.sha }}
GIT_VERSION=${{ steps.version.outputs.version }}
GITHUB_RUN_ID=${{ github.run_id}}
build-args: "GIT_HASH=${{ github.sha }}\nGIT_VERSION=${{ steps.version.outputs.version }} \nGITHUB_RUN_ID=${{ github.run_id}}\n"
22 changes: 2 additions & 20 deletions .github/workflows/release-please.yml
Original file line number Diff line number Diff line change
Expand Up @@ -15,29 +15,22 @@ jobs:
release-type: node
token: ${{ secrets.GITHUB_TOKEN }}
pull-request-title-pattern: "release: ${version}"

publish-release:
needs: release-please
runs-on: ubuntu-latest

environment:
name: prod

env:
AWS_CI_ROLE: ${{ secrets.AWS_CI_ROLE }}

permissions:
id-token: write
contents: read
packages: write

if: ${{ needs.release-please.outputs.release_created }}

steps:
- uses: linz/action-typescript@dee99184c4305aea6c380a52db9b2d7abaaa3e78 # v3
with:
node-version: 20.x

node-version: 22.x
- name: Setup GIT version
id: version
run: |
Expand All @@ -46,42 +39,35 @@ jobs:
GIT_VERSION_MAJOR_MINOR=$(echo "$GIT_VERSION" | cut -d. -f1,2)
{ echo "version=${GIT_VERSION}"; echo "version_major=${GIT_VERSION_MAJOR}"; echo "version_major_minor=${GIT_VERSION_MAJOR_MINOR}"; } >> "$GITHUB_OUTPUT"
- name: Set up Docker Qemu
id: qemu
uses: docker/setup-qemu-action@2b82ce82d56a2a04d2637cd93a637ae1b359c0a7 # v2

- name: Set up Docker Buildx
uses: docker/setup-buildx-action@f95db51fddba0c2d1ec667646a06c2ce06100226 # v3

- name: Docker meta
id: meta
uses: docker/metadata-action@96383f45573cb7f253c731d3b3ab81c87ef81934 # v5
with:
images: ${{ github.repository }}
labels: |
org.opencontainers.image.version=${{ steps.version.outputs.version }}
- name: Login to GitHub Container Registry
uses: docker/login-action@343f7c4344506bcbf9b4de18042ae17996df046d # v3
with:
registry: ghcr.io
username: ${{ github.repository_owner }}
password: ${{ secrets.GITHUB_TOKEN }}

- name: Configure AWS Credentials
if: ${{ env.AWS_CI_ROLE != '' }}
uses: aws-actions/configure-aws-credentials@010d0da01d0b5a38af31e9c3470dbfdabdecca3a # v4
with:
aws-region: ap-southeast-2
mask-aws-account-id: true
role-to-assume: ${{ secrets.AWS_CI_ROLE }}

- name: Login to Amazon ECR
if: ${{ env.AWS_CI_ROLE != '' }}
id: login-ecr
uses: aws-actions/amazon-ecr-login@2fc7aceee09e9e4a7105c0d060c656fad0b4f63d # v1

- name: Setup docker tags
id: tags
uses: actions/github-script@d7906e4ad0b1822421a7e6a35d5ca353c962f410 # v6
Expand All @@ -101,7 +87,6 @@ jobs:
tags.push('${{ steps.login-ecr.outputs.registry }}/${{ github.event.repository.name }}:${{ steps.version.outputs.version }}');
}
return tags.join(', ')
- name: Build and push container
uses: docker/build-push-action@0565240e2d4ab88bba5387d719585280857ece09 # v5
with:
Expand All @@ -110,7 +95,4 @@ jobs:
push: true
labels: ${{ steps.meta.outputs.labels }}
platforms: linux/arm64,linux/amd64
build-args: |
GIT_HASH=${{ github.sha }}
GIT_VERSION=${{ steps.version.outputs.version }}
GITHUB_RUN_ID=${{ github.run_id}}
build-args: "GIT_HASH=${{ github.sha }}\nGIT_VERSION=${{ steps.version.outputs.version }} \nGITHUB_RUN_ID=${{ github.run_id}}\n"
3 changes: 2 additions & 1 deletion Dockerfile
Original file line number Diff line number Diff line change
@@ -1,4 +1,5 @@
FROM node:20-slim@sha256:cffed8cd39d6a380434e6d08116d188c53e70611175cd5ec7700f93f32a935a6
# Use manifest digest for multi-platform support
FROM node:22-slim@sha256:3a17df2ede55682bccb79e45d71b5213295ce5eae25a0816877b0e548595de1b

RUN apt-get update && apt-get install openssh-client git -y

Expand Down
2 changes: 1 addition & 1 deletion package-lock.json

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

4 changes: 2 additions & 2 deletions package.json
Original file line number Diff line number Diff line change
Expand Up @@ -22,14 +22,14 @@
"build": "tsc",
"docs": "node build/src/readme/readme.generate.js",
"lint": "npx eslint . --ignore-path .gitignore",
"test": "node --test build/"
"test": "node --test"
},
"publishConfig": {
"access": "restricted"
},
"type": "module",
"engines": {
"node": "^20.13.1"
"node": "^22.11.0"
},
"files": [
"build/src/**"
Expand Down

0 comments on commit 020d2a1

Please sign in to comment.