diff --git a/.devcontainer.json b/.devcontainer.json index 556ed10a20..7b3b4870b4 100644 --- a/.devcontainer.json +++ b/.devcontainer.json @@ -1,19 +1,12 @@ { - "name": "Dev Container - aws/jsii", - "build": { - "dockerfile": "superchain/Dockerfile", - "context": ".", - "target": "superchain", - "args": { - "BUILD_TIMESTAMP": "unknown", - "COMMIT_ID": "HEAD", - "REGISTRY": "docker.io/library", - }, - }, - "containerUser": "superchain", - "remoteUser": "superchain", - "postCreateCommand": "yarn install && yarn build", - "extensions": [ - "dbaeumer.vscode-eslint@2.1.5", - ], + "name": "Dev Container - aws/jsii", + "image": "public.ecr.aws/jsii/superchain:1-bookworm-slim", + "containerUser": "superchain", + "remoteUser": "superchain", + "postCreateCommand": "yarn install", + "customizations": { + "vscode": { + "extensions": ["dbaeumer.vscode-eslint", "Orta.vscode-jest"] + } + } } diff --git a/.github/workflows/docker-images.yml b/.github/workflows/docker-images.yml deleted file mode 100644 index 0c0b4cd905..0000000000 --- a/.github/workflows/docker-images.yml +++ /dev/null @@ -1,287 +0,0 @@ -# Workflows pertaining to the jsii/superchain Docker image -name: Docker Images - -on: - workflow_dispatch: {} - merge_group: {} - pull_request: - branches: [main, release] - push: - branches: [main, release] - -env: - DOCKER_BUILDKIT: 1 - -jobs: - superchain: - name: jsii/superchain - permissions: - contents: read - id-token: write # Necessary for OIDC federation - runs-on: ubuntu-latest - strategy: - fail-fast: false - matrix: - debian: - - 'bullseye' # 11 - - 'bookworm' # 12 - 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' - node: '18' - env: - # Node version whose images will be aliased without the -nodeXX segment - DEFAULT_NODE_MAJOR_VERSION: 18 - steps: - - name: Check out - uses: actions/checkout@v4 - - # Determine if we should run the validation or not - - name: Should this run? - id: should-run - run: |- - if [ "${{ github.event_name }}" = "push" ]; then - echo '⏯ Triggered by "push" event' - echo "result=true" >> $GITHUB_OUTPUT - elif [ "${{ github.base_ref }}" = "release" ]; then - echo '⏯ Triggered by "pull_request" event against "release"' - echo "result=true" >> $GITHUB_OUTPUT - else - # Fetch the base and head refs from origin so we can safely diff 'em - git fetch --depth=1 --quiet origin ${{ github.base_ref }} - # Otherwise, only run if the Dockerfile changed - changed=$(git diff --name-only origin/${{ github.base_ref }}..HEAD) - if grep Dockerfile <<< "${changed}" ; then - echo '⏯ Dockerfile changed' - echo "result=true" >> $GITHUB_OUTPUT - else - if grep '.github/workflows/docker-images.yml' <<< "${changed}" ; then - echo '⏯ docker-images workflow changed' - echo "result=true" >> $GITHUB_OUTPUT - else - echo '⏭ Dockerfile not changed' - echo "result=false" >> $GITHUB_OUTPUT - fi - fi - fi - - # Check if federation into AWS is configured. This is necessary because - # GitHub does not interpret ${{ secret.FOO }} within `if:` conditions... - # See: https://github.com/actions/runner/issues/520 - - name: Check AWS federation configuration - id: federate_to_aws - if: steps.should-run.outputs.result == 'true' - run: |- - if [[ "${{ secrets.AWS_ROLE_TO_ASSUME }}" != "" ]]; then - echo "🔑 Federation into AWS is possible (AWS_ROLE_TO_ASSUME is available)" - echo "enabled=true" >> $GITHUB_OUTPUT - else - echo "❌ Federation into AWS is disabled (no AWS_ROLE_TO_ASSUME secret found)" - echo "enabled=false" >> $GITHUB_OUTPUT - fi - - # Federate into the PR Validation AWS Account - - name: Federate into AWS - if: steps.should-run.outputs.result == 'true' && steps.federate_to_aws.outputs.enabled == 'true' - uses: aws-actions/configure-aws-credentials@v4 - with: - aws-region: us-east-1 - role-to-assume: ${{ secrets.AWS_ROLE_TO_ASSUME }} - role-session-name: GHA_aws-jsii_docker-images - - # Login to ECR Public registry, so we don't get throttled at 1 TPS - - name: Login to ECR Public - if: steps.should-run.outputs.result == 'true' && steps.federate_to_aws.outputs.enabled == 'true' - run: |- - aws ecr-public get-login-password --region=us-east-1 \ - | docker login --username AWS --password-stdin public.ecr.aws - - - name: Slice DockerHub credentials - id: credentials - run: |- - echo "username=$(cut -d: -f1 <<< '${{ secrets.DOCKER_CREDENTIALS }}')" >> "$GITHUB_OUTPUT" - echo "password=$(cut -d: -f2 <<< '${{ secrets.DOCKER_CREDENTIALS }}')" >> "$GITHUB_OUTPUT" - echo "::add-mask::$(cut -d: -f2 <<< '${{ secrets.DOCKER_CREDENTIALS }}')" - - # We only authenticate to Docker on the 'aws/jsii' repo, as forks will not have the secret - - name: Login to Docker Hub - if: steps.should-run.outputs.result == 'true' && github.repository == 'aws/jsii' - # The DOCKER_CREDENTIALS secret is expected to contain a username:token pair - run: |- - docker login \ - --username=${{ steps.credentials.outputs.username }} \ - --password=${{ steps.credentials.outputs.password }} - # Ensure we run with bash, because that's the syntax we're using here... - shell: bash - - - name: Set up QEMU - uses: docker/setup-qemu-action@v3 - with: - platforms: arm64 - - - name: Set up docker buildx - id: buildx - if: steps.should-run.outputs.result == 'true' - uses: docker/setup-buildx-action@v3 - with: - # Disable parallelism because IO contention makes it too slow on GitHub - # workers... - buildkitd-config-inline: |- - [worker.oci] - max-parallelism = 1 - - # 1 pull per second from ECR Public - - name: Jitter the start time to avoid ECR Public throttling - id: sleep-start - if: steps.should-run.outputs.result == 'true' && steps.federate_to_aws.outputs.enabled != true - run: |- - sleep $((RANDOM % 60)) - - - name: Determine build time - id: build-time - if: steps.should-run.outputs.result == 'true' - run: |- - echo "value=$(date -u +'%Y-%m-%dT%H:%M:%SZ')" >> $GITHUB_OUTPUT - - - name: Show Available Disk Space - run: df -h && du -h - - name: Free Disk Space - uses: jlumbroso/free-disk-space@v1.3.1 - - name: Build Image - if: steps.should-run.outputs.result == 'true' - run: |- - docker buildx build \ - --quiet \ - --builder ${{ steps.buildx.outputs.name }} \ - --platform linux/amd64,linux/arm64 \ - --target superchain \ - --pull \ - --build-arg BUILD_TIMESTAMP="${{ steps.build-time.outputs.value }}" \ - --build-arg COMMIT_ID='${{ github.sha }}' \ - --build-arg DEBIAN_VERSION=${{ matrix.debian }} \ - --build-arg NODE_MAJOR_VERSION=${{ matrix.node }} \ - -f superchain/Dockerfile \ - . - - - name: Test Image - if: steps.should-run.outputs.result == 'true' - run: |- - docker buildx build \ - --builder ${{ steps.buildx.outputs.name }} \ - --platform linux/amd64,linux/arm64 \ - --target superchain \ - --build-arg BUILD_TIMESTAMP="${{ steps.build-time.outputs.value }}" \ - --build-arg COMMIT_ID='${{ github.sha }}' \ - --build-arg DEBIAN_VERSION=${{ matrix.debian }} \ - --build-arg NODE_MAJOR_VERSION=${{ matrix.node }} \ - -f superchain/Dockerfile \ - . - - # Re-authenticate to ECR Public, this time with image-push permissions - - name: Federate with AWS role for ECR Public push - if: steps.should-run.outputs.result == 'true' && github.event_name == 'push' && (github.ref == 'refs/heads/release' || github.ref == 'refs/heads/main') - uses: aws-actions/configure-aws-credentials@v4 - with: - aws-region: us-east-1 - role-to-assume: ${{ secrets.AWS_ROLE_TO_ASSUME_FOR_ECR_PUBLIC_PUSH }} - role-session-name: GHA_aws-jsii_docker-images-PUSH - - name: Authenticate with ECR Public for Push - if: steps.should-run.outputs.result == 'true' && github.event_name == 'push' && (github.ref == 'refs/heads/release' || github.ref == 'refs/heads/main') - uses: aws-actions/amazon-ecr-login@v2 - with: - registry-type: public - - # Only when puhsing to main/release from now on - - name: Publish (nightly) - if: steps.should-run.outputs.result == 'true' && github.event_name == 'push' && github.ref == 'refs/heads/main' - # NOTE BELOW: The `--tag` flags can be provided multiple times... we use that capability... - run: |- - # If the current version is the default version, also tag this with the unqualified ':nightly' label - if [[ "${{ matrix.node }}" == "$DEFAULT_NODE_MAJOR_VERSION" ]]; then - docker buildx build \ - --builder ${{ steps.buildx.outputs.name }} \ - --platform linux/amd64,linux/arm64 \ - --target superchain \ - --push \ - --build-arg BUILD_TIMESTAMP="${{ steps.build-time.outputs.value }}" \ - --build-arg COMMIT_ID='${{ github.sha }}' \ - --build-arg DEBIAN_VERSION=${{ matrix.debian }} \ - --build-arg NODE_MAJOR_VERSION=${{ matrix.node }} \ - --tag "${{ secrets.ECR_PUBLIC_REGISTRY }}:1-${{ matrix.debian }}-slim-nightly" \ - --tag "${{ secrets.ECR_PUBLIC_REGISTRY }}:1-${{ matrix.debian }}-slim-node${{ matrix.node }}-nightly" \ - --tag "jsii/superchain:1-${{ matrix.debian }}-slim-nightly" \ - --tag "jsii/superchain:1-${{ matrix.debian }}-slim-node${{ matrix.node }}-nightly" \ - -f superchain/Dockerfile \ - . - else - docker buildx build \ - --builder ${{ steps.buildx.outputs.name }} \ - --platform linux/amd64,linux/arm64 \ - --target superchain \ - --push \ - --build-arg BUILD_TIMESTAMP="${{ steps.build-time.outputs.value }}" \ - --build-arg COMMIT_ID='${{ github.sha }}' \ - --build-arg DEBIAN_VERSION=${{ matrix.debian }} \ - --build-arg NODE_MAJOR_VERSION=${{ matrix.node }} \ - --tag "${{ secrets.ECR_PUBLIC_REGISTRY }}:1-${{ matrix.debian }}-slim-node${{ matrix.node }}-nightly" \ - --tag "jsii/superchain:1-${{ matrix.debian }}-slim-node${{ matrix.node }}-nightly" \ - -f superchain/Dockerfile \ - . - fi - - - name: Update README (nightly) - if: steps.should-run.outputs.result == 'true' && github.event_name == 'push' && github.ref == 'refs/heads/main' - uses: peter-evans/dockerhub-description@v4 - with: - username: ${{ steps.credentials.outputs.username }} - password: ${{ steps.credentials.outputs.password }} - repository: jsii/superchain - readme-filepath: ./superchain/README.md - - - name: Publish (latest) - if: steps.should-run.outputs.result == 'true' && github.event_name == 'push' && github.ref == 'refs/heads/release' - # NOTE BELOW: The `--tag` flags can be provided multiple times... we use that capability... - run: |- - # If the current version is the default version, also tag this with the unqualified ':1-*' label - if [[ "${{ matrix.node }}" == "$DEFAULT_NODE_MAJOR_VERSION" ]]; then - docker buildx build \ - --builder ${{ steps.buildx.outputs.name }} \ - --platform linux/amd64,linux/arm64 \ - --target superchain \ - --push \ - --build-arg BUILD_TIMESTAMP="${{ steps.build-time.outputs.value }}" \ - --build-arg COMMIT_ID='${{ github.sha }}' \ - --build-arg DEBIAN_VERSION=${{ matrix.debian }} \ - --build-arg NODE_MAJOR_VERSION=${{ matrix.node }} \ - --tag "${{ secrets.ECR_PUBLIC_REGISTRY }}:1-${{ matrix.debian }}-slim" \ - --tag "${{ secrets.ECR_PUBLIC_REGISTRY }}:1-${{ matrix.debian }}-slim-node${{ matrix.node }}" \ - --tag "jsii/superchain:1-${{ matrix.debian }}-slim" \ - --tag "jsii/superchain:1-${{ matrix.debian }}-slim-node${{ matrix.node }}" \ - -f superchain/Dockerfile \ - . - else - docker buildx build \ - --builder ${{ steps.buildx.outputs.name }} \ - --platform linux/amd64,linux/arm64 \ - --target superchain \ - --push \ - --build-arg BUILD_TIMESTAMP="${{ steps.build-time.outputs.value }}" \ - --build-arg COMMIT_ID='${{ github.sha }}' \ - --build-arg DEBIAN_VERSION=${{ matrix.debian }} \ - --build-arg NODE_MAJOR_VERSION=${{ matrix.node }} \ - --tag "${{ secrets.ECR_PUBLIC_REGISTRY }}:1-${{ matrix.debian }}-slim-node${{ matrix.node }}" \ - --tag "jsii/superchain:1-${{ matrix.debian }}-slim-node${{ matrix.node }}" \ - -f superchain/Dockerfile \ - . - fi - - done: - name: 'Done' - runs-on: ['ubuntu-latest'] - needs: ['superchain'] - steps: - # This is just a join target to simplify branch protection settings... - - name: 'All done' - run: |- - echo "All done!" diff --git a/.mergify/config.yml b/.mergify/config.yml index da0c43aa02..a87c95201c 100644 --- a/.mergify/config.yml +++ b/.mergify/config.yml @@ -2,7 +2,6 @@ queue_rules: - name: default-squash conditions: - - status-success~=^jsii/superchain - status-success=Unit Tests - status-success=Integration test (jsii-pacmak) commit_message_template: |- @@ -13,7 +12,6 @@ queue_rules: - name: default-merge conditions: - - status-success~=^jsii/superchain - status-success=Unit Tests - status-success=Integration test (jsii-pacmak) commit_message_template: |- @@ -49,8 +47,6 @@ pull_request_rules: - '#review-requested=0' - '#changes-requested-reviews-by=0' - status-success=Validate PR Title - # Docker image validation - - status-success~=^Done$ - status-success=Unit Tests - status-success=Integration test (jsii-pacmak) @@ -76,8 +72,6 @@ pull_request_rules: - '#review-requested=0' - '#changes-requested-reviews-by=0' - status-success=Validate PR Title - # Docker image validation - - status-success~=^jsii/superchain - status-success=Unit Tests - status-success=Integration test (jsii-pacmak) @@ -103,8 +97,6 @@ pull_request_rules: - '#review-requested=0' - '#changes-requested-reviews-by=0' - status-success=Validate PR Title - # Docker image validation - - status-success~=^jsii/superchain - status-success=Unit Tests - status-success=Integration test (jsii-pacmak) diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md index b06593f926..f18444c460 100644 --- a/CONTRIBUTING.md +++ b/CONTRIBUTING.md @@ -17,25 +17,9 @@ will need a number of tools. We have built a Docker image with all the required tools, which we are using for our own CI/CD: the ["superchain" image][superchain] from. -[superchain]: https://github.com/aws/jsii/blob/main/superchain/Dockerfile +[superchain]: https://github.com/aws/jsii-superchain -The image can be built for local usage, too: - -```console -IMAGE=superchain -docker build -t ${IMAGE} -f superchain/Dockerfile . -``` - -In order to get an interactive shell within a Docker container using the -*superchain* image you just built: - -```console -cd jsii # go to the root of the jsii repo -docker run --rm --net=host -it -v $PWD:$PWD -w $PWD ${IMAGE} -``` - -In the shell that pops up, the `npm run` commands in the following sections must -be executed. +Please see the superchain repo for usage instructions. ### Alternative: Manually install the toolchain diff --git a/gh-pages/content/specification/5-new-language-intake.md b/gh-pages/content/specification/5-new-language-intake.md index 218399e58b..37983f56b5 100644 --- a/gh-pages/content/specification/5-new-language-intake.md +++ b/gh-pages/content/specification/5-new-language-intake.md @@ -65,7 +65,7 @@ on this to build artifacts for any of the supported languages. In addition to this, standardized _Amazon CodePipeline_ actions need to be developed in order to support publishing to the relevant idiomatic package managers. -[`public.ecr.aws/jsii/superchain`]: https://github.com/aws/jsii/tree/main/superchain +[`public.ecr.aws/jsii/superchain`]: https://github.com/aws/jsii-superchain ## Compliance Tests diff --git a/gh-pages/content/user-guides/language-support/index.md b/gh-pages/content/user-guides/language-support/index.md index 8ed965c1c1..771f675e18 100644 --- a/gh-pages/content/user-guides/language-support/index.md +++ b/gh-pages/content/user-guides/language-support/index.md @@ -161,7 +161,7 @@ declared _Generally Available_. At this point, breaking changes are no longer po [`jsii-pacmak`]: ../../packages/jsii-pacmak [`jsii-rosetta`]: https://github.com/aws/jsii-rosetta [standard compliance suite]: ../../specification/4-standard-compliance-suite.md -[`public.ecr.aws/jsii/superchain`]: ../../superchain +[`public.ecr.aws/jsii/superchain`]: https://github.com/aws/jsii-superchain [`aws-delivlib`]: https://github.com/awslabs/aws-delivlib [aws cdk]: https://github.com/aws/aws-cdk [semantic versioning]: https://semver.org diff --git a/superchain/.dockerignore b/superchain/.dockerignore deleted file mode 100644 index 5a72d66cb1..0000000000 --- a/superchain/.dockerignore +++ /dev/null @@ -1,2 +0,0 @@ -/.dockerignore -/build-local.sh diff --git a/superchain/Dockerfile b/superchain/Dockerfile deleted file mode 100644 index e18324db64..0000000000 --- a/superchain/Dockerfile +++ /dev/null @@ -1,444 +0,0 @@ -######################################################################################################################## -# Introduction -######################################################################################################################## -# This is a multi-stage build, which eventually results in a squashed image. -# The image intended for release/use is the one obtained using `docker build --target=superchain ...`. -# -# Stages are as follows -# 1. [bindist] Prepare a bunch of binary distributions -# 2. [staging] Prepare the superchain staging image -# 3. [superchain] Squash into a single layer -# 4. [test] Run tests on the superchain stage -# -# Multi-stage build allows several of these steps to run in parallel up to some point. It makes the build cache usage -# more efficient, and allows us to run cross-architecture builds in the most efficient possible manner, by running the -# "platform-independent" elements within the build platform, which does not require any kind of emulation. - -ARG DEBIAN_VERSION="bookworm" - -######################################################################################################################## -# NOTE: This uses public.ecr.aws/docker/library/debian instead of public.ecr.aws/debian/debian (which would be -# preferred) due to an ECR Public issue currently blocking the use of the later. -# -# See: https://github.com/aws/containers-roadmap/issues/2023 -######################################################################################################################## - -######################################################################################################################## -# Prepare install images of "manual" binary distributions (runs on BUILD platform for speed) -######################################################################################################################## -FROM --platform=${BUILDPLATFORM} public.ecr.aws/docker/library/debian:${DEBIAN_VERSION}-slim as bindist - -# Build & target platforms, they are provided by buildx and will look like "linux/amd64" or "linux/arm64" -ARG BUILDPLATFORM -ARG TARGETPLATFORM - -# Setting defaults for backwards compatibility with "docker build" (see https://github.com/docker/buildx/issues/510) -ENV BUILDPLATFORM=${BUILDPLATFORM:-linux/amd64} \ - TARGETPLATFORM=${TARGETPLATFORM:-linux/amd64} - -ARG DEBIAN_VERSION="bookworm" - -# We require a couple of tools to be available in order to work here... -RUN echo "deb http://deb.debian.org/debian ${DEBIAN_VERSION}-backports main" \ - > "/etc/apt/sources.list.d/${DEBIAN_VERSION}-backports.list" \ - && apt-get update \ - && apt-get install -y gpg tar zsh \ - # We need a "recent" (>= 7.71) version of curl for --retry-all-errors, so we get it from backports... - && apt-get install -y -t "${DEBIAN_VERSION}-backports" curl - -# We'll be using zsh substitutions, so ensuring this is the shell we use -SHELL ["/bin/zsh", "-c"] - -# Prepare maven binary distribution -ARG M2_VERSION="3.9.4" -ENV M2_DISTRO="https://downloads.apache.org/maven/maven-3" -RUN set -eo pipefail \ - && curl -fSsL "${M2_DISTRO}/${M2_VERSION}/binaries/apache-maven-${M2_VERSION}-bin.tar.gz" \ - -o /tmp/apache-maven.tar.gz \ - && curl -fSsL "${M2_DISTRO}/${M2_VERSION}/binaries/apache-maven-${M2_VERSION}-bin.tar.gz.asc" \ - -o /tmp/apache-maven.tar.gz.asc \ - && mkdir -p /tmp/gpg-maven && chmod go-rwx /tmp/gpg-maven \ - && curl -fSsL "https://downloads.apache.org/maven/KEYS" | gpg --homedir /tmp/gpg-maven --import \ - && gpg --homedir /tmp/gpg-maven --verify /tmp/apache-maven.tar.gz.asc /tmp/apache-maven.tar.gz \ - && mkdir -p /opt/apache/maven \ - && tar xzf /tmp/apache-maven.tar.gz -C /opt/apache/maven --strip-components=1 - -# Prepare .NET Core distribution -ARG DOTNET_CHANNEL="6.0" -ENV DOTNET_FEED="https://dotnetcli.blob.core.windows.net/dotnet" -RUN DOTNET_VERSION=$(curl -fSsL "${DOTNET_FEED}/Sdk/${DOTNET_CHANNEL}/latest.version") \ - && DOTNET_ASSET="dotnet-sdk-${DOTNET_VERSION}-linux-${${TARGETPLATFORM#linux/}/amd64/x64}.tar.gz" \ - && curl -fSsL "${DOTNET_FEED}/Sdk/${DOTNET_VERSION}/${DOTNET_ASSET}" -o /tmp/dotnet.tar.gz \ - && mkdir -p /opt/microsoft/dotnet \ - && tar zxf /tmp/dotnet.tar.gz -C /opt/microsoft/dotnet - -# Prepare PowerShell LTS distribution -ENV POWERSHELL_RELEASES="https://github.com/PowerShell/PowerShell/releases" -RUN POWERSHELL_RELEASE=$(curl -X GET -fSsIL "https://aka.ms/powershell-release?tag=lts" -o /dev/null \ - --retry 5 --retry-all-errors -w %{url_effective}) \ - && POWERSHELL_VERSION=${POWERSHELL_RELEASE#${POWERSHELL_RELEASES}/tag/v} \ - && ASSET="powershell-${POWERSHELL_VERSION}-linux-${${TARGETPLATFORM#linux/}/amd64/x64}.tar.gz" \ - && curl -fSsL "${POWERSHELL_RELEASES}/download/v${POWERSHELL_VERSION}/${ASSET}" --retry 5 --retry-all-errors \ - -o /tmp/powershell.tar.gz \ - && mkdir -p /opt/microsoft/powershell \ - && tar zxf /tmp/powershell.tar.gz -C /opt/microsoft/powershell \ - && chmod +x /opt/microsoft/powershell/pwsh - -# Prepare Go distribution -ARG GO_VERSION="1.18.5" -RUN curl -fSsL "https://golang.org/dl/go${GO_VERSION}.linux-${TARGETPLATFORM#linux/}.tar.gz" -o /tmp/go.tar.gz \ - && mkdir -p /opt/golang/go \ - && tar -xzf /tmp/go.tar.gz -C /opt/golang/go --strip-components=1 - -######################################################################################################################## -# Set up the image -######################################################################################################################## -FROM public.ecr.aws/docker/library/debian:${DEBIAN_VERSION}-slim as staging - -# Build & target platforms, they are provided by buildx and will look like "linux/amd64" or "linux/arm64" -ARG BUILDPLATFORM -ARG TARGETPLATFORM - -# Setting defaults for backwards compatibility with "docker build" (see https://github.com/docker/buildx/issues/510) -ENV BUILDPLATFORM=${BUILDPLATFORM:-linux/amd64} \ - TARGETPLATFORM=${TARGETPLATFORM:-linux/amd64} - -ARG DEBIAN_VERSION="bookworm" - -SHELL ["/bin/bash", "-c"] - -# Set locale and some other interesting environment variables -ENV LANG="C.UTF-8" \ - LC_ALL="C.UTF-8" \ - CHARSET="UTF-8" \ - \ - DOTNET_RUNNING_IN_CONTAINER="true" \ - DOTNET_USE_POLLING_FILE_WATCHER="true" \ - NUGET_XMLDOC_MODE="skip" \ - \ - M2_HOME="/opt/apache/maven" \ - M2="/opt/apache/maven/bin" \ - \ - GOROOT="/opt/golang/go" - -# Installing the system dependencies we need... -RUN apt-get update \ - && apt-get -y upgrade \ - && apt-get -y install --no-install-recommends \ - apt-transport-https \ - build-essential \ - ca-certificates \ - curl \ - dirmngr \ - git \ - gnupg \ - gzip \ - libffi-dev \ - libicu-dev \ - libssl-dev \ - openssh-client \ - openssl \ - rsync \ - sudo \ - unzip \ - zip \ - acl \ - && rm -rf /var/lib/apt/lists/* - -# Install mono -COPY superchain/gpg/mono.asc /tmp/mono.asc -RUN apt-key add /tmp/mono.asc && rm /tmp/mono.asc \ - # Mono only provides a Debian Buster (10) distribution point, but it works with subsequent debians, too... - && echo "deb https://download.mono-project.com/repo/debian stable-buster main" \ - > /etc/apt/sources.list.d/mono-official-stable.list \ - && apt-get update \ - && apt-get -y install mono-devel \ - && rm -rf /var/lib/apt/lists/* - -# Install Rust (required for https://pypi.org/project/cryptography/ in certain circumstances... like ARM64 arch) -ENV RUSTUP_HOME=/usr/local/rustup \ - CARGO_HOME=/usr/local/cargo -RUN set -eo pipefail \ - && curl -fSsL "https://sh.rustup.rs" | sh -s -- -y --no-modify-path --profile=minimal \ - && echo "source ${CARGO_HOME}/env" >> /etc/profile.d/cargo.sh \ - && chmod -R a+rw ${CARGO_HOME} -ENV PATH=$PATH:${CARGO_HOME}/bin - -# Install Python 3 and pipx -# Starting in 'bookworm', 'pip install' needs special coercing (and 'apt-get install pipx' would be recommended) -# but that flag is not recognized yet in older distros. -RUN apt-get update \ - && apt-get -y install python3-dev python3-pip python3-venv \ - && coercepip='--break-system-packages' \ - && if [[ ${DEBIAN_VERSION} == "buster" || ${DEBIAN_VERSION} == "bullseye" ]]; then coercepip=''; fi \ - && python3 -m pip install ${coercepip} pipx "pip>=23.3.1" "setuptools>=68.0.0" "wheel>=0.41.3" \ - && rm -rf /var/lib/apt/lists/* - -# Install Python tools globally using pipx (install globally) -ENV PIPX_HOME=/opt/pipx -ENV PIPX_BIN_DIR=/usr/local/bin -RUN pipx install black \ - && pipx install twine \ - && pipx install aws-sam-cli - -# Install AWS CLI v2 -ENV AWS_CLI_V2_URL='https://awscli.amazonaws.com/awscli-exe-linux-x86_64.zip' -RUN curl "${AWS_CLI_V2_URL}" -o "/tmp/awscliv2.zip" \ - && unzip /tmp/awscliv2.zip -d /tmp/awscliv2 \ - && /tmp/awscliv2/aws/install -b /usr/local/bin --update \ - && rm -rf /tmp/awscliv2* - - -# Install JDK8 (Amazon Corretto 8) -COPY superchain/gpg/corretto.asc /tmp/corretto.asc -RUN apt-key add /tmp/corretto.asc && rm /tmp/corretto.asc \ - && echo "deb https://apt.corretto.aws stable main" > /etc/apt/sources.list.d/amazon-corretto.list \ - && apt-get update \ - && mkdir -p /usr/share/man/man1 \ - && apt-get -y install java-20-amazon-corretto-jdk \ - && rm -rf /usr/share/man/man1 \ - && rm -rf /var/lib/apt/lists/* - -# Install Docker -COPY superchain/gpg/docker.asc /tmp/docker.asc -RUN apt-key add /tmp/docker.asc && rm /tmp/docker.asc \ - && echo "deb https://download.docker.com/linux/debian ${DEBIAN_VERSION} stable" > /etc/apt/sources.list.d/docker.list \ - && apt-get update \ - && apt-get -y install docker-ce docker-ce-cli containerd.io \ - && rm -rf /var/lib/apt/lists/* -VOLUME /var/lib/docker - -# Install GitHub CLI -ARG GITHUB_CLI_VERSION="1.13.1" -RUN BASE="https://github.com/cli/cli/releases/download" \ - && echo "${BASE}/v${GITHUB_CLI_VERSION}/gh_${GITHUB_CLI_VERSION}_linux_${TARGETPLATFORM#linux/}.deb" \ - && curl -fSsL "${BASE}/v${GITHUB_CLI_VERSION}/gh_${GITHUB_CLI_VERSION}_linux_${TARGETPLATFORM#linux/}.deb" \ - -o /tmp/gh.deb \ - && apt-get update \ - && apt-get -y install /tmp/gh.deb \ - && rm /tmp/gh.deb \ - && rm -rf /var/lib/apt/lists/* - -# Install .NET Core and PowerShell -COPY --from=bindist /opt/microsoft/dotnet /opt/microsoft/dotnet -RUN ln -s /opt/microsoft/dotnet/dotnet /usr/bin/dotnet -COPY --from=bindist /opt/microsoft/powershell /opt/microsoft/powershell -RUN ln -s /opt/microsoft/powershell/pwsh /usr/bin/pwsh - -# Install Maven -COPY --from=bindist /opt/apache/maven ${M2_HOME} -COPY superchain/m2-settings.xml /root/.m2/settings.xml - -# Install Go -COPY --from=bindist /opt/golang/go ${GOROOT} - -# 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="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 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.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 \ - && apt-get -y install nodejs yarn \ - && rm -rf /var/lib/apt/lists/* - - -# Install Amazon SSM agent (allows debugging of builds via `codebuild-breakpoint`, https://go.aws/3TVW7vL) -RUN apt-get update \ - && apt-get -y install --no-install-recommends curl \ - && curl -fSsL "https://s3.amazonaws.com/ec2-downloads-windows/SSMAgent/latest/debian_${TARGETPLATFORM#linux/}/amazon-ssm-agent.deb"\ - -o /tmp/amazon-ssm-agent.deb \ - && dpkg -i /tmp/amazon-ssm-agent.deb \ - && systemctl enable amazon-ssm-agent \ - && rm -rf /var/lib/apt/lists/* -COPY --chown=superchain:superchain superchain/amazon-ssm-agent.json /etc/amazon/ssm/amazon-ssm-agent.json - - -# Install some configuration -COPY superchain/ssh_config /root/.ssh/config -RUN chmod 600 /root/.ssh/config - -# Create the image's non-root user, and enable no-password sudo -RUN groupadd --gid 1001 superchain \ - && useradd --shell /bin/bash --comment "Docker User" --uid 1001 --gid 1001 --no-log-init --groups sudo superchain \ - && echo "%sudo ALL = (ALL:ALL) NOPASSWD: ALL" >> /etc/sudoers.d/nopasswd \ - && echo "superchain ALL = (ALL:ALL) NOPASSWD: ALL" >> /etc/sudoers.d/nopasswd \ - && chmod 0440 /etc/sudoers.d/nopasswd -COPY --chown=superchain:superchain superchain/m2-settings.xml /home/superchain/.m2/settings.xml -COPY --chown=superchain:superchain superchain/ssh_config /home/superchain/.ssh/config -RUN chmod 600 /home/superchain/.ssh/config - -# Create the attributions document -RUN RUST_DOCS="${RUSTUP_HOME}/toolchains/$(rustup show active-toolchain | cut -d' ' -f 1)/share/doc" \ - && RUSTUP_VERSION=$(rustup --version 2>/dev/null | cut -d' ' -f2) \ - && echo "This public.ecr.aws/jsii/superchain image includes the following third-party software/licensing:" > /NOTICE \ - && echo "" >> /NOTICE \ - # Start with the packages that didn't come from "apt-get" or don't have a copyright file - && echo "################################################################################" >> /NOTICE \ - && echo "docker-ce:" >> /NOTICE \ - && echo "" >> /NOTICE \ - && echo "------------------------------------ NOTICE ------------------------------------" >> /NOTICE \ - && curl -fSsL "https://github.com/docker/cli/raw/master/NOTICE" >> /NOTICE \ - && echo "" >> /NOTICE \ - && echo "------------------------------------ LICENSE ------------------------------------" >> /NOTICE \ - && curl -fSsL "https://github.com/docker/cli/raw/master/LICENSE" >> /NOTICE \ - && echo "################################################################################" >> /NOTICE \ - && echo "docker-ce-cli:" >> /NOTICE \ - && echo "" >> /NOTICE \ - && echo "------------------------------------ NOTICE ------------------------------------" >> /NOTICE \ - && curl -fSsL "https://github.com/moby/moby/raw/master/NOTICE" >> /NOTICE \ - && echo "" >> /NOTICE \ - && echo "------------------------------------ LICENSE ------------------------------------" >> /NOTICE \ - && curl -fSsL "https://github.com/moby/moby/raw/master/LICENSE" >> /NOTICE \ - && echo "################################################################################" >> /NOTICE \ - && echo "dotnet:" >> /NOTICE \ - && echo "" >> /NOTICE \ - && echo "------------------------------------ LICENSE ------------------------------------" >> /NOTICE \ - && cat /opt/microsoft/dotnet/LICENSE.txt >> /NOTICE \ - && echo "" >> /NOTICE \ - && echo "------------------------------------ THIRD-PARTY NOTICES ------------------------------------" >> /NOTICE \ - && cat /opt/microsoft/dotnet/ThirdPartyNotices.txt >> /NOTICE \ - && echo "################################################################################" >> /NOTICE \ - && echo "gh:" >> /NOTICE \ - && curl -fSsL "https://github.com/cli/cli/raw/trunk/LICENSE" >> /NOTICE \ - && echo "################################################################################" >> /NOTICE \ - && echo "go:" >> /NOTICE \ - && echo "" >> /NOTICE \ - && echo "------------------------------------ LICENSE ------------------------------------" >> /NOTICE \ - && cat ${GOROOT}/LICENSE >> /NOTICE \ - && echo "" >> /NOTICE \ - && echo "------------------------------------ PATENTS ------------------------------------" >> /NOTICE \ - && cat ${GOROOT}/PATENTS >> /NOTICE \ - && echo "################################################################################" >> /NOTICE \ - && echo "java-20-amazon-corretto-jdk:" >> /NOTICE \ - && echo "" >> /NOTICE \ - && echo "------------------------------------ LICENSE ------------------------------------" >> /NOTICE \ - && cat /usr/lib/jvm/java-20-amazon-corretto/LICENSE >> /NOTICE \ - && echo "" >> /NOTICE \ - && echo "------------------------------------ THIRD-PARTY NOTICES ------------------------------------" >> /NOTICE \ - && cat /usr/lib/jvm/java-20-amazon-corretto/ADDITIONAL_LICENSE_INFO >> /NOTICE \ - && echo "################################################################################" >> /NOTICE \ - && echo "maven:" >> /NOTICE \ - && echo "" >> /NOTICE \ - && echo "------------------------------------ NOTICE ------------------------------------" >> /NOTICE \ - && cat ${M2_HOME}/NOTICE >> /NOTICE \ - && echo "" >> /NOTICE \ - && echo "------------------------------------ LICENSE ------------------------------------" >> /NOTICE \ - && cat ${M2_HOME}/LICENSE >> /NOTICE \ - && echo "################################################################################" >> /NOTICE \ - && echo "cargo:" >> /NOTICE \ - && echo "" >> /NOTICE \ - && echo "------------------------------------ LICENSE (APACHE) ------------------------------------" >> /NOTICE \ - && cat ${RUST_DOCS}/cargo/LICENSE-APACHE >> /NOTICE \ - && echo "" >> /NOTICE \ - && echo "------------------------------------ LICENSE (MIT) ------------------------------------" >> /NOTICE \ - && cat ${RUST_DOCS}/cargo/LICENSE-MIT >> /NOTICE \ - && echo "" >> /NOTICE \ - && echo "------------------------------------ THIRD-PARTY LICENSES ------------------------------------" >> /NOTICE \ - && cat ${RUST_DOCS}/cargo/LICENSE-THIRD-PARTY >> /NOTICE \ - && echo "################################################################################" >> /NOTICE \ - && echo "rust:" >> /NOTICE \ - && cat ${RUST_DOCS}/rust/COPYRIGHT >> /NOTICE \ - && echo "################################################################################" >> /NOTICE \ - && echo "rustup:" >> /NOTICE \ - && echo "" >> /NOTICE \ - && echo "------------------------------------ LICENSE (APACHE) ------------------------------------" >> /NOTICE \ - && curl -fSsL "https://github.com/rust-lang/rustup/raw/${RUSTUP_VERSION}/LICENSE-APACHE" >> /NOTICE \ - && echo "" >> /NOTICE \ - && echo "------------------------------------ LICENSE (MIT) ------------------------------------" >> /NOTICE \ - && curl -fSsL "https://github.com/rust-lang/rustup/raw/${RUSTUP_VERSION}/LICENSE-MIT" >> /NOTICE \ - && echo "################################################################################" >> /NOTICE \ - && echo "powershell:" >> /NOTICE \ - && echo "" >> /NOTICE \ - && echo "------------------------------------ LICENSE ------------------------------------" >> /NOTICE \ - && cat /opt/microsoft/powershell/LICENSE.txt >> /NOTICE \ - && echo "" >> /NOTICE \ - && echo "------------------------------------ THIRD-PARTY NOTICES ------------------------------------" >> /NOTICE \ - && cat /opt/microsoft/powershell/ThirdPartyNotices.txt >> /NOTICE \ - && echo "################################################################################" >> /NOTICE \ - # Clean up - && unset RUST_DOCS RUSTUP_VERSION \ - # And then aggregate everything that came from dpkg which ships a copyright file - && for PKG in $(dpkg-query --show --showformat='${package}\n'); do \ - if [[ -f "/usr/share/doc/${PKG}/copyright" ]]; then \ - echo "${PKG}:" >> /NOTICE \ - && cat /usr/share/doc/${PKG}/copyright >> /NOTICE \ - && echo '################################################################################' >> /NOTICE \ - ;fi \ - ;done - -# Add the source used to build this Docker image (to facilitate re-builds, forensics) -# Keep this at the end for max caching. -COPY superchain /docker-source - -CMD ["/bin/bash"] - -######################################################################################################################## -# Creating squashed image -######################################################################################################################## -FROM scratch as superchain -# Set locale and some other interesting environment variables -ENV LANG="C.UTF-8" \ - LC_ALL="C.UTF-8" \ - CHARSET="UTF-8" \ - \ - JAVA_HOME="/usr/lib/jvm/java-20-amazon-corretto" \ - \ - DOTNET_CLI_TELEMETRY_OPTOUT="true" \ - DOTNET_RUNNING_IN_CONTAINER="true" \ - DOTNET_NOLOGO="true" \ - DOTNET_USE_POLLING_FILE_WATCHER="true" \ - NUGET_XMLDOC_MODE="skip" \ - \ - M2_HOME="/opt/apache/maven" \ - M2="/opt/apache/maven/bin" \ - MAVEN_OPTS="-Xms256m -Xmx512m" \ - \ - GOROOT="/opt/golang/go" \ - RUSTUP_HOME="/usr/local/rustup" \ - CARGO_HOME="/usr/local/cargo" -ENV PATH="${PATH}:${CARGO_HOME}/bin:${GOROOT}/bin:${M2}" - -COPY --from=staging / / -VOLUME /var/lib/docker - -## Image Metadata -ARG BUILD_TIMESTAMP -ARG COMMIT_ID -LABEL org.opencontainers.image.created=${BUILD_TIMESTAMP} \ - org.opencontainers.image.title="jsii/superchain" \ - org.opencontainers.image.description="An image to build cross-language artifacts with AWS jsii" \ - org.opencontainers.image.url="https://github.com/aws/jsii/tree/main/superchain" \ - org.opencontainers.image.source="https://github.com/aws/jsii.git" \ - org.opencontainers.image.revision=$COMMIT_ID \ - org.opencontainers.image.authors="Amazon Web Services (https://aws.amazon.com)" - -USER superchain:superchain - -CMD ["/bin/bash"] - -######################################################################################################################## -# Running tests -######################################################################################################################## -FROM superchain as test -ENV CI=true -COPY --chown=superchain:superchain . /tmp/source -VOLUME /var/lib/docker -WORKDIR /tmp/source -# Make sure we start fresh (symlinks from outside the build may cause issues, e.g: python venvs) -RUN git clean -fqdx -# Install all dependencies again -RUN yarn install --frozen-lockfile -# Build the code -RUN yarn build -# Test the code -RUN yarn test diff --git a/superchain/README.md b/superchain/README.md deleted file mode 100644 index b0289df138..0000000000 --- a/superchain/README.md +++ /dev/null @@ -1,137 +0,0 @@ -# Superchain - -A [`debian`][debian]-based Docker image bundling all the SDKs and tools -required in order to package [jsii] projects in all supported languages. - -[debian]: https://gallery.ecr.aws/debian/debian -[jsii]: https://github.com/aws/jsii - -## Recommended image - -We recommend the following image for most users. -See [Image tags](#current-image-tags) for further details. - -```text -public.ecr.aws/jsii/superchain:1-bookworm-slim -``` - -### Current image tags - -The following image tags are actively maintained and updated regularly. - -```text -public.ecr.aws/jsii/superchain: -``` - -| Image tag | Debian | Node | Python | -| ------------------------ | --------------- | ---- | ------ | -| `1-bookworm-slim` | `12` `bookworm` | `18` | `3.11` | -| `1-bookworm-slim-node18` | `12` `bookworm` | `18` | `3.11` | -| `1-bookworm-slim-node20` | `12` `bookworm` | `20` | `3.11` | -| `1-bookworm-slim-node22` | `12` `bookworm` | `22` | `3.11` | -| `1-bullseye-slim-node20` | `11` `bullseye` | `20` | `3.9` | -| `1-bullseye-slim-node22` | `11` `bullseye` | `22` | `3.9` | - -Any other tags should be *considered* deprecated or in the case of `nightly` images *experimental*. - -## Included Language SDKs - -| 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`: - -```console -docker build . -f superchain/Dockerfile -t jsii/superchain:local -``` - -In case the tests fail, skip the tests and inspect the image manually: - -```console -docker build . -f superchain/Dockerfile -t jsii/superchain:local --target=superchain -``` - -### NodeJS and NPM - -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 -``` - -### Image tags - -Image tags are named using the following pattern: - -```text -public.ecr.aws/jsii/superchain:-(-node)(-nightly) -``` - -- `` is the major line of the jsii toolchain (must be `1`) -- `` is the base image tag, currently supported base images are -- `` 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 - -Generally only actively versions that are actively supported by upstream projects are maintained in superchain. - -### Debian - -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. - -### Node - -We publish images variants for Node versions that are Current or LTS. -We include the npm version that ships with the version of Node. - -### 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 - -The following tools & utilities are available for your convinience. -Versions are generally the latest available for the respective Debian distribution. - -| Tool / Utility | Version | -| --------------- | -------------------------- | -| `aws` | `>= 2.11.17` | -| `bundler` | `>= 1.17.3` and `>= 2.1.4` | -| `docker` | `>= 24.0.7-ce` | -| `git` | `>= 2.30.2` | -| `make` | `>= 4.3` | -| `maven` | `>= 6.4.15` | -| `openssl` | `>= 1.1.1w` | -| `rsync` | `>= 3.2.3` | -| `yarn` | `>= 1.22.19` | -| `zip` & `unzip` | `>= 6.0-19` | -| `gh` | `>= 1.13.1` | -| `sam` | `>= 1.102.0` | - -## License - -As with all Docker images, these also contain software which may be distributed -under various licenses (such as Bash, etc from the base distribution, along with -any direct or indirect dependencies of the primary software being contained). - -As for any pre-built image usage, it is the image user's responsibility to -ensure that any use of this image complies with any relevant licenses for all -software contained within. - -For more information, refer to the `/NOTICE` file that is present in the Docker -image. diff --git a/superchain/amazon-ssm-agent.json b/superchain/amazon-ssm-agent.json deleted file mode 100644 index acb8c83e1d..0000000000 --- a/superchain/amazon-ssm-agent.json +++ /dev/null @@ -1,45 +0,0 @@ -{ - "Profile":{ - "ShareCreds" : true, - "ShareProfile" : "" - }, - "Mds": { - "CommandWorkersLimit" : 5, - "StopTimeoutMillis" : 20000, - "Endpoint": "", - "CommandRetryLimit": 15 - }, - "Ssm": { - "Endpoint": "", - "HealthFrequencyMinutes": 5, - "CustomInventoryDefaultLocation" : "", - "AssociationLogsRetentionDurationHours" : 24, - "RunCommandLogsRetentionDurationHours" : 336, - "SessionLogsRetentionDurationHours" : 336 - }, - "Mgs": { - "Region": "", - "Endpoint": "", - "StopTimeoutMillis" : 20000, - "SessionWorkersLimit" : 1000 - }, - "Agent": { - "Region": "", - "OrchestrationRootDir": "", - "ContainerMode": true - }, - "Os": { - "Lang": "en-US", - "Name": "", - "Version": "1" - }, - "S3": { - "Endpoint": "", - "Region": "", - "LogBucket":"", - "LogKey":"" - }, - "Kms": { - "Endpoint": "" - } -} diff --git a/superchain/build-local.sh b/superchain/build-local.sh deleted file mode 100755 index df047db31c..0000000000 --- a/superchain/build-local.sh +++ /dev/null @@ -1,40 +0,0 @@ -#!/bin/bash -set -euo pipefail -scriptdir=$(cd $(dirname $0) && pwd) -cd $scriptdir - -### -# This script can be used to build a jsii/superchain:local image from a locally -# checked out version of the Dockerfile. It is made to build an image as similar -# as possible to what would be built in the CI/CD infrastructure (in that it'll -# include similar labels). -### - -# Obtain the currently checked out commit ID -COMMIT_ID=$(git rev-parse HEAD) - -if [[ ! -z $(git status --short) ]]; then - # IF there are changes or untracked file, note the tree is dirty - COMMIT_ID=${COMMIT_ID}+dirty -else - # Otherwise, note that this was built locally - COMMIT_ID=${COMMIT_ID}+local -fi - -PLATFORM=$(uname -m) -if [[ "${PLATFORM}" == "x86_64" ]]; then - PLATFORM="amd64" -fi - -# Now on to building the image -${DOCKER:-docker} build \ - --target superchain \ - --build-arg BUILDPLATFORM=linux/${PLATFORM} \ - --build-arg TARGETPLATFORM=linux/${PLATFORM} \ - --build-arg DEBIAN_VERSION=${DEBIAN_VERSION:-bookworm} \ - --build-arg BUILD_TIMESTAMP=$(date -u +'%Y-%m-%dT%H:%M:%SZ') \ - --build-arg REGISTRY="docker.io/library" \ - --build-arg COMMIT_ID=${COMMIT_ID} \ - -t "public.ecr.aws/jsii/superchain:1-${DEBIAN_VERSION:-bookworm}-local" \ - -f ${PWD}/Dockerfile \ - .. diff --git a/superchain/gpg/corretto.asc b/superchain/gpg/corretto.asc deleted file mode 100644 index b0198ed751..0000000000 --- a/superchain/gpg/corretto.asc +++ /dev/null @@ -1,30 +0,0 @@ ------BEGIN PGP PUBLIC KEY BLOCK----- -Version: GnuPG v2.0.22 (GNU/Linux) - -mQINBF3pShkBEADJzglehQDFlc1+9VFubVPzpq8ZYtzmJkNjf09scOUzaKZOm3Ar -mPh9Rufk4mB7t1LP4JeHAKAS17ggCHGVxRGXAAQ9Laf8ibX4SiFO3Ehyyl3smuFf -ZhexBnvc7vRc4EUlKqarCQRUlaraDOrmq7WbhXdvCgc4u2uBLwUjAd3PHQUByAZw -lsEQzpQnehNomjrE0pO6ms9AhmpbXlf/yr14EXvlo4lTd8QUdvS+AOCYfrHb9WGO -IEsyyDuzuf2grV/QFpoi0VBhTCyiNYXla2AfCreMGlOCYsjw1nU93OyAqF3SaTOC -o52yrzcb2NpbBDwRXOHNwe1md+DbRwEfkaWr5I91FqRpgEeawqyxY1miJRHduhsz -WTgTMBF/EQfmTspD2YBX/BjNJTrdDXYvACX8slVV/vBnpi+dEpVEK3hh21ij991S -lv8YoFnoC7XP44C7WNpVQpGW9ZWpnjLCvm3DMKW0r3Vfb3XDYhnHI1Q14Pxn0cwf -x1L2RA4doyWd1TRZBFBe2f0vSkZT0YFaibKaKi6AkDIMU/+u+/e3wWbYXqzsSITj -ffMkpMMNSwxbm8JqnsudjuzdEsYAiBUcFMwWysQDcyu63un2OmLKLfKxy19vCpS1 -8mkNy95JuO4jZtu+IiinvSSjlbJmslu3uK3/cTRsWaB7BRtHewE7SugMOwARAQAB -tEhBbWF6b24gU2VydmljZXMgTExDIChBbWF6b24gQ29ycmV0dG8gcmVsZWFzZSkg -PGNvcnJldHRvLXRlYW1AYW1hem9uLmNvbT6JAjEEEwECABsFAl3pShkCGy8FCQlm -AYAFFQgKCQsCHgECF4AACgkQoSJUKrBPJOOJDg/6AqmntaxDWX6qfR++0qwtD9Lp -vgONFvA+9AYQeGt7OX79O/SSPy97Kvn6DYRBdelShTAH60DbXCUs42sIRFqRjmHY -HfIgOkUJjWoJz9oQnY+mzAKbOohCrR+YIvyCegFb0dboDaqSQ4w68+d1is7L84pz -ZB2j0nrQDbFihPmR+epfHkLUGGywuZHCdEFfD8nXMOJeVbgSzf7Vhl8ZrydIkZTI -7aASG5MkDO/GuVpEGQYAnH9h/jzJlfUKndswC6UFcM5Ol07pDPdHVBAi9q1SyxDe -uSS1NgDW7OW7zgpB+4/PrZKKiEP/fBAWa9nFSLwTaMdsoaAuQAmmgbqYfy3XXKK7 -IBaKSnJpQDvNb0vmXJEY3qX2Bfh0p1KCeaQhYwIJi8rPQWC24fiLY9bdCIlkbbPQ -CSNOEq9nUWRg9KbUGmd/PWSkT6Jheyq3BZBF1YPYEt8o/l437HHd08lREqH0sana -Hb72GZTi2RUrNBBp5C1e8MqllXE6RKmri2m0TSBHR5C4ZLII9duyA839dYIA4KGU -nmetZckuRuwHFmd3/YWtMEfn47UedzhVT16z3OvBipHU1BKzLGcvUFXrUKvpJQlh -dNPUQh+wb91EzItjkJ96m+N+81iQdN3yd8cE38NTA8b+Qc7tmTYxwNZxcv16FxLA -y2VhKc09A8RwSI69vDs= -=ZNRH ------END PGP PUBLIC KEY BLOCK----- diff --git a/superchain/gpg/docker.asc b/superchain/gpg/docker.asc deleted file mode 100644 index ee7872e5d0..0000000000 --- a/superchain/gpg/docker.asc +++ /dev/null @@ -1,62 +0,0 @@ ------BEGIN PGP PUBLIC KEY BLOCK----- - -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 -YT90qFF93M3v01BbxP+EIY2/9tiIPbrd -=0YYh ------END PGP PUBLIC KEY BLOCK----- diff --git a/superchain/gpg/mono.asc b/superchain/gpg/mono.asc deleted file mode 100644 index f16d29d34e..0000000000 --- a/superchain/gpg/mono.asc +++ /dev/null @@ -1,42 +0,0 @@ ------BEGIN PGP PUBLIC KEY BLOCK----- - -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 -kHFYv2XsdQ== -=45Mw ------END PGP PUBLIC KEY BLOCK----- diff --git a/superchain/gpg/nodesource.asc b/superchain/gpg/nodesource.asc deleted file mode 100644 index b7637b89f6..0000000000 --- a/superchain/gpg/nodesource.asc +++ /dev/null @@ -1,29 +0,0 @@ ------BEGIN PGP PUBLIC KEY BLOCK----- - -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----- diff --git a/superchain/gpg/yarn.asc b/superchain/gpg/yarn.asc deleted file mode 100644 index 509718b26a..0000000000 --- a/superchain/gpg/yarn.asc +++ /dev/null @@ -1,220 +0,0 @@ ------BEGIN PGP PUBLIC KEY BLOCK----- - -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 -=e4wy ------END PGP PUBLIC KEY BLOCK----- diff --git a/superchain/m2-settings.xml b/superchain/m2-settings.xml deleted file mode 100644 index ce4b25dd0d..0000000000 --- a/superchain/m2-settings.xml +++ /dev/null @@ -1,30 +0,0 @@ - - - - securecentral - - true - - - - - central - https://repo1.maven.org/maven2 - - true - - - - - - central - https://repo1.maven.org/maven2 - - true - - - - - - diff --git a/superchain/ssh_config b/superchain/ssh_config deleted file mode 100644 index 710e275467..0000000000 --- a/superchain/ssh_config +++ /dev/null @@ -1,3 +0,0 @@ -Host * - ConnectTimeout 10 - ConnectionAttempts 10