diff --git a/.github/workflows/build.yaml b/.github/workflows/build.yaml index 74d7075..624093a 100644 --- a/.github/workflows/build.yaml +++ b/.github/workflows/build.yaml @@ -14,10 +14,10 @@ jobs: outputs: matrix: ${{ steps.set-matrix.outputs.matrix }} steps: - - uses: actions/checkout@v5 + - uses: actions/checkout@08c6903cd8c0fde910a37f88322edcfb5dd907a8 # v5 with: fetch-depth: 2 - - uses: astral-sh/setup-uv@v6 + - uses: astral-sh/setup-uv@b75a909f75acd358c2196fb9a5f1299a9a8868a4 # v6 with: enable-cache: true - name: Generate build matrix @@ -34,23 +34,23 @@ jobs: strategy: matrix: ${{ fromJSON(needs.generate-matrix.outputs.matrix) }} steps: - - uses: actions/checkout@v5 - - uses: astral-sh/setup-uv@v6 + - uses: actions/checkout@08c6903cd8c0fde910a37f88322edcfb5dd907a8 # v5 + - uses: astral-sh/setup-uv@b75a909f75acd358c2196fb9a5f1299a9a8868a4 # v6 with: enable-cache: true - name: Generate Dockerfile from config run: uv run dpn dockerfile --context '${{ toJSON(matrix) }}' - name: Set up QEMU - uses: docker/setup-qemu-action@v3 + uses: docker/setup-qemu-action@29109295f81e9208d7d86ff1c6c12d2833863392 # v3 - name: Set up Docker Buildx - uses: docker/setup-buildx-action@v3 + uses: docker/setup-buildx-action@e468171a9de216ec08956ac3ada2f0791b6bd435 # v3 - name: Login to Docker Hub - uses: docker/login-action@v3 + uses: docker/login-action@184bdaa0721073962dff0199f1fb9940f07167d1 # v3 with: username: ${{ secrets.DOCKERHUB_USERNAME }} password: ${{ secrets.DOCKERHUB_TOKEN }} - name: Build image - uses: docker/build-push-action@v6 + uses: docker/build-push-action@263435318d21b8e681c14492fe198d362a7d2c83 # v6 with: context: . file: dockerfiles/${{ matrix.key }}.Dockerfile @@ -60,7 +60,7 @@ jobs: run: | docker run --rm nikolaik/python-nodejs:${{ matrix.key }} sh -c "node --version && npm --version && yarn --version && python --version && pip --version && pipenv --version && poetry --version && uv --version" - name: Push image - uses: docker/build-push-action@v6 + uses: docker/build-push-action@263435318d21b8e681c14492fe198d362a7d2c83 # v6 with: context: . file: dockerfiles/${{ matrix.key }}.Dockerfile @@ -73,8 +73,8 @@ jobs: runs-on: ubuntu-latest needs: [deploy] steps: - - uses: actions/checkout@v5 - - uses: astral-sh/setup-uv@v6 + - uses: actions/checkout@08c6903cd8c0fde910a37f88322edcfb5dd907a8 # v5 + - uses: astral-sh/setup-uv@b75a909f75acd358c2196fb9a5f1299a9a8868a4 # v6 with: enable-cache: true - name: Update versions.json and README.md, then commit and push changes (if any) diff --git a/.github/workflows/tests.yaml b/.github/workflows/tests.yaml index a89ec40..6acff86 100644 --- a/.github/workflows/tests.yaml +++ b/.github/workflows/tests.yaml @@ -8,13 +8,13 @@ jobs: test: runs-on: ubuntu-latest steps: - - uses: actions/checkout@v5 - - uses: astral-sh/setup-uv@v6 + - uses: actions/checkout@08c6903cd8c0fde910a37f88322edcfb5dd907a8 # v5 + - uses: astral-sh/setup-uv@b75a909f75acd358c2196fb9a5f1299a9a8868a4 # v6.7.0 with: enable-cache: true - run: uv run ./bin/lint - run: uv run ./bin/test - name: Upload coverage reports to Codecov - uses: codecov/codecov-action@v5 + uses: codecov/codecov-action@5a1091511ad55cbe89839c7260b706298ca349f7 # v5 env: CODECOV_TOKEN: ${{ secrets.CODECOV_TOKEN }} diff --git a/.python-version b/.python-version index 64af02e..976544c 100644 --- a/.python-version +++ b/.python-version @@ -1 +1 @@ -3.13.6 +3.13.7 diff --git a/README.md b/README.md index 7082d87..36e96d5 100644 --- a/README.md +++ b/README.md @@ -3,7 +3,7 @@ [![Pulls](https://img.shields.io/docker/pulls/nikolaik/python-nodejs.svg?style=flat-square)](https://hub.docker.com/r/nikolaik/python-nodejs/) [![CircleCI](https://img.shields.io/circleci/project/github/nikolaik/docker-python-nodejs.svg?style=flat-square)](https://circleci.com/gh/nikolaik/docker-python-nodejs) -Last updated by bot: 2025-08-08 +Last updated by bot: 2025-09-11 The `latest` tag is currently: @@ -24,66 +24,66 @@ To use a specific combination of Python and Node.js see the following table of a Tag | Python version | Node.js version | Distro --- | --- | --- | --- -`python3.13-nodejs24` | 3.13.6 | 24.5.0 | bookworm -`python3.13-nodejs24-bullseye` | 3.13.6 | 24.5.0 | bullseye -`python3.13-nodejs24-slim` | 3.13.6 | 24.5.0 | slim -`python3.13-nodejs24-alpine` | 3.13.6 | 24.5.0 | alpine -`python3.13-nodejs22` | 3.13.6 | 22.18.0 | bookworm -`python3.13-nodejs22-bullseye` | 3.13.6 | 22.18.0 | bullseye -`python3.13-nodejs22-slim` | 3.13.6 | 22.18.0 | slim -`python3.13-nodejs22-alpine` | 3.13.6 | 22.18.0 | alpine -`python3.13-nodejs20` | 3.13.6 | 20.19.4 | bookworm -`python3.13-nodejs20-bullseye` | 3.13.6 | 20.19.4 | bullseye -`python3.13-nodejs20-slim` | 3.13.6 | 20.19.4 | slim -`python3.13-nodejs20-alpine` | 3.13.6 | 20.19.4 | alpine -`python3.12-nodejs24` | 3.12.11 | 24.5.0 | bookworm -`python3.12-nodejs24-bullseye` | 3.12.11 | 24.5.0 | bullseye -`python3.12-nodejs24-slim` | 3.12.11 | 24.5.0 | slim -`python3.12-nodejs24-alpine` | 3.12.11 | 24.5.0 | alpine -`python3.12-nodejs22` | 3.12.11 | 22.18.0 | bookworm -`python3.12-nodejs22-bullseye` | 3.12.11 | 22.18.0 | bullseye -`python3.12-nodejs22-slim` | 3.12.11 | 22.18.0 | slim -`python3.12-nodejs22-alpine` | 3.12.11 | 22.18.0 | alpine -`python3.12-nodejs20` | 3.12.11 | 20.19.4 | bookworm -`python3.12-nodejs20-bullseye` | 3.12.11 | 20.19.4 | bullseye -`python3.12-nodejs20-slim` | 3.12.11 | 20.19.4 | slim -`python3.12-nodejs20-alpine` | 3.12.11 | 20.19.4 | alpine -`python3.11-nodejs24` | 3.11.13 | 24.5.0 | bookworm -`python3.11-nodejs24-bullseye` | 3.11.13 | 24.5.0 | bullseye -`python3.11-nodejs24-slim` | 3.11.13 | 24.5.0 | slim -`python3.11-nodejs24-alpine` | 3.11.13 | 24.5.0 | alpine -`python3.11-nodejs22` | 3.11.13 | 22.18.0 | bookworm -`python3.11-nodejs22-bullseye` | 3.11.13 | 22.18.0 | bullseye -`python3.11-nodejs22-slim` | 3.11.13 | 22.18.0 | slim -`python3.11-nodejs22-alpine` | 3.11.13 | 22.18.0 | alpine -`python3.11-nodejs20` | 3.11.13 | 20.19.4 | bookworm -`python3.11-nodejs20-bullseye` | 3.11.13 | 20.19.4 | bullseye -`python3.11-nodejs20-slim` | 3.11.13 | 20.19.4 | slim -`python3.11-nodejs20-alpine` | 3.11.13 | 20.19.4 | alpine -`python3.10-nodejs24` | 3.10.18 | 24.5.0 | bookworm -`python3.10-nodejs24-bullseye` | 3.10.18 | 24.5.0 | bullseye -`python3.10-nodejs24-slim` | 3.10.18 | 24.5.0 | slim -`python3.10-nodejs24-alpine` | 3.10.18 | 24.5.0 | alpine -`python3.10-nodejs22` | 3.10.18 | 22.18.0 | bookworm -`python3.10-nodejs22-bullseye` | 3.10.18 | 22.18.0 | bullseye -`python3.10-nodejs22-slim` | 3.10.18 | 22.18.0 | slim -`python3.10-nodejs22-alpine` | 3.10.18 | 22.18.0 | alpine -`python3.10-nodejs20` | 3.10.18 | 20.19.4 | bookworm -`python3.10-nodejs20-bullseye` | 3.10.18 | 20.19.4 | bullseye -`python3.10-nodejs20-slim` | 3.10.18 | 20.19.4 | slim -`python3.10-nodejs20-alpine` | 3.10.18 | 20.19.4 | alpine -`python3.9-nodejs24` | 3.9.23 | 24.5.0 | bookworm -`python3.9-nodejs24-bullseye` | 3.9.23 | 24.5.0 | bullseye -`python3.9-nodejs24-slim` | 3.9.23 | 24.5.0 | slim -`python3.9-nodejs24-alpine` | 3.9.23 | 24.5.0 | alpine -`python3.9-nodejs22` | 3.9.23 | 22.18.0 | bookworm -`python3.9-nodejs22-bullseye` | 3.9.23 | 22.18.0 | bullseye -`python3.9-nodejs22-slim` | 3.9.23 | 22.18.0 | slim -`python3.9-nodejs22-alpine` | 3.9.23 | 22.18.0 | alpine -`python3.9-nodejs20` | 3.9.23 | 20.19.4 | bookworm -`python3.9-nodejs20-bullseye` | 3.9.23 | 20.19.4 | bullseye -`python3.9-nodejs20-slim` | 3.9.23 | 20.19.4 | slim -`python3.9-nodejs20-alpine` | 3.9.23 | 20.19.4 | alpine +`python3.13-nodejs24` | 3.13.7 | 24.8.0 | bookworm +`python3.13-nodejs24-slim` | 3.13.7 | 24.8.0 | slim +`python3.13-nodejs24-alpine` | 3.13.7 | 24.8.0 | alpine +`python3.13-nodejs22` | 3.13.7 | 22.19.0 | bookworm +`python3.13-nodejs22-slim` | 3.13.7 | 22.19.0 | slim +`python3.13-nodejs22-alpine` | 3.13.7 | 22.19.0 | alpine +`python3.13-nodejs20` | 3.13.7 | 20.19.5 | bookworm +`python3.13-nodejs20-slim` | 3.13.7 | 20.19.5 | slim +`python3.13-nodejs20-alpine` | 3.13.7 | 20.19.5 | alpine +`python3.13-nodejs24-bullseye` | 3.13.6 | 24.8.0 | bullseye +`python3.13-nodejs22-bullseye` | 3.13.6 | 22.19.0 | bullseye +`python3.13-nodejs20-bullseye` | 3.13.6 | 20.19.5 | bullseye +`python3.12-nodejs24` | 3.12.11 | 24.8.0 | bookworm +`python3.12-nodejs24-bullseye` | 3.12.11 | 24.8.0 | bullseye +`python3.12-nodejs24-slim` | 3.12.11 | 24.8.0 | slim +`python3.12-nodejs24-alpine` | 3.12.11 | 24.8.0 | alpine +`python3.12-nodejs22` | 3.12.11 | 22.19.0 | bookworm +`python3.12-nodejs22-bullseye` | 3.12.11 | 22.19.0 | bullseye +`python3.12-nodejs22-slim` | 3.12.11 | 22.19.0 | slim +`python3.12-nodejs22-alpine` | 3.12.11 | 22.19.0 | alpine +`python3.12-nodejs20` | 3.12.11 | 20.19.5 | bookworm +`python3.12-nodejs20-bullseye` | 3.12.11 | 20.19.5 | bullseye +`python3.12-nodejs20-slim` | 3.12.11 | 20.19.5 | slim +`python3.12-nodejs20-alpine` | 3.12.11 | 20.19.5 | alpine +`python3.11-nodejs24` | 3.11.13 | 24.8.0 | bookworm +`python3.11-nodejs24-bullseye` | 3.11.13 | 24.8.0 | bullseye +`python3.11-nodejs24-slim` | 3.11.13 | 24.8.0 | slim +`python3.11-nodejs24-alpine` | 3.11.13 | 24.8.0 | alpine +`python3.11-nodejs22` | 3.11.13 | 22.19.0 | bookworm +`python3.11-nodejs22-bullseye` | 3.11.13 | 22.19.0 | bullseye +`python3.11-nodejs22-slim` | 3.11.13 | 22.19.0 | slim +`python3.11-nodejs22-alpine` | 3.11.13 | 22.19.0 | alpine +`python3.11-nodejs20` | 3.11.13 | 20.19.5 | bookworm +`python3.11-nodejs20-bullseye` | 3.11.13 | 20.19.5 | bullseye +`python3.11-nodejs20-slim` | 3.11.13 | 20.19.5 | slim +`python3.11-nodejs20-alpine` | 3.11.13 | 20.19.5 | alpine +`python3.10-nodejs24` | 3.10.18 | 24.8.0 | bookworm +`python3.10-nodejs24-bullseye` | 3.10.18 | 24.8.0 | bullseye +`python3.10-nodejs24-slim` | 3.10.18 | 24.8.0 | slim +`python3.10-nodejs24-alpine` | 3.10.18 | 24.8.0 | alpine +`python3.10-nodejs22` | 3.10.18 | 22.19.0 | bookworm +`python3.10-nodejs22-bullseye` | 3.10.18 | 22.19.0 | bullseye +`python3.10-nodejs22-slim` | 3.10.18 | 22.19.0 | slim +`python3.10-nodejs22-alpine` | 3.10.18 | 22.19.0 | alpine +`python3.10-nodejs20` | 3.10.18 | 20.19.5 | bookworm +`python3.10-nodejs20-bullseye` | 3.10.18 | 20.19.5 | bullseye +`python3.10-nodejs20-slim` | 3.10.18 | 20.19.5 | slim +`python3.10-nodejs20-alpine` | 3.10.18 | 20.19.5 | alpine +`python3.9-nodejs24` | 3.9.23 | 24.8.0 | bookworm +`python3.9-nodejs24-bullseye` | 3.9.23 | 24.8.0 | bullseye +`python3.9-nodejs24-slim` | 3.9.23 | 24.8.0 | slim +`python3.9-nodejs24-alpine` | 3.9.23 | 24.8.0 | alpine +`python3.9-nodejs22` | 3.9.23 | 22.19.0 | bookworm +`python3.9-nodejs22-bullseye` | 3.9.23 | 22.19.0 | bullseye +`python3.9-nodejs22-slim` | 3.9.23 | 22.19.0 | slim +`python3.9-nodejs22-alpine` | 3.9.23 | 22.19.0 | alpine +`python3.9-nodejs20` | 3.9.23 | 20.19.5 | bookworm +`python3.9-nodejs20-bullseye` | 3.9.23 | 20.19.5 | bullseye +`python3.9-nodejs20-slim` | 3.9.23 | 20.19.5 | slim +`python3.9-nodejs20-alpine` | 3.9.23 | 20.19.5 | alpine diff --git a/renovate.json b/renovate.json index 5c9e820..e75e658 100644 --- a/renovate.json +++ b/renovate.json @@ -1,7 +1,9 @@ { "$schema": "https://docs.renovatebot.com/renovate-schema.json", "extends": [ - "config:recommended" + "config:recommended", + "customManagers:githubActionsVersions", + "helpers:pinGitHubActionDigests" ], "configMigration": true, "packageRules": [ @@ -10,6 +12,33 @@ "matchDepNames": [ "ruff" ], + "addLabels": [ + "renovate:automerge" + ], + "automerge": true + }, + + { + "groupName": "Linter dependencies", + "description": "Group linter updates", + "matchFileNames": [ + ".pre-commit-config.yaml" + ], + "addLabels": [ + "renovate:automerge" + ], + "automerge": true + }, + { + "groupName": "GitHub Actions dependencies", + "description": "Group GitHub Actions updates", + "matchFileNames": [ + ".github/**/*.yaml", + ".github/**/*.yml" + ], + "addLabels": [ + "renovate:automerge" + ], "automerge": true } ], diff --git a/versions.json b/versions.json index c8e38ac..ae496a9 100644 --- a/versions.json +++ b/versions.json @@ -3,36 +3,23 @@ { "key": "python3.13-nodejs24", "python": "3.13", - "python_canonical": "3.13.6", - "python_image": "3.13.6-bookworm", + "python_canonical": "3.13.7", + "python_image": "3.13.7-bookworm", "nodejs": "24", - "nodejs_canonical": "24.5.0", + "nodejs_canonical": "24.8.0", "distro": "bookworm", "platforms": [ "linux/amd64", "linux/arm64" ] }, - { - "key": "python3.13-nodejs24-bullseye", - "python": "3.13", - "python_canonical": "3.13.6", - "python_image": "3.13.6-bullseye", - "nodejs": "24", - "nodejs_canonical": "24.5.0", - "distro": "bullseye", - "platforms": [ - "linux/amd64", - "linux/arm64" - ] - }, { "key": "python3.13-nodejs24-slim", "python": "3.13", - "python_canonical": "3.13.6", - "python_image": "3.13.6-slim", + "python_canonical": "3.13.7", + "python_image": "3.13.7-slim", "nodejs": "24", - "nodejs_canonical": "24.5.0", + "nodejs_canonical": "24.8.0", "distro": "slim", "platforms": [ "linux/amd64", @@ -42,10 +29,10 @@ { "key": "python3.13-nodejs24-alpine", "python": "3.13", - "python_canonical": "3.13.6", - "python_image": "3.13.6-alpine", + "python_canonical": "3.13.7", + "python_image": "3.13.7-alpine", "nodejs": "24", - "nodejs_canonical": "24.5.0", + "nodejs_canonical": "24.8.0", "distro": "alpine", "platforms": [ "linux/amd64" @@ -54,36 +41,23 @@ { "key": "python3.13-nodejs22", "python": "3.13", - "python_canonical": "3.13.6", - "python_image": "3.13.6-bookworm", + "python_canonical": "3.13.7", + "python_image": "3.13.7-bookworm", "nodejs": "22", - "nodejs_canonical": "22.18.0", + "nodejs_canonical": "22.19.0", "distro": "bookworm", "platforms": [ "linux/amd64", "linux/arm64" ] }, - { - "key": "python3.13-nodejs22-bullseye", - "python": "3.13", - "python_canonical": "3.13.6", - "python_image": "3.13.6-bullseye", - "nodejs": "22", - "nodejs_canonical": "22.18.0", - "distro": "bullseye", - "platforms": [ - "linux/amd64", - "linux/arm64" - ] - }, { "key": "python3.13-nodejs22-slim", "python": "3.13", - "python_canonical": "3.13.6", - "python_image": "3.13.6-slim", + "python_canonical": "3.13.7", + "python_image": "3.13.7-slim", "nodejs": "22", - "nodejs_canonical": "22.18.0", + "nodejs_canonical": "22.19.0", "distro": "slim", "platforms": [ "linux/amd64", @@ -93,10 +67,10 @@ { "key": "python3.13-nodejs22-alpine", "python": "3.13", - "python_canonical": "3.13.6", - "python_image": "3.13.6-alpine", + "python_canonical": "3.13.7", + "python_image": "3.13.7-alpine", "nodejs": "22", - "nodejs_canonical": "22.18.0", + "nodejs_canonical": "22.19.0", "distro": "alpine", "platforms": [ "linux/amd64" @@ -105,10 +79,10 @@ { "key": "python3.13-nodejs20", "python": "3.13", - "python_canonical": "3.13.6", - "python_image": "3.13.6-bookworm", + "python_canonical": "3.13.7", + "python_image": "3.13.7-bookworm", "nodejs": "20", - "nodejs_canonical": "20.19.4", + "nodejs_canonical": "20.19.5", "distro": "bookworm", "platforms": [ "linux/amd64", @@ -116,12 +90,37 @@ ] }, { - "key": "python3.13-nodejs20-bullseye", + "key": "python3.13-nodejs20-slim", + "python": "3.13", + "python_canonical": "3.13.7", + "python_image": "3.13.7-slim", + "nodejs": "20", + "nodejs_canonical": "20.19.5", + "distro": "slim", + "platforms": [ + "linux/amd64", + "linux/arm64" + ] + }, + { + "key": "python3.13-nodejs20-alpine", + "python": "3.13", + "python_canonical": "3.13.7", + "python_image": "3.13.7-alpine", + "nodejs": "20", + "nodejs_canonical": "20.19.5", + "distro": "alpine", + "platforms": [ + "linux/amd64" + ] + }, + { + "key": "python3.13-nodejs24-bullseye", "python": "3.13", "python_canonical": "3.13.6", "python_image": "3.13.6-bullseye", - "nodejs": "20", - "nodejs_canonical": "20.19.4", + "nodejs": "24", + "nodejs_canonical": "24.8.0", "distro": "bullseye", "platforms": [ "linux/amd64", @@ -129,28 +128,29 @@ ] }, { - "key": "python3.13-nodejs20-slim", + "key": "python3.13-nodejs22-bullseye", "python": "3.13", "python_canonical": "3.13.6", - "python_image": "3.13.6-slim", - "nodejs": "20", - "nodejs_canonical": "20.19.4", - "distro": "slim", + "python_image": "3.13.6-bullseye", + "nodejs": "22", + "nodejs_canonical": "22.19.0", + "distro": "bullseye", "platforms": [ "linux/amd64", "linux/arm64" ] }, { - "key": "python3.13-nodejs20-alpine", + "key": "python3.13-nodejs20-bullseye", "python": "3.13", "python_canonical": "3.13.6", - "python_image": "3.13.6-alpine", + "python_image": "3.13.6-bullseye", "nodejs": "20", - "nodejs_canonical": "20.19.4", - "distro": "alpine", + "nodejs_canonical": "20.19.5", + "distro": "bullseye", "platforms": [ - "linux/amd64" + "linux/amd64", + "linux/arm64" ] }, { @@ -159,7 +159,7 @@ "python_canonical": "3.12.11", "python_image": "3.12.11-bookworm", "nodejs": "24", - "nodejs_canonical": "24.5.0", + "nodejs_canonical": "24.8.0", "distro": "bookworm", "platforms": [ "linux/amd64", @@ -172,7 +172,7 @@ "python_canonical": "3.12.11", "python_image": "3.12.11-bullseye", "nodejs": "24", - "nodejs_canonical": "24.5.0", + "nodejs_canonical": "24.8.0", "distro": "bullseye", "platforms": [ "linux/amd64", @@ -185,7 +185,7 @@ "python_canonical": "3.12.11", "python_image": "3.12.11-slim", "nodejs": "24", - "nodejs_canonical": "24.5.0", + "nodejs_canonical": "24.8.0", "distro": "slim", "platforms": [ "linux/amd64", @@ -198,7 +198,7 @@ "python_canonical": "3.12.11", "python_image": "3.12.11-alpine", "nodejs": "24", - "nodejs_canonical": "24.5.0", + "nodejs_canonical": "24.8.0", "distro": "alpine", "platforms": [ "linux/amd64" @@ -210,7 +210,7 @@ "python_canonical": "3.12.11", "python_image": "3.12.11-bookworm", "nodejs": "22", - "nodejs_canonical": "22.18.0", + "nodejs_canonical": "22.19.0", "distro": "bookworm", "platforms": [ "linux/amd64", @@ -223,7 +223,7 @@ "python_canonical": "3.12.11", "python_image": "3.12.11-bullseye", "nodejs": "22", - "nodejs_canonical": "22.18.0", + "nodejs_canonical": "22.19.0", "distro": "bullseye", "platforms": [ "linux/amd64", @@ -236,7 +236,7 @@ "python_canonical": "3.12.11", "python_image": "3.12.11-slim", "nodejs": "22", - "nodejs_canonical": "22.18.0", + "nodejs_canonical": "22.19.0", "distro": "slim", "platforms": [ "linux/amd64", @@ -249,7 +249,7 @@ "python_canonical": "3.12.11", "python_image": "3.12.11-alpine", "nodejs": "22", - "nodejs_canonical": "22.18.0", + "nodejs_canonical": "22.19.0", "distro": "alpine", "platforms": [ "linux/amd64" @@ -261,7 +261,7 @@ "python_canonical": "3.12.11", "python_image": "3.12.11-bookworm", "nodejs": "20", - "nodejs_canonical": "20.19.4", + "nodejs_canonical": "20.19.5", "distro": "bookworm", "platforms": [ "linux/amd64", @@ -274,7 +274,7 @@ "python_canonical": "3.12.11", "python_image": "3.12.11-bullseye", "nodejs": "20", - "nodejs_canonical": "20.19.4", + "nodejs_canonical": "20.19.5", "distro": "bullseye", "platforms": [ "linux/amd64", @@ -287,7 +287,7 @@ "python_canonical": "3.12.11", "python_image": "3.12.11-slim", "nodejs": "20", - "nodejs_canonical": "20.19.4", + "nodejs_canonical": "20.19.5", "distro": "slim", "platforms": [ "linux/amd64", @@ -300,7 +300,7 @@ "python_canonical": "3.12.11", "python_image": "3.12.11-alpine", "nodejs": "20", - "nodejs_canonical": "20.19.4", + "nodejs_canonical": "20.19.5", "distro": "alpine", "platforms": [ "linux/amd64" @@ -312,7 +312,7 @@ "python_canonical": "3.11.13", "python_image": "3.11.13-bookworm", "nodejs": "24", - "nodejs_canonical": "24.5.0", + "nodejs_canonical": "24.8.0", "distro": "bookworm", "platforms": [ "linux/amd64", @@ -325,7 +325,7 @@ "python_canonical": "3.11.13", "python_image": "3.11.13-bullseye", "nodejs": "24", - "nodejs_canonical": "24.5.0", + "nodejs_canonical": "24.8.0", "distro": "bullseye", "platforms": [ "linux/amd64", @@ -338,7 +338,7 @@ "python_canonical": "3.11.13", "python_image": "3.11.13-slim", "nodejs": "24", - "nodejs_canonical": "24.5.0", + "nodejs_canonical": "24.8.0", "distro": "slim", "platforms": [ "linux/amd64", @@ -351,7 +351,7 @@ "python_canonical": "3.11.13", "python_image": "3.11.13-alpine", "nodejs": "24", - "nodejs_canonical": "24.5.0", + "nodejs_canonical": "24.8.0", "distro": "alpine", "platforms": [ "linux/amd64" @@ -363,7 +363,7 @@ "python_canonical": "3.11.13", "python_image": "3.11.13-bookworm", "nodejs": "22", - "nodejs_canonical": "22.18.0", + "nodejs_canonical": "22.19.0", "distro": "bookworm", "platforms": [ "linux/amd64", @@ -376,7 +376,7 @@ "python_canonical": "3.11.13", "python_image": "3.11.13-bullseye", "nodejs": "22", - "nodejs_canonical": "22.18.0", + "nodejs_canonical": "22.19.0", "distro": "bullseye", "platforms": [ "linux/amd64", @@ -389,7 +389,7 @@ "python_canonical": "3.11.13", "python_image": "3.11.13-slim", "nodejs": "22", - "nodejs_canonical": "22.18.0", + "nodejs_canonical": "22.19.0", "distro": "slim", "platforms": [ "linux/amd64", @@ -402,7 +402,7 @@ "python_canonical": "3.11.13", "python_image": "3.11.13-alpine", "nodejs": "22", - "nodejs_canonical": "22.18.0", + "nodejs_canonical": "22.19.0", "distro": "alpine", "platforms": [ "linux/amd64" @@ -414,7 +414,7 @@ "python_canonical": "3.11.13", "python_image": "3.11.13-bookworm", "nodejs": "20", - "nodejs_canonical": "20.19.4", + "nodejs_canonical": "20.19.5", "distro": "bookworm", "platforms": [ "linux/amd64", @@ -427,7 +427,7 @@ "python_canonical": "3.11.13", "python_image": "3.11.13-bullseye", "nodejs": "20", - "nodejs_canonical": "20.19.4", + "nodejs_canonical": "20.19.5", "distro": "bullseye", "platforms": [ "linux/amd64", @@ -440,7 +440,7 @@ "python_canonical": "3.11.13", "python_image": "3.11.13-slim", "nodejs": "20", - "nodejs_canonical": "20.19.4", + "nodejs_canonical": "20.19.5", "distro": "slim", "platforms": [ "linux/amd64", @@ -453,7 +453,7 @@ "python_canonical": "3.11.13", "python_image": "3.11.13-alpine", "nodejs": "20", - "nodejs_canonical": "20.19.4", + "nodejs_canonical": "20.19.5", "distro": "alpine", "platforms": [ "linux/amd64" @@ -465,7 +465,7 @@ "python_canonical": "3.10.18", "python_image": "3.10.18-bookworm", "nodejs": "24", - "nodejs_canonical": "24.5.0", + "nodejs_canonical": "24.8.0", "distro": "bookworm", "platforms": [ "linux/amd64", @@ -478,7 +478,7 @@ "python_canonical": "3.10.18", "python_image": "3.10.18-bullseye", "nodejs": "24", - "nodejs_canonical": "24.5.0", + "nodejs_canonical": "24.8.0", "distro": "bullseye", "platforms": [ "linux/amd64", @@ -491,7 +491,7 @@ "python_canonical": "3.10.18", "python_image": "3.10.18-slim", "nodejs": "24", - "nodejs_canonical": "24.5.0", + "nodejs_canonical": "24.8.0", "distro": "slim", "platforms": [ "linux/amd64", @@ -504,7 +504,7 @@ "python_canonical": "3.10.18", "python_image": "3.10.18-alpine", "nodejs": "24", - "nodejs_canonical": "24.5.0", + "nodejs_canonical": "24.8.0", "distro": "alpine", "platforms": [ "linux/amd64" @@ -516,7 +516,7 @@ "python_canonical": "3.10.18", "python_image": "3.10.18-bookworm", "nodejs": "22", - "nodejs_canonical": "22.18.0", + "nodejs_canonical": "22.19.0", "distro": "bookworm", "platforms": [ "linux/amd64", @@ -529,7 +529,7 @@ "python_canonical": "3.10.18", "python_image": "3.10.18-bullseye", "nodejs": "22", - "nodejs_canonical": "22.18.0", + "nodejs_canonical": "22.19.0", "distro": "bullseye", "platforms": [ "linux/amd64", @@ -542,7 +542,7 @@ "python_canonical": "3.10.18", "python_image": "3.10.18-slim", "nodejs": "22", - "nodejs_canonical": "22.18.0", + "nodejs_canonical": "22.19.0", "distro": "slim", "platforms": [ "linux/amd64", @@ -555,7 +555,7 @@ "python_canonical": "3.10.18", "python_image": "3.10.18-alpine", "nodejs": "22", - "nodejs_canonical": "22.18.0", + "nodejs_canonical": "22.19.0", "distro": "alpine", "platforms": [ "linux/amd64" @@ -567,7 +567,7 @@ "python_canonical": "3.10.18", "python_image": "3.10.18-bookworm", "nodejs": "20", - "nodejs_canonical": "20.19.4", + "nodejs_canonical": "20.19.5", "distro": "bookworm", "platforms": [ "linux/amd64", @@ -580,7 +580,7 @@ "python_canonical": "3.10.18", "python_image": "3.10.18-bullseye", "nodejs": "20", - "nodejs_canonical": "20.19.4", + "nodejs_canonical": "20.19.5", "distro": "bullseye", "platforms": [ "linux/amd64", @@ -593,7 +593,7 @@ "python_canonical": "3.10.18", "python_image": "3.10.18-slim", "nodejs": "20", - "nodejs_canonical": "20.19.4", + "nodejs_canonical": "20.19.5", "distro": "slim", "platforms": [ "linux/amd64", @@ -606,7 +606,7 @@ "python_canonical": "3.10.18", "python_image": "3.10.18-alpine", "nodejs": "20", - "nodejs_canonical": "20.19.4", + "nodejs_canonical": "20.19.5", "distro": "alpine", "platforms": [ "linux/amd64" @@ -618,7 +618,7 @@ "python_canonical": "3.9.23", "python_image": "3.9.23-bookworm", "nodejs": "24", - "nodejs_canonical": "24.5.0", + "nodejs_canonical": "24.8.0", "distro": "bookworm", "platforms": [ "linux/amd64", @@ -631,7 +631,7 @@ "python_canonical": "3.9.23", "python_image": "3.9.23-bullseye", "nodejs": "24", - "nodejs_canonical": "24.5.0", + "nodejs_canonical": "24.8.0", "distro": "bullseye", "platforms": [ "linux/amd64", @@ -644,7 +644,7 @@ "python_canonical": "3.9.23", "python_image": "3.9.23-slim", "nodejs": "24", - "nodejs_canonical": "24.5.0", + "nodejs_canonical": "24.8.0", "distro": "slim", "platforms": [ "linux/amd64", @@ -657,7 +657,7 @@ "python_canonical": "3.9.23", "python_image": "3.9.23-alpine", "nodejs": "24", - "nodejs_canonical": "24.5.0", + "nodejs_canonical": "24.8.0", "distro": "alpine", "platforms": [ "linux/amd64" @@ -669,7 +669,7 @@ "python_canonical": "3.9.23", "python_image": "3.9.23-bookworm", "nodejs": "22", - "nodejs_canonical": "22.18.0", + "nodejs_canonical": "22.19.0", "distro": "bookworm", "platforms": [ "linux/amd64", @@ -682,7 +682,7 @@ "python_canonical": "3.9.23", "python_image": "3.9.23-bullseye", "nodejs": "22", - "nodejs_canonical": "22.18.0", + "nodejs_canonical": "22.19.0", "distro": "bullseye", "platforms": [ "linux/amd64", @@ -695,7 +695,7 @@ "python_canonical": "3.9.23", "python_image": "3.9.23-slim", "nodejs": "22", - "nodejs_canonical": "22.18.0", + "nodejs_canonical": "22.19.0", "distro": "slim", "platforms": [ "linux/amd64", @@ -708,7 +708,7 @@ "python_canonical": "3.9.23", "python_image": "3.9.23-alpine", "nodejs": "22", - "nodejs_canonical": "22.18.0", + "nodejs_canonical": "22.19.0", "distro": "alpine", "platforms": [ "linux/amd64" @@ -720,7 +720,7 @@ "python_canonical": "3.9.23", "python_image": "3.9.23-bookworm", "nodejs": "20", - "nodejs_canonical": "20.19.4", + "nodejs_canonical": "20.19.5", "distro": "bookworm", "platforms": [ "linux/amd64", @@ -733,7 +733,7 @@ "python_canonical": "3.9.23", "python_image": "3.9.23-bullseye", "nodejs": "20", - "nodejs_canonical": "20.19.4", + "nodejs_canonical": "20.19.5", "distro": "bullseye", "platforms": [ "linux/amd64", @@ -746,7 +746,7 @@ "python_canonical": "3.9.23", "python_image": "3.9.23-slim", "nodejs": "20", - "nodejs_canonical": "20.19.4", + "nodejs_canonical": "20.19.5", "distro": "slim", "platforms": [ "linux/amd64", @@ -759,7 +759,7 @@ "python_canonical": "3.9.23", "python_image": "3.9.23-alpine", "nodejs": "20", - "nodejs_canonical": "20.19.4", + "nodejs_canonical": "20.19.5", "distro": "alpine", "platforms": [ "linux/amd64"