Skip to content

Commit

Permalink
feat: make node 18 the default (#4325)
Browse files Browse the repository at this point in the history
Removes testing and superchain releases for EOL Node 16

Deprecation and EOL messages of node versions are automated, so no need to announce or wait.
We are well past the promised 30 days support after Node 16 went EOL.

---

By submitting this pull request, I confirm that my contribution is made under the terms of the [Apache 2.0 license].

[Apache 2.0 license]: https://www.apache.org/licenses/LICENSE-2.0
  • Loading branch information
mrgrain committed Nov 13, 2023
1 parent f8c2e0c commit 8784725
Show file tree
Hide file tree
Showing 8 changed files with 65 additions and 69 deletions.
6 changes: 3 additions & 3 deletions .github/workflows/docker-images.yml
Original file line number Diff line number Diff line change
Expand Up @@ -22,16 +22,16 @@ jobs:
fail-fast: false
matrix:
debian:
- 'buster' # 10
node: ['16', '18', '20']
- 'buster' # 10
node: ['18', '20']
include:
- debian: 'bullseye' # 11
node: '20'
- debian: 'bookworm' #12
node: '20'
env:
# Node version whose images will be aliased without the -nodeXX segment
DEFAULT_NODE_MAJOR_VERSION: 16
DEFAULT_NODE_MAJOR_VERSION: 18
steps:
- name: Check out
uses: actions/checkout@v4
Expand Down
38 changes: 15 additions & 23 deletions .github/workflows/main.yml
Original file line number Diff line number Diff line change
Expand Up @@ -42,11 +42,11 @@ jobs:
with:
distribution: 'zulu'
java-version: '8'
- name: Set up Node 16
- name: Set up Node 18
uses: actions/setup-node@v4
with:
cache: yarn
node-version: '16'
node-version: '18'
- name: Set up Python 3.7
uses: actions/setup-python@v4
with:
Expand Down Expand Up @@ -125,11 +125,11 @@ jobs:
with:
distribution: 'zulu'
java-version: '8'
- name: Set up Node 16
- name: Set up Node 18
uses: actions/setup-node@v4
with:
cache: yarn
node-version: '16'
node-version: '18'
- name: Set up Python 3.7
uses: actions/setup-python@v4
with:
Expand Down Expand Up @@ -195,35 +195,28 @@ jobs:
dotnet: ['6.0.x']
go: ['1.18']
java: ['8']
node: ['16'] # EOL 2023-09-11
node: ['18'] # EOL 2025-04-30
os: [ubuntu-latest]
python: ['3.7']
# Add specific combinations to be tested against "node 14" (to restrict cardinality)
# Add specific combinations to be tested against (to restrict cardinality)
include:
# Test using Windows
- title: 'Windows'
os: windows-latest
dotnet: '6.0.x'
go: '1.18'
java: '8'
node: '16'
node: '18'
python: '3.7'
# Test using macOS
- title: 'macOS'
os: macos-latest
dotnet: '6.0.x'
go: '1.18'
java: '8'
node: '16'
node: '18'
python: '3.7'
# Test alternate Nodes
- title: 'Node 16'
java: '8'
dotnet: '6.0.x'
go: '1.18'
node: '16' # EOL 2023-09-11
os: ubuntu-latest
python: '3.7'
- title: 'Node 18'
java: '8'
dotnet: '6.0.x'
Expand All @@ -243,23 +236,23 @@ jobs:
java: '8'
dotnet: '7.0.x'
go: '1.18'
node: '16'
node: '18'
os: ubuntu-latest
python: '3.7'
# Test alternate Gos
- title: 'Go 1.19'
java: '8'
dotnet: '6.0.x'
go: '1.19'
node: '16'
node: '18'
os: ubuntu-latest
python: '3.7'
# Test alternate Javas
- title: 'Java 11'
java: '11'
dotnet: '6.0.x'
go: '1.18'
node: '16'
node: '18'
os: ubuntu-latest
python: '3.7'
# Test alternate Pythons
Expand All @@ -268,28 +261,28 @@ jobs:
dotnet: '6.0.x'
go: '1.18'
java: '8'
node: '16'
node: '18'
os: ubuntu-latest
- title: 'Python 3.9'
python: '3.9'
dotnet: '6.0.x'
go: '1.18'
java: '8'
node: '16'
node: '18'
os: ubuntu-latest
- title: 'Python 3.10'
python: '3.10'
dotnet: '6.0.x'
go: '1.18'
java: '8'
node: '16'
node: '18'
os: ubuntu-latest
- title: 'Python 3.11'
python: '3.11'
dotnet: '6.0.x'
go: '1.18'
java: '8'
node: '16'
node: '18'
os: ubuntu-latest

runs-on: ${{ matrix.os }}
Expand Down Expand Up @@ -479,4 +472,3 @@ jobs:
with:
name: integtest_aws-cdk-lib
path: ./node_modules/aws-cdk-lib/dist/

7 changes: 4 additions & 3 deletions packages/@jsii/check-node/src/constants.ts
Original file line number Diff line number Diff line change
Expand Up @@ -35,9 +35,6 @@ export class NodeRelease {
endOfLife: new Date('2022-04-30'),
supportedRange: '^12.7.0',
}),
new NodeRelease(19, { endOfLife: new Date('2023-06-01') }),

// Currently active releases (as of last edit to this file...)
new NodeRelease(16, {
endOfLife: new Date('2023-09-11'),
supportedRange: '^16.3.0',
Expand All @@ -46,8 +43,12 @@ export class NodeRelease {
endOfLife: new Date('2022-06-01'),
supportedRange: '^17.3.0',
}),
new NodeRelease(19, { endOfLife: new Date('2023-06-01') }),

// Currently active releases (as of last edit to this file...)
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') }),

// Future (planned releases)
];
Expand Down
2 changes: 1 addition & 1 deletion packages/@jsii/check-node/src/index.test.ts
Original file line number Diff line number Diff line change
Expand Up @@ -11,7 +11,7 @@ test('tested node releases are correctly registered & supported', () => {

// This test is there to ensure house-keeping happens when it should. If we are
// testing a given node release, it must not have been EOL for over 60 days.
test(`tested node release (${process.version}) has not ben EOL for more than 60 days`, () => {
test(`tested node release (${process.version}) has not been EOL for more than 60 days`, () => {
const { nodeRelease } = NodeRelease.forThisRuntime();
expect(nodeRelease?.endOfLifeDate?.getTime()).toBeGreaterThan(
Date.now() - 60 * 86_400_000,
Expand Down
7 changes: 4 additions & 3 deletions packages/@jsii/check-node/src/index.ts
Original file line number Diff line number Diff line change
Expand Up @@ -22,12 +22,13 @@ export function checkNode(envPrefix = 'JSII'): void {

if (nodeRelease?.endOfLife) {
const silenceVariable = `${envPrefix}_SILENCE_WARNING_END_OF_LIFE_NODE_VERSION`;
const acknowledgeNodeEol =
'Node14 is now end of life (EOL) as of April 30, 2023. Support of EOL runtimes are only guaranteed for 30 days after EOL. By silencing this warning you acknowledge that you are using an EOL version of Node and will upgrade to a supported version as soon as possible.';
const silencedVersions = (process.env[silenceVariable] ?? '')
.split(',')
.map((v) => v.trim());
const qualifier = nodeRelease.endOfLifeDate
? ` on ${nodeRelease.endOfLifeDate.toISOString().slice(0, 10)}`
: '';
if (!(process.env[silenceVariable] === acknowledgeNodeEol))
if (!silencedVersions.includes(nodeRelease.majorVersion.toString()))
veryVisibleMessage(
bgRed.white.bold,
`Node ${nodeRelease.majorVersion} has reached end-of-life${qualifier} and is not supported.`,
Expand Down
6 changes: 4 additions & 2 deletions packages/@jsii/python-runtime/tests/test_invoke_bin.py
Original file line number Diff line number Diff line change
Expand Up @@ -23,8 +23,10 @@ def silence_node_deprecation_warnings():
for var in variables:
environ[var] = "1"

nodeEolAcknowledgement = "Node14 is now end of life (EOL) as of April 30, 2023. Support of EOL runtimes are only guaranteed for 30 days after EOL. By silencing this warning you acknowledge that you are using an EOL version of Node and will upgrade to a supported version as soon as possible."
environ["JSII_SILENCE_WARNING_END_OF_LIFE_NODE_VERSION"] = nodeEolAcknowledgement
# silence this for the next decades
environ[
"JSII_SILENCE_WARNING_END_OF_LIFE_NODE_VERSION"
] = "14,16,18,20,22,24,26,28,30,32,34"

# Execute the test
yield
Expand Down
4 changes: 2 additions & 2 deletions superchain/Dockerfile
Original file line number Diff line number Diff line change
Expand Up @@ -232,10 +232,10 @@ COPY superchain/m2-settings.xml /root/.m2/settings.xml
# Install Go
COPY --from=bindist /opt/golang/go ${GOROOT}

# Install Node 14+ (configurable with '--build-arg NODE_MAJOR_VERSION=xxx') and yarn
# Install Node (configurable with '--build-arg NODE_MAJOR_VERSION=xxx') and yarn
# (Put this as late as possible in the Dockerfile so we get to reuse the layer cache
# for most of the multiple builds).
ARG NODE_MAJOR_VERSION="16"
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 \
Expand Down
64 changes: 32 additions & 32 deletions superchain/README.md
Original file line number Diff line number Diff line change
Expand Up @@ -8,15 +8,15 @@ required in order to package [jsii] projects in all supported languages.

## Included Language SDKs

SDK | Version
----------------|-------------------------------------------
`OpenJDK 20` | Amazon Corretto `>= 20.0.0`
`.NET SDK` | `>= 6.0.14`
`mono` | `>= 6.8.0.105`
`Javascript` | see [NodeJS and NPM](#nodejs-and-npm)
`PowerShell` | `pwsh >= 7.1.3`
`Python 3` | `python3 >= 3.7.4` with `pip3 >= 20.0.2`
`Go` | `go >= 1.18`
| SDK | Version |
| ------------ | ---------------------------------------- |
| `OpenJDK 20` | Amazon Corretto `>= 20.0.0` |
| `.NET SDK` | `>= 6.0.14` |
| `mono` | `>= 6.8.0.105` |
| `Javascript` | see [NodeJS and NPM](#nodejs-and-npm) |
| `PowerShell` | `pwsh >= 7.1.3` |
| `Python 3` | `python3 >= 3.7.4` with `pip3 >= 20.0.2` |
| `Go` | `go >= 1.18` |

## Image tags

Expand All @@ -31,9 +31,7 @@ public.ecr.aws/jsii/superchain:<JSII-MAJOR>-<BASE>(-node<NODE-MAJOR>)(-nightly)
- `<BASE>` is the base image tag (e.g: `buster-slim`, `bullseye-slim`, `bookworm-slim`)
- The only supported value is `buster-slim`
- `<NODE-MAJOR>` is the major version of node contained in the image
- `14` corresponds to node 14.x, this is the default
- `16` corresponds to node 16.x
- `18` corresponds to node 18.x
- `18` corresponds to node 18.x, this is the default
- `20` corresponds to node 20.x
- `-nightly` images are released from the `HEAD` of the [`aws/jsii`][jsii]
repository and should typically not be used for production workloads
Expand All @@ -42,12 +40,14 @@ The previous image tags have been discontinued:

- `:latest` (users should migrate to `:1-buster-slim`)
- `:nightly` (users should migrate to `:1-buster-slim-nightly`)
- `:node10` (users should migrate to `:1-buster-slim-node14`)
- `:node10-nightly` (users should migrate to `:1-buster-slim-node14-nightly`)
- `:node12` (users shoudl migrate to `:1-buster-slim-node14`)
- `:node12-nightly` (users shoudl migrate to `:1-buster-slim-node14-nightly`)
- `:node14` (users shoudl migrate to `:1-buster-slim-node14`)
- `:node14-nightly` (users shoudl migrate to `:1-buster-slim-node14-nightly`)
- `:node10` (users should migrate to `:1-buster-slim-node18`)
- `:node10-nightly` (users should migrate to `:1-buster-slim-node18-nightly`)
- `:node12` (users should migrate to `:1-buster-slim-node18`)
- `:node12-nightly` (users shoudl migrate to `:1-buster-slim-node18-nightly`)
- `:node14` (users should migrate to `:1-buster-slim-node18`)
- `:node14-nightly` (users shoudl migrate to `:1-buster-slim-node18-nightly`)
- `:node16` (users should migrate to `:1-buster-slim-node18`)
- `:node16-nightly` (users shoudl migrate to `:1-buster-slim-node18-nightly`)

## Building

Expand Down Expand Up @@ -82,20 +82,20 @@ jsii$ docker build [...] --build-arg NODE_MAJOR_VERSION=16

## Included Tools & Utilities

Tool / Utility | Version
---------------|--------------------------------------------
`aws` | `>= 2.11.17`
`bundler` | `>= 1.17.3` and `>= 2.1.4`
`docker` | `>= 18.09.9-ce`
`git` | `>= 2.23.1`
`make` | `>= 3.82`
`maven` | `>= 3.6.3`
`openssl` | `>= 1.0.2k-fips`
`rsync` | `>= 3.1.2`
`yarn` | `>= 1.21.1`
`zip` & `unzip`| `>= 6.0-19`
`gh` | `>= 1.9.2`
`sam` | `>= 1.37.0`
| Tool / Utility | Version |
| --------------- | -------------------------- |
| `aws` | `>= 2.11.17` |
| `bundler` | `>= 1.17.3` and `>= 2.1.4` |
| `docker` | `>= 18.09.9-ce` |
| `git` | `>= 2.23.1` |
| `make` | `>= 3.82` |
| `maven` | `>= 3.6.3` |
| `openssl` | `>= 1.0.2k-fips` |
| `rsync` | `>= 3.1.2` |
| `yarn` | `>= 1.21.1` |
| `zip` & `unzip` | `>= 6.0-19` |
| `gh` | `>= 1.9.2` |
| `sam` | `>= 1.37.0` |

## License

Expand Down

0 comments on commit 8784725

Please sign in to comment.