diff --git a/.github/workflows/docker-images.yml b/.github/workflows/docker-images.yml index 8889085150..2407668c7b 100644 --- a/.github/workflows/docker-images.yml +++ b/.github/workflows/docker-images.yml @@ -24,7 +24,7 @@ jobs: debian: - 'bullseye' # 11 - 'bookworm' # 12 - node: ['18', '20'] + node: ['18', '20', '22'] exclude: # We publish bullseye only with Node >= 20 - debian: 'bullseye' diff --git a/.github/workflows/main.yml b/.github/workflows/main.yml index 3dd7100c73..6b38607590 100644 --- a/.github/workflows/main.yml +++ b/.github/workflows/main.yml @@ -231,6 +231,13 @@ jobs: node: '20' # EOL 2026-04-30 os: ubuntu-latest python: '3.8' + - title: 'Node 22' + java: '8' + dotnet: '6.0.x' + go: '1.18' + node: '22' # EOL 2027-04-30 + os: ubuntu-latest + python: '3.8' # Test alternate .NETs - title: '.NET 7.0' java: '8' diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md index 21b3a0eab6..3f55bb9d6c 100644 --- a/CONTRIBUTING.md +++ b/CONTRIBUTING.md @@ -39,7 +39,7 @@ The following tools need to be installed to develop on JSII locally. We recommen using the docker image from the above section, but if you wish to, you can install in your development environment. -- [Node `14.6.0`] or later +- [Node `18.0.0`] or later - [Yarn `1.19.1`] or later - An OpenJDK-8 distribution (e.g: [Oracle's OpenJDK8], [Amazon Corretto 8]) + [`maven >= 3.0.5`](https://maven.apache.org) @@ -52,7 +52,7 @@ in your development environment. + *Recommended:* [`twine`](https://pypi.org/project/twine/) - [Go] `1.18` or newer -[Node `14.6.0`]: https://nodejs.org/download/release/v14.6.0/ +[Node `18.0.0`]: https://nodejs.org/download/release/latest-v18.x/ [Yarn `1.19.1`]: https://yarnpkg.com/en/docs/install [Oracle's OpenJDK8]: http://openjdk.java.net/install/ [Amazon Corretto 8]: https://aws.amazon.com/corretto/ diff --git a/gh-pages/partials/node-support-table.md b/gh-pages/partials/node-support-table.md index 6a34ef6184..e5174279a3 100644 --- a/gh-pages/partials/node-support-table.md +++ b/gh-pages/partials/node-support-table.md @@ -2,9 +2,9 @@ | Release | Status | End-of-Life | | --------- | ---------------------------- | ------------ | - | `^14.6.0` | :white_check_mark: Supported | `2023-04-30` | - | `^16.3.0` | :white_check_mark: Supported | `2024-09-11` | | `^18.0.0` | :white_check_mark: Supported | `2025-04-30` | + | `^20.0.0` | :white_check_mark: Supported | `2026-04-30` | + | `^22.0.0` | :white_check_mark: Supported | `2027-04-30` | ??? question "Status Definitions" - **:white_check_mark: Supported**: Long Term Support (LTS) releases (those with an even major version) are diff --git a/packages/@jsii/check-node/src/constants.ts b/packages/@jsii/check-node/src/constants.ts index 2ead106ac9..d569bdf2bb 100644 --- a/packages/@jsii/check-node/src/constants.ts +++ b/packages/@jsii/check-node/src/constants.ts @@ -50,6 +50,7 @@ export class NodeRelease { new NodeRelease(18, { endOfLife: new Date('2025-04-30') }), new NodeRelease(20, { endOfLife: new Date('2026-04-30') }), new NodeRelease(21, { endOfLife: new Date('2024-06-01'), untested: true }), + new NodeRelease(22, { endOfLife: new Date('2027-04-30') }), // Future (planned releases) ]; diff --git a/superchain/Dockerfile b/superchain/Dockerfile index 281e498606..e18324db64 100644 --- a/superchain/Dockerfile +++ b/superchain/Dockerfile @@ -239,12 +239,12 @@ ARG NODE_MAJOR_VERSION="18" COPY superchain/gpg/nodesource.asc /tmp/nodesource.asc COPY superchain/gpg/yarn.asc /tmp/yarn.asc RUN apt-key add /tmp/nodesource.asc && rm /tmp/nodesource.asc \ - && echo "deb https://deb.nodesource.com/node_${NODE_MAJOR_VERSION}.x ${DEBIAN_VERSION} main" \ - > /etc/apt/sources.list.d/nodesource.list \ - # Reduce priority of the "standard" nodejs package, so that the one from nodesource is always preferred... + && echo "deb https://deb.nodesource.com/node_${NODE_MAJOR_VERSION}.x nodistro main" \ + > /etc/apt/sources.list.d/nodesource.list \ + # Increase priority of the nodesource package && echo "Package: nodejs" > /etc/apt/preferences.d/nodejs \ - && echo 'Pin: origin "deb.debian.org"' >> /etc/apt/preferences.d/nodejs \ - && echo "Pin-Priority: 50" >> /etc/apt/preferences.d/nodejs \ + && echo 'Pin: origin deb.nodesource.com"' >> /etc/apt/preferences.d/nodejs \ + && echo "Pin-Priority: 600" >> /etc/apt/preferences.d/nodejs \ && apt-key add /tmp/yarn.asc && rm /tmp/yarn.asc \ && echo "deb https://dl.yarnpkg.com/debian stable main" > /etc/apt/sources.list.d/yarnpkg.list \ && apt-get update \ diff --git a/superchain/README.md b/superchain/README.md index 2a1e7db58f..f21153e9dc 100644 --- a/superchain/README.md +++ b/superchain/README.md @@ -17,15 +17,15 @@ public.ecr.aws/jsii/superchain:1-bullseye-slim ## Included Language SDKs -| SDK | Version | -| ------------ | ---------------------------------------- | -| `OpenJDK 20` | Amazon Corretto `>= 20.0.2` | -| `.NET SDK` | `>= 6.0.14` | -| `mono` | `>= 6.12.0.200` | -| `Javascript` | see [NodeJS and NPM](#nodejs-and-npm) | -| `PowerShell` | `pwsh >= 7.2.16` | -| `Python 3` | see [Python'](#python) | -| `Go` | `go >= 1.18` | +| SDK | Version | +| ------------ | ------------------------------------- | +| `OpenJDK 20` | Amazon Corretto `>= 20.0.2` | +| `.NET SDK` | `>= 6.0.14` | +| `mono` | `>= 6.12.0.200` | +| `Javascript` | see [NodeJS and NPM](#nodejs-and-npm) | +| `PowerShell` | `pwsh >= 7.2.16` | +| `Python 3` | see [Python'](#python) | +| `Go` | `go >= 1.18` | ## Image tags @@ -39,9 +39,10 @@ public.ecr.aws/jsii/superchain:-(-node)(-nightly) - `` is the base image tag, currently supported base images are - `bookworm-slim` - `bullseye-slim` -- `` is the major version of node contained in the image - - `18` corresponds to node 18.x, this is the default - - `20` corresponds to node 20.x +- `` is the major version of Node.js contained in the image + - `18` corresponds to Node.js 18.x, this is the default + - `20` corresponds to Node.js 20.x + - `22` corresponds to Node.js 22.x - `-nightly` images are released from the `HEAD` of the [`aws/jsii`][jsii] repository and should typically not be used for production workloads @@ -82,11 +83,11 @@ public.ecr.aws/jsii/superchain:1-bullseye-slim-node20 We will stop publishing images for Node versions that are EOL. -| Debian | Node versions | -| ----------------------------| -----------------| -| `bookworm-slim` | `20` | -| `bullseye-slim` | `20`, `18` | -| `buster-slim` (deprecated) | `18`, `16`, `14` | +| Debian | Node versions | +| -------------------------- | ---------------- | +| `bookworm-slim` | `20` | +| `bullseye-slim` | `20`, `18` | +| `buster-slim` (deprecated) | `18`, `16`, `14` | If you are building this image from source, you can control the Node version with the `NODE_MAJOR_VERSION` build argument: @@ -100,11 +101,11 @@ jsii$ docker build [...] --build-arg NODE_MAJOR_VERSION=16 The image includes the most recent Python version available for the respecitve Debian distribution. A complete list can be viewed on the [Debian website](https://wiki.debian.org/Python#Supported_Python_Versions). -| Debian | Python version | -| ----------------------------| ---------------| -| `bookworm-slim` | `3.11` | -| `bullseye-slim` | `3.9` | -| `buster-slim` (deprecated) | `3.7` | +| Debian | Python version | +| -------------------------- | -------------- | +| `bookworm-slim` | `3.11` | +| `bullseye-slim` | `3.9` | +| `buster-slim` (deprecated) | `3.7` | ## Included Tools & Utilities diff --git a/superchain/gpg/nodesource.asc b/superchain/gpg/nodesource.asc index 1dc1d1016b..b7637b89f6 100644 --- a/superchain/gpg/nodesource.asc +++ b/superchain/gpg/nodesource.asc @@ -1,52 +1,29 @@ -----BEGIN PGP PUBLIC KEY BLOCK----- -Version: GnuPG v1 -Comment: GPGTools - https://gpgtools.org -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 -=CLGF +mQENBFdDN1ABCADaNd/I3j3tn40deQNgz7hB2NvT+syXe6k4ZmdiEcOfBvFrkS8B +hNS67t93etHsxEy7E0qwsZH32bKazMqe9zDwoa3aVImryjh6SHC9lMtW27JPHFeM +Srkt9YmH1WMwWcRO6eSY9B3PpazquhnvbammLuUojXRIxkDroy6Fw4UKmUNSRr32 +9Ej87jRoR1B2/57Kfp2Y4+vFGGzSvh3AFQpBHq51qsNHALU6+8PjLfIt+5TPvaWR +TB+kAZnQZkaIQM2nr1n3oj6ak2RATY/+kjLizgFWzgEfbCrbsyq68UoY5FPBnu4Z +E3iDZpaIqwKr0seUC7iA1xM5eHi5kty1oB7HABEBAAG0Ik5Tb2xpZCA8bnNvbGlk +LWdwZ0Bub2Rlc291cmNlLmNvbT6JATgEEwECACIFAldDN1ACGwMGCwkIBwMCBhUI +AgkKCwQWAgMBAh4BAheAAAoJEC9ZtfmbG+C0y7wH/i4xnab36dtrYW7RZwL8i6Sc +NjMx4j9+U1kr/F6YtqWd+JwCbBdar5zRghxPcYEq/qf7MbgAYcs1eSOuTOb7n7+o +xUwdH2iCtHhKh3Jr2mRw1ks7BbFZPB5KmkxHaEBfLT4d+I91ZuUdPXJ+0SXs9gzk +Dbz65Uhoz3W03aiF8HeL5JNARZFMbHHNVL05U1sTGTCOtu+1c/33f3TulQ/XZ3Y4 +hwGCpLe0Tv7g7Lp3iLMZMWYPEa0a7S4u8he5IEJQLd8bE8jltcQvrdr3Fm8kI2Jg +BJmUmX4PSfhuTCFaR/yeCt3UoW883bs9LfbTzIx9DJGpRIu8Y0IL3b4sj/GoZVq5 +AQ0EV0M3UAEIAKrTaC62ayzqOIPa7nS90BHHck4Z33a2tZF/uof38xNOiyWGhT8u +JeFoTTHn5SQq5Ftyu4K3K2fbbpuu/APQF05AaljzVkDGNMW4pSkgOasdysj831cu +ssrHX2RYS22wg80k6C/Hwmh5F45faEuNxsV+bPx7oPUrt5n6GMx84vEP3i1+FDBi +0pt/B/QnDFBXki1BGvJ35f5NwDefK8VaInxXP3ZN/WIbtn5dqxppkV/YkO7GiJlp +Jlju9rf3kKUIQzKQWxFsbCAPIHoWv7rH9RSxgDithXtG6Yg5R1aeBbJaPNXL9wpJ +YBJbiMjkAFaz4B95FOqZm3r7oHugiCGsHX0AEQEAAYkBHwQYAQIACQUCV0M3UAIb +DAAKCRAvWbX5mxvgtE/OB/0VN88DR3Y3fuqy7lq/dthkn7Dqm9YXdorZl3L152eE +IF882aG8FE3qZdaLGjQO4oShAyNWmRfSGuoH0XERXAI9n0r8m4mDMxE6rtP7tHet +y/5M8x3CTyuMgx5GLDaEUvBusnTD+/v/fBMwRK/cZ9du5PSG4R50rtst+oYyC2ao +x4I2SgjtF/cY7bECsZDplzatN3gv34PkcdIg8SLHAVlL4N5tzumDeizRspcSyoy2 +K2+hwKU4C4+dekLLTg8rjnRROvplV2KtaEk6rxKtIRFDCoQng8wfJuIMrDNKvqZw +FRGt7cbvW5MCnuH8MhItOl9Uxp1wHp6gtav/h8Gp6MBa +=MARt -----END PGP PUBLIC KEY BLOCK-----