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

chore(superchain): explicitly list supported images #4500

Merged
merged 2 commits into from
May 2, 2024
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
2 changes: 1 addition & 1 deletion .github/workflows/docker-images.yml
Original file line number Diff line number Diff line change
Expand Up @@ -24,7 +24,7 @@ jobs:
debian:
- 'bullseye' # 11
- 'bookworm' # 12
node: ['18', '20', '22']
node: ['18', '20', '22'] # STOP! Before adding anything here, check our maintenance policy in the README
exclude:
# We publish bullseye only with Node >= 20
- debian: 'bullseye'
Expand Down
123 changes: 59 additions & 64 deletions superchain/README.md
Original file line number Diff line number Diff line change
Expand Up @@ -9,104 +9,99 @@ required in order to package [jsii] projects in all supported languages.
## Recommended image

We recommend the following image for most users.
See [Image tags](#image-tags) for further details.
See [Image tags](#current-image-tags) for further details.

```text
public.ecr.aws/jsii/superchain:1-bookworm-slim
```
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` |
### Current image tags

## Image tags

Maintained image tags are named using the following pattern:
The following image tags are actively maintained and updated regularly.

```
public.ecr.aws/jsii/superchain:<JSII-MAJOR>-<BASE>(-node<NODE-MAJOR>)(-nightly)
```text
public.ecr.aws/jsii/superchain:<image-tag>
```

- `<JSII-MAJOR>` is the major line of the jsii toolchain (must be `1`)
- `<BASE>` is the base image tag, currently supported base images are
- `bookworm-slim`
- `bullseye-slim`
- `<NODE-MAJOR>` 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
| Image tag | Debian | Node | Python |
| ------------------------ | ---------- | ---- | ------ |
| `1-bookworm-slim` | `bookworm` | `18` | `3.11` |
| `1-bookworm-slim-node18` | `bookworm` | `18` | `3.11` |
| `1-bookworm-slim-node20` | `bookworm` | `20` | `3.11` |
| `1-bookworm-slim-node22` | `bookworm` | `22` | `3.11` |
| `1-bullseye-slim-node20` | `bookworm` | `20` | `3.9` |
| `1-bullseye-slim-node22` | `bookworm` | `22` | `3.9` |

**The following base image lines have been deprecated and are not updated anymore. Users are adviced to upgrade to :**
Any other tags should be *considered* deprecated or in the case of `nightly` images *experimental*.

- `:1-buster-slim-*`

**The previous image tags have been discontinued and must NOT BE USED ANYMORE:**
## Included Language SDKs

- `:latest` (users should migrate to `:1-bullseye-slim`)
- `:nightly` (users should migrate to `:1-bullseye-slim-nightly`)
- `:nodeX` (users should migrate to an image using a supported node version)
- `:nodeX-nightly` (users should migrate to a nightly image using a supported node version)
| SDK | Version |
| ------------ | --------------------------------------------- |
| `OpenJDK 20` | Amazon Corretto `>= 20.0.2` |
| `.NET SDK` | `>= 6.0.14` |
| `mono` | `>= 6.12.0.200` |
| `Javascript` | see [Current image tags](#current-image-tags) |
| `PowerShell` | `pwsh >= 7.2.16` |
| `Python 3` | see [Current image tags](#current-image-tags) |
| `Go` | `go >= 1.18` |

## Building

This docker image must be built from the package root with the Dockerfile set to
`superchain/Dockerfile`:

```
jsii$ docker build . -f superchain/Dockerfile -t jsii/superchain:local
```console
docker build . -f superchain/Dockerfile -t jsii/superchain:local
```

In case the tests fail, skip the tests and inspect the image manually:

```
jsii$ docker build . -f superchain/Dockerfile -t jsii/superchain:local --target=superchain
```console
docker build . -f superchain/Dockerfile -t jsii/superchain:local --target=superchain
```

## NodeJS and NPM
### NodeJS and NPM

We build multiple versions of this image, for different versions of Node.
You can use a specific Node version like this:
If you are building this image from source, you can control the Node version with the
`NODE_MAJOR_VERSION` build argument:

```console
docker build [...] --build-arg NODE_MAJOR_VERSION=22
```
public.ecr.aws/jsii/superchain:1-bullseye-slim-node20

### Image tags

Image tags are named using the following pattern:

```text
public.ecr.aws/jsii/superchain:<JSII-MAJOR>-<BASE>(-node<NODE-MAJOR>)(-nightly)
```

We will stop publishing images for Node versions that are EOL.
- `<JSII-MAJOR>` is the major line of the jsii toolchain (must be `1`)
- `<BASE>` is the base image tag, currently supported base images are
- `<NODE-MAJOR>` is the major version of Node.js contained in the image
- `-nightly` images are released from the `HEAD` of the [`aws/jsii`][jsii]
repository and should typically not be used for production workloads

## Support policy

| Debian | Node versions |
| -------------------------- | ---------------- |
| `bookworm-slim` | `20` |
| `bullseye-slim` | `20`, `18` |
| `buster-slim` (deprecated) | `18`, `16`, `14` |
Generally only actively versions that are actively supported by upstream projects are maintained in superchain.

If you are building this image from source, you can control the Node version with the
`NODE_MAJOR_VERSION` build argument:
### Debian

```
jsii$ docker build [...] --build-arg NODE_MAJOR_VERSION=16
```
We only publish images for Debian releases that receive updates from the [Debian security team]([debian-releases](https://wiki.debian.org/DebianReleases#Production_Releases)).
All superchain images are based on the slim variant.

## Python
### Node

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).
We publish images variants for Node versions that are Current or LTS.
We include the npm version that ships with the version of Node.

| Debian | Python version |
| -------------------------- | -------------- |
| `bookworm-slim` | `3.11` |
| `bullseye-slim` | `3.9` |
| `buster-slim` (deprecated) | `3.7` |
### Python

The image includes the most recent Python version available for the respective Debian distribution.
A complete list can be viewed on the [Debian website](https://wiki.debian.org/Python#Supported_Python_Versions).

## Included Tools & Utilities

Expand Down
Loading