Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

feat: make node 18 the default #4325

Merged
merged 3 commits into from
Nov 13, 2023
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
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());
Comment on lines -25 to +27
Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

The previous implementation was very verbose and used a "nanny" approach. In reality we need this check only to silence warnings in tests. It did also not account for different versions.

Re-implemented this to require ack of every specific node version.

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
Loading