Skip to content

fix(cli): unnecessary subprocess call on every run #7442

fix(cli): unnecessary subprocess call on every run

fix(cli): unnecessary subprocess call on every run #7442

Workflow file for this run

# ~~ Generated by projen. To modify, edit .projenrc.ts and run "yarn projen".

Check warning on line 1 in .github/workflows/integ.yml

View workflow run for this annotation

GitHub Actions / integ

Workflow execution policy warning (evaluate mode)

On December 2, 2026, GitHub will restrict `pull_request_target` on public repositories by default. To continue allowing the event trigger, configure an Actions policy. Learn more: https://gh.io/securely-using-pull_request_target#default-policy-for-pull_request_target
name: integ
on:
pull_request_target:
branches: []
merge_group: {}
workflow_dispatch: {}
jobs:
determine_env:
runs-on: ubuntu-latest
permissions:
contents: read
outputs:
env_name: ${{ steps.output.outputs.env_name }}
steps:
- name: Start requiring approval
id: start_requiring_approval
run: echo integ-approval > .envname
- name: Skip approval for mergeGroup or PR created from this repo
id: skip_approval_for_mergegroup_or_pr_created_from_this_repo
if: ${{ github.event_name == 'merge_group' || github.event.pull_request.head.repo.full_name == github.repository }}
run: echo no-approval > .envname
- name: Output the value
id: output
run: echo "env_name=$(cat .envname)" >> "$GITHUB_OUTPUT"
prepare:
needs: determine_env
runs-on: aws-cdk_ubuntu-latest_16-core
permissions:
contents: read
environment: ${{ needs.determine_env.outputs.env_name }}
outputs:
packagesArtifact: ${{ steps.build-artifact.outputs.artifact-id }}
scriptsArtifact: ${{ steps.script-artifact.outputs.artifact-id }}
env:
CI: "true"
DEBUG: "true"
TESTING_CDK: "1"
NO_UNIT_TESTS: "1"
if: github.event_name != 'merge_group' && !contains(github.event.pull_request.labels.*.name, 'pr/exempt-integ-test')
steps:
- name: Checkout
id: checkout
uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1
with:
ref: ${{ github.event.pull_request.head.sha }}
repository: ${{ github.event.pull_request.head.repo.full_name }}
allow-unsafe-pr-checkout: true
- name: Fetch tags from origin repo
id: fetch_tags_from_origin_repo
run: |-
git remote add upstream https://github.com/aws/aws-cdk-cli.git
git fetch upstream 'refs/tags/*:refs/tags/*'
- name: Enable corepack
id: enable_corepack
run: corepack enable
- name: Setup Node.js
id: setup_node_js
uses: actions/setup-node@v7.0.0
with:
node-version: lts/*
package-manager-cache: false
- name: Install dependencies
id: install_dependencies
run: yarn install --immutable
- name: Bump to realistic versions
id: bump_to_realistic_versions
env:
TESTING_CANDIDATE: "true"
run: yarn projen run bump
- name: build
id: build
env:
RELEASE: "true"
run: yarn projen build
- name: Bundle Verdaccio for the test jobs
id: bundle_verdaccio_for_the_test_jobs
run: |-
mkdir -p /tmp/verdaccio-bundle
(cd /tmp/verdaccio-bundle && npm install --no-bin-links --no-audit --no-fund --loglevel=error verdaccio@6.8)
tar czf .projen/verdaccio-bundle.tgz -C /tmp/verdaccio-bundle node_modules
- name: Upload artifact
id: build-artifact
uses: actions/upload-artifact@043fb46d1a93c77aae656e7c1c64a875d1fc6a0a
with:
name: build-artifact
path: packages/**/dist/js/*.tgz
overwrite: true
- name: Upload artifact
id: script-artifact
uses: actions/upload-artifact@043fb46d1a93c77aae656e7c1c64a875d1fc6a0a
with:
name: script-artifact
path: |-
.projen/*.sh
.projen/verdaccio-bundle.tgz
overwrite: true
include-hidden-files: true
integ_cli:
needs: prepare
runs-on: aws-cdk_ubuntu-latest_16-core
permissions:
contents: read
id-token: write
environment: run-tests
env:
NODE_NO_WARNINGS: "1"
MAVEN_ARGS: --no-transfer-progress
IS_CANARY: "true"
CI: "true"
if: github.event_name != 'merge_group' && !contains(github.event.pull_request.labels.*.name, 'pr/exempt-integ-test')
steps:
- name: Download artifact
id: download_artifact
uses: actions/download-artifact@3e5f45b2cfb9172054b4087a40e8e0b5a5461e7c
with:
artifact-ids: ${{needs.prepare.outputs.packagesArtifact}}
path: packages
- name: Download artifact
id: download_artifact_2
uses: actions/download-artifact@3e5f45b2cfb9172054b4087a40e8e0b5a5461e7c
with:
artifact-ids: ${{needs.prepare.outputs.scriptsArtifact}}
path: .projen
- name: Setup Node.js
id: setup_node_js
uses: actions/setup-node@v7.0.0
with:
node-version: ${{ matrix.node }}
package-manager-cache: false
- name: Set up JDK 18
id: set_up_jdk_18
if: matrix.suite == 'init-java' || matrix.suite == 'cli-integ-tests'
uses: actions/setup-java@v6.0.0
with:
java-version: "18"
distribution: corretto
- name: Set git identity
id: set_git_identity
run: |-
git config --global user.name "aws-cdk-cli-integ"
git config --global user.email "noreply@example.com"
- name: Prepare Verdaccio
id: prepare_verdaccio
run: chmod +x .projen/prepare-verdaccio.sh && .projen/prepare-verdaccio.sh
- name: Download and install the test artifact
id: download_and_install_the_test_artifact
run: npm install @aws-cdk-testing/cli-integ
- name: Determine latest package versions
id: versions
run: |-
CLI_VERSION=$(cd ${TMPDIR:-/tmp} && npm view aws-cdk version)
echo "CLI version: ${CLI_VERSION}"
echo "cli_version=${CLI_VERSION}" >> $GITHUB_OUTPUT
LIB_VERSION=$(cd ${TMPDIR:-/tmp} && npm view aws-cdk-lib version)
echo "lib version: ${LIB_VERSION}"
echo "lib_version=${LIB_VERSION}" >> $GITHUB_OUTPUT
- name: Authenticate Via OIDC Role
id: creds
uses: aws-actions/configure-aws-credentials@v6.2.3
with:
aws-region: us-east-1
role-duration-seconds: 3600
role-to-assume: ${{ vars.CDK_ATMOSPHERE_PROD_OIDC_ROLE }}
role-session-name: run-tests@aws-cdk-cli-integ
output-credentials: true
- name: "Run the test suite: ${{ matrix.suite }}"
id: run_the_test_suite_matrix_suite
env:
JSII_SILENCE_WARNING_DEPRECATED_NODE_VERSION: "true"
JSII_SILENCE_WARNING_UNTESTED_NODE_VERSION: "true"
JSII_SILENCE_WARNING_KNOWN_BROKEN_NODE_VERSION: "true"
DOCKERHUB_DISABLED: "true"
CDK_INTEG_ATMOSPHERE_ENABLED: "true"
CDK_INTEG_ATMOSPHERE_ENDPOINT: ${{ vars.CDK_ATMOSPHERE_PROD_ENDPOINT }}
CDK_INTEG_ATMOSPHERE_POOL: ${{ vars.CDK_INTEG_ATMOSPHERE_POOL }}
CDK_MAJOR_VERSION: "2"
RELEASE_TAG: latest
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
INTEG_LOGS: logs
run: npx run-suite --shard="${{ matrix.shard }}/12" --use-cli-release=${{ steps.versions.outputs.cli_version }} --framework-version=${{ steps.versions.outputs.lib_version }} ${{ matrix.suite }}
- name: Set workflow summary
id: set_workflow_summary
if: always()
run: |-
if compgen -G "logs/md/*.md" > /dev/null; then
cat logs/md/*.md >> $GITHUB_STEP_SUMMARY;
fi
- name: Slugify artifact id
id: artifactid
if: always()
env:
INPUT: logs-${{ matrix.suite }}-${{ matrix.node }}-${{ matrix.shard }}
run: |-
slug=$(node -p 'process.env.INPUT.replace(/[^a-z0-9._-]/gi, "-")')
echo "slug=$slug" >> "$GITHUB_OUTPUT"
- name: Upload logs
id: logupload
if: always()
uses: actions/upload-artifact@043fb46d1a93c77aae656e7c1c64a875d1fc6a0a
with:
name: ${{ steps.artifactid.outputs.slug }}
path: logs/
overwrite: true
- name: Append artifact URL
id: append_artifact_url
if: always()
run: |-
echo "" >> $GITHUB_STEP_SUMMARY
echo "[Logs](${{ steps.logupload.outputs.artifact-url }})" >> $GITHUB_STEP_SUMMARY
strategy:
fail-fast: false
matrix:
suite:
- cli-integ-tests
node:
- "24.19"
shard:
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
integ_toolkit-lib:
needs: prepare
runs-on: aws-cdk_ubuntu-latest_16-core
permissions:
contents: read
id-token: write
environment: run-tests
env:
NODE_NO_WARNINGS: "1"
MAVEN_ARGS: --no-transfer-progress
IS_CANARY: "true"
CI: "true"
if: github.event_name != 'merge_group' && !contains(github.event.pull_request.labels.*.name, 'pr/exempt-integ-test')
steps:
- name: Download artifact
id: download_artifact
uses: actions/download-artifact@3e5f45b2cfb9172054b4087a40e8e0b5a5461e7c
with:
artifact-ids: ${{needs.prepare.outputs.packagesArtifact}}
path: packages
- name: Download artifact
id: download_artifact_2
uses: actions/download-artifact@3e5f45b2cfb9172054b4087a40e8e0b5a5461e7c
with:
artifact-ids: ${{needs.prepare.outputs.scriptsArtifact}}
path: .projen
- name: Setup Node.js
id: setup_node_js
uses: actions/setup-node@v7.0.0
with:
node-version: ${{ matrix.node }}
package-manager-cache: false
- name: Set up JDK 18
id: set_up_jdk_18
if: matrix.suite == 'init-java' || matrix.suite == 'cli-integ-tests'
uses: actions/setup-java@v6.0.0
with:
java-version: "18"
distribution: corretto
- name: Set git identity
id: set_git_identity
run: |-
git config --global user.name "aws-cdk-cli-integ"
git config --global user.email "noreply@example.com"
- name: Prepare Verdaccio
id: prepare_verdaccio
run: chmod +x .projen/prepare-verdaccio.sh && .projen/prepare-verdaccio.sh
- name: Download and install the test artifact
id: download_and_install_the_test_artifact
run: npm install @aws-cdk-testing/cli-integ
- name: Determine latest package versions
id: versions
run: |-
CLI_VERSION=$(cd ${TMPDIR:-/tmp} && npm view aws-cdk version)
echo "CLI version: ${CLI_VERSION}"
echo "cli_version=${CLI_VERSION}" >> $GITHUB_OUTPUT
LIB_VERSION=$(cd ${TMPDIR:-/tmp} && npm view aws-cdk-lib version)
echo "lib version: ${LIB_VERSION}"
echo "lib_version=${LIB_VERSION}" >> $GITHUB_OUTPUT
- name: Authenticate Via OIDC Role
id: creds
uses: aws-actions/configure-aws-credentials@v6.2.3
with:
aws-region: us-east-1
role-duration-seconds: 3600
role-to-assume: ${{ vars.CDK_ATMOSPHERE_PROD_OIDC_ROLE }}
role-session-name: run-tests@aws-cdk-cli-integ
output-credentials: true
- name: "Run the test suite: ${{ matrix.suite }}"
id: run_the_test_suite_matrix_suite
env:
JSII_SILENCE_WARNING_DEPRECATED_NODE_VERSION: "true"
JSII_SILENCE_WARNING_UNTESTED_NODE_VERSION: "true"
JSII_SILENCE_WARNING_KNOWN_BROKEN_NODE_VERSION: "true"
DOCKERHUB_DISABLED: "true"
CDK_INTEG_ATMOSPHERE_ENABLED: "true"
CDK_INTEG_ATMOSPHERE_ENDPOINT: ${{ vars.CDK_ATMOSPHERE_PROD_ENDPOINT }}
CDK_INTEG_ATMOSPHERE_POOL: ${{ vars.CDK_INTEG_ATMOSPHERE_POOL }}
CDK_MAJOR_VERSION: "2"
RELEASE_TAG: latest
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
INTEG_LOGS: logs
run: npx run-suite --use-cli-release=${{ steps.versions.outputs.cli_version }} --framework-version=${{ steps.versions.outputs.lib_version }} ${{ matrix.suite }}
- name: Set workflow summary
id: set_workflow_summary
if: always()
run: |-
if compgen -G "logs/md/*.md" > /dev/null; then
cat logs/md/*.md >> $GITHUB_STEP_SUMMARY;
fi
- name: Slugify artifact id
id: artifactid
if: always()
env:
INPUT: logs-${{ matrix.suite }}-${{ matrix.node }}
run: |-
slug=$(node -p 'process.env.INPUT.replace(/[^a-z0-9._-]/gi, "-")')
echo "slug=$slug" >> "$GITHUB_OUTPUT"
- name: Upload logs
id: logupload
if: always()
uses: actions/upload-artifact@043fb46d1a93c77aae656e7c1c64a875d1fc6a0a
with:
name: ${{ steps.artifactid.outputs.slug }}
path: logs/
overwrite: true
- name: Append artifact URL
id: append_artifact_url
if: always()
run: |-
echo "" >> $GITHUB_STEP_SUMMARY
echo "[Logs](${{ steps.logupload.outputs.artifact-url }})" >> $GITHUB_STEP_SUMMARY
strategy:
fail-fast: false
matrix:
suite:
- toolkit-lib-integ-tests
node:
- "24.19"
- "20"
- "22"
- "24"
integ_telemetry:
needs: prepare
runs-on: aws-cdk_ubuntu-latest_16-core
permissions:
contents: read
id-token: write
environment: run-tests
env:
NODE_NO_WARNINGS: "1"
MAVEN_ARGS: --no-transfer-progress
IS_CANARY: "true"
CI: "true"
if: github.event_name != 'merge_group' && !contains(github.event.pull_request.labels.*.name, 'pr/exempt-integ-test')
steps:
- name: Download artifact
id: download_artifact
uses: actions/download-artifact@3e5f45b2cfb9172054b4087a40e8e0b5a5461e7c
with:
artifact-ids: ${{needs.prepare.outputs.packagesArtifact}}
path: packages
- name: Download artifact
id: download_artifact_2
uses: actions/download-artifact@3e5f45b2cfb9172054b4087a40e8e0b5a5461e7c
with:
artifact-ids: ${{needs.prepare.outputs.scriptsArtifact}}
path: .projen
- name: Setup Node.js
id: setup_node_js
uses: actions/setup-node@v7.0.0
with:
node-version: ${{ matrix.node }}
package-manager-cache: false
- name: Set up JDK 18
id: set_up_jdk_18
if: matrix.suite == 'init-java' || matrix.suite == 'cli-integ-tests'
uses: actions/setup-java@v6.0.0
with:
java-version: "18"
distribution: corretto
- name: Set git identity
id: set_git_identity
run: |-
git config --global user.name "aws-cdk-cli-integ"
git config --global user.email "noreply@example.com"
- name: Prepare Verdaccio
id: prepare_verdaccio
run: chmod +x .projen/prepare-verdaccio.sh && .projen/prepare-verdaccio.sh
- name: Download and install the test artifact
id: download_and_install_the_test_artifact
run: npm install @aws-cdk-testing/cli-integ
- name: Determine latest package versions
id: versions
run: |-
CLI_VERSION=$(cd ${TMPDIR:-/tmp} && npm view aws-cdk version)
echo "CLI version: ${CLI_VERSION}"
echo "cli_version=${CLI_VERSION}" >> $GITHUB_OUTPUT
LIB_VERSION=$(cd ${TMPDIR:-/tmp} && npm view aws-cdk-lib version)
echo "lib version: ${LIB_VERSION}"
echo "lib_version=${LIB_VERSION}" >> $GITHUB_OUTPUT
- name: Authenticate Via OIDC Role
id: creds
uses: aws-actions/configure-aws-credentials@v6.2.3
with:
aws-region: us-east-1
role-duration-seconds: 3600
role-to-assume: ${{ vars.CDK_ATMOSPHERE_PROD_OIDC_ROLE }}
role-session-name: run-tests@aws-cdk-cli-integ
output-credentials: true
- name: "Run the test suite: ${{ matrix.suite }}"
id: run_the_test_suite_matrix_suite
env:
JSII_SILENCE_WARNING_DEPRECATED_NODE_VERSION: "true"
JSII_SILENCE_WARNING_UNTESTED_NODE_VERSION: "true"
JSII_SILENCE_WARNING_KNOWN_BROKEN_NODE_VERSION: "true"
DOCKERHUB_DISABLED: "true"
CDK_INTEG_ATMOSPHERE_ENABLED: "true"
CDK_INTEG_ATMOSPHERE_ENDPOINT: ${{ vars.CDK_ATMOSPHERE_PROD_ENDPOINT }}
CDK_INTEG_ATMOSPHERE_POOL: ${{ vars.CDK_INTEG_ATMOSPHERE_POOL }}
CDK_MAJOR_VERSION: "2"
RELEASE_TAG: latest
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
INTEG_LOGS: logs
run: npx run-suite --use-cli-release=${{ steps.versions.outputs.cli_version }} --framework-version=${{ steps.versions.outputs.lib_version }} ${{ matrix.suite }}
- name: Set workflow summary
id: set_workflow_summary
if: always()
run: |-
if compgen -G "logs/md/*.md" > /dev/null; then
cat logs/md/*.md >> $GITHUB_STEP_SUMMARY;
fi
- name: Slugify artifact id
id: artifactid
if: always()
env:
INPUT: logs-${{ matrix.suite }}-${{ matrix.node }}
run: |-
slug=$(node -p 'process.env.INPUT.replace(/[^a-z0-9._-]/gi, "-")')
echo "slug=$slug" >> "$GITHUB_OUTPUT"
- name: Upload logs
id: logupload
if: always()
uses: actions/upload-artifact@043fb46d1a93c77aae656e7c1c64a875d1fc6a0a
with:
name: ${{ steps.artifactid.outputs.slug }}
path: logs/
overwrite: true
- name: Append artifact URL
id: append_artifact_url
if: always()
run: |-
echo "" >> $GITHUB_STEP_SUMMARY
echo "[Logs](${{ steps.logupload.outputs.artifact-url }})" >> $GITHUB_STEP_SUMMARY
strategy:
fail-fast: false
matrix:
suite:
- telemetry-integ-tests
node:
- "24.19"
integ_init-templates:
needs: prepare
runs-on: aws-cdk_ubuntu-latest_16-core
permissions:
contents: read
id-token: write
environment: run-tests
env:
NODE_NO_WARNINGS: "1"
MAVEN_ARGS: --no-transfer-progress
IS_CANARY: "true"
CI: "true"
if: github.event_name != 'merge_group' && !contains(github.event.pull_request.labels.*.name, 'pr/exempt-integ-test')
steps:
- name: Download artifact
id: download_artifact
uses: actions/download-artifact@3e5f45b2cfb9172054b4087a40e8e0b5a5461e7c
with:
artifact-ids: ${{needs.prepare.outputs.packagesArtifact}}
path: packages
- name: Download artifact
id: download_artifact_2
uses: actions/download-artifact@3e5f45b2cfb9172054b4087a40e8e0b5a5461e7c
with:
artifact-ids: ${{needs.prepare.outputs.scriptsArtifact}}
path: .projen
- name: Setup Node.js
id: setup_node_js
uses: actions/setup-node@v7.0.0
with:
node-version: ${{ matrix.node }}
package-manager-cache: false
- name: Set up JDK 18
id: set_up_jdk_18
if: matrix.suite == 'init-java' || matrix.suite == 'cli-integ-tests'
uses: actions/setup-java@v6.0.0
with:
java-version: "18"
distribution: corretto
- name: Set git identity
id: set_git_identity
run: |-
git config --global user.name "aws-cdk-cli-integ"
git config --global user.email "noreply@example.com"
- name: Prepare Verdaccio
id: prepare_verdaccio
run: chmod +x .projen/prepare-verdaccio.sh && .projen/prepare-verdaccio.sh
- name: Download and install the test artifact
id: download_and_install_the_test_artifact
run: npm install @aws-cdk-testing/cli-integ
- name: Determine latest package versions
id: versions
run: |-
CLI_VERSION=$(cd ${TMPDIR:-/tmp} && npm view aws-cdk version)
echo "CLI version: ${CLI_VERSION}"
echo "cli_version=${CLI_VERSION}" >> $GITHUB_OUTPUT
LIB_VERSION=$(cd ${TMPDIR:-/tmp} && npm view aws-cdk-lib version)
echo "lib version: ${LIB_VERSION}"
echo "lib_version=${LIB_VERSION}" >> $GITHUB_OUTPUT
- name: Authenticate Via OIDC Role
id: creds
uses: aws-actions/configure-aws-credentials@v6.2.3
with:
aws-region: us-east-1
role-duration-seconds: 3600
role-to-assume: ${{ vars.CDK_ATMOSPHERE_PROD_OIDC_ROLE }}
role-session-name: run-tests@aws-cdk-cli-integ
output-credentials: true
- name: "Run the test suite: ${{ matrix.suite }}"
id: run_the_test_suite_matrix_suite
env:
JSII_SILENCE_WARNING_DEPRECATED_NODE_VERSION: "true"
JSII_SILENCE_WARNING_UNTESTED_NODE_VERSION: "true"
JSII_SILENCE_WARNING_KNOWN_BROKEN_NODE_VERSION: "true"
DOCKERHUB_DISABLED: "true"
CDK_INTEG_ATMOSPHERE_ENABLED: "true"
CDK_INTEG_ATMOSPHERE_ENDPOINT: ${{ vars.CDK_ATMOSPHERE_PROD_ENDPOINT }}
CDK_INTEG_ATMOSPHERE_POOL: ${{ vars.CDK_INTEG_ATMOSPHERE_POOL }}
CDK_MAJOR_VERSION: "2"
RELEASE_TAG: latest
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
INTEG_LOGS: logs
run: npx run-suite --use-cli-release=${{ steps.versions.outputs.cli_version }} --framework-version=${{ steps.versions.outputs.lib_version }} ${{ matrix.suite }}
- name: Set workflow summary
id: set_workflow_summary
if: always()
run: |-
if compgen -G "logs/md/*.md" > /dev/null; then
cat logs/md/*.md >> $GITHUB_STEP_SUMMARY;
fi
- name: Slugify artifact id
id: artifactid
if: always()
env:
INPUT: logs-${{ matrix.suite }}-${{ matrix.node }}
run: |-
slug=$(node -p 'process.env.INPUT.replace(/[^a-z0-9._-]/gi, "-")')
echo "slug=$slug" >> "$GITHUB_OUTPUT"
- name: Upload logs
id: logupload
if: always()
uses: actions/upload-artifact@043fb46d1a93c77aae656e7c1c64a875d1fc6a0a
with:
name: ${{ steps.artifactid.outputs.slug }}
path: logs/
overwrite: true
- name: Append artifact URL
id: append_artifact_url
if: always()
run: |-
echo "" >> $GITHUB_STEP_SUMMARY
echo "[Logs](${{ steps.logupload.outputs.artifact-url }})" >> $GITHUB_STEP_SUMMARY
strategy:
fail-fast: false
matrix:
include:
- suite: init-typescript-app
node: "20"
- suite: init-typescript-app
node: "22"
- suite: init-typescript-app
node: "24"
suite:
- init-csharp
- init-fsharp
- init-go
- init-java
- init-javascript
- init-python
- init-typescript-app
- init-typescript-lib
node:
- "24.19"
integ_tool-integrations:
needs: prepare
runs-on: aws-cdk_ubuntu-latest_16-core
permissions:
contents: read
id-token: write
environment: run-tests
env:
NODE_NO_WARNINGS: "1"
MAVEN_ARGS: --no-transfer-progress
IS_CANARY: "true"
CI: "true"
if: github.event_name != 'merge_group' && !contains(github.event.pull_request.labels.*.name, 'pr/exempt-integ-test')
steps:
- name: Download artifact
id: download_artifact
uses: actions/download-artifact@3e5f45b2cfb9172054b4087a40e8e0b5a5461e7c
with:
artifact-ids: ${{needs.prepare.outputs.packagesArtifact}}
path: packages
- name: Download artifact
id: download_artifact_2
uses: actions/download-artifact@3e5f45b2cfb9172054b4087a40e8e0b5a5461e7c
with:
artifact-ids: ${{needs.prepare.outputs.scriptsArtifact}}
path: .projen
- name: Setup Node.js
id: setup_node_js
uses: actions/setup-node@v7.0.0
with:
node-version: ${{ matrix.node }}
package-manager-cache: false
- name: Set up JDK 18
id: set_up_jdk_18
if: matrix.suite == 'init-java' || matrix.suite == 'cli-integ-tests'
uses: actions/setup-java@v6.0.0
with:
java-version: "18"
distribution: corretto
- name: Set git identity
id: set_git_identity
run: |-
git config --global user.name "aws-cdk-cli-integ"
git config --global user.email "noreply@example.com"
- name: Prepare Verdaccio
id: prepare_verdaccio
run: chmod +x .projen/prepare-verdaccio.sh && .projen/prepare-verdaccio.sh
- name: Download and install the test artifact
id: download_and_install_the_test_artifact
run: npm install @aws-cdk-testing/cli-integ
- name: Determine latest package versions
id: versions
run: |-
CLI_VERSION=$(cd ${TMPDIR:-/tmp} && npm view aws-cdk version)
echo "CLI version: ${CLI_VERSION}"
echo "cli_version=${CLI_VERSION}" >> $GITHUB_OUTPUT
LIB_VERSION=$(cd ${TMPDIR:-/tmp} && npm view aws-cdk-lib version)
echo "lib version: ${LIB_VERSION}"
echo "lib_version=${LIB_VERSION}" >> $GITHUB_OUTPUT
- name: Authenticate Via OIDC Role
id: creds
uses: aws-actions/configure-aws-credentials@v6.2.3
with:
aws-region: us-east-1
role-duration-seconds: 3600
role-to-assume: ${{ vars.CDK_ATMOSPHERE_PROD_OIDC_ROLE }}
role-session-name: run-tests@aws-cdk-cli-integ
output-credentials: true
- name: "Run the test suite: ${{ matrix.suite }}"
id: run_the_test_suite_matrix_suite
env:
JSII_SILENCE_WARNING_DEPRECATED_NODE_VERSION: "true"
JSII_SILENCE_WARNING_UNTESTED_NODE_VERSION: "true"
JSII_SILENCE_WARNING_KNOWN_BROKEN_NODE_VERSION: "true"
DOCKERHUB_DISABLED: "true"
CDK_INTEG_ATMOSPHERE_ENABLED: "true"
CDK_INTEG_ATMOSPHERE_ENDPOINT: ${{ vars.CDK_ATMOSPHERE_PROD_ENDPOINT }}
CDK_INTEG_ATMOSPHERE_POOL: ${{ vars.CDK_INTEG_ATMOSPHERE_POOL }}
CDK_MAJOR_VERSION: "2"
RELEASE_TAG: latest
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
INTEG_LOGS: logs
run: npx run-suite --use-cli-release=${{ steps.versions.outputs.cli_version }} --framework-version=${{ steps.versions.outputs.lib_version }} ${{ matrix.suite }}
- name: Set workflow summary
id: set_workflow_summary
if: always()
run: |-
if compgen -G "logs/md/*.md" > /dev/null; then
cat logs/md/*.md >> $GITHUB_STEP_SUMMARY;
fi
- name: Slugify artifact id
id: artifactid
if: always()
env:
INPUT: logs-${{ matrix.suite }}-${{ matrix.node }}
run: |-
slug=$(node -p 'process.env.INPUT.replace(/[^a-z0-9._-]/gi, "-")')
echo "slug=$slug" >> "$GITHUB_OUTPUT"
- name: Upload logs
id: logupload
if: always()
uses: actions/upload-artifact@043fb46d1a93c77aae656e7c1c64a875d1fc6a0a
with:
name: ${{ steps.artifactid.outputs.slug }}
path: logs/
overwrite: true
- name: Append artifact URL
id: append_artifact_url
if: always()
run: |-
echo "" >> $GITHUB_STEP_SUMMARY
echo "[Logs](${{ steps.logupload.outputs.artifact-url }})" >> $GITHUB_STEP_SUMMARY
strategy:
fail-fast: false
matrix:
suite:
- tool-integrations
node:
- "20"
integ_cli_windows:
needs: prepare
runs-on: windows-latest
permissions:
contents: read
id-token: write
environment: run-tests
env:
NODE_NO_WARNINGS: "1"
MAVEN_ARGS: --no-transfer-progress
IS_CANARY: "true"
CI: "true"
CDK_INTEG_SKIP_TESTS_FILE: ${{ github.workspace }}\windows-skip-tests.txt
defaults:
run:
shell: bash
if: github.event_name != 'merge_group' && !contains(github.event.pull_request.labels.*.name, 'pr/exempt-integ-test') && (github.event_name == 'workflow_dispatch' || contains(github.event.pull_request.labels.*.name, 'pr/test-windows'))
steps:
- name: Set up Dev Drive for TEMP and npm cache
id: set_up_dev_drive_for_temp_and_npm_cache
run: |-
$vhd = "C:\devdrive.vhdx"
$drive = (New-VHD -Path $vhd -SizeBytes 40GB -Dynamic | Mount-VHD -PassThru | Initialize-Disk -PassThru | New-Partition -AssignDriveLetter -UseMaximumSize | Format-Volume -DevDrive -Confirm:$false).DriveLetter
New-Item -ItemType Directory -Path "${drive}:\temp" | Out-Null
New-Item -ItemType Directory -Path "${drive}:\npm-cache" | Out-Null
echo "TEMP=${drive}:\temp" >> $env:GITHUB_ENV
echo "TMP=${drive}:\temp" >> $env:GITHUB_ENV
echo "npm_config_cache=${drive}:\npm-cache" >> $env:GITHUB_ENV
shell: powershell
- name: Write Windows skip-tests file
id: write_windows_skip-tests_file
run: |-
cat > windows-skip-tests.txt << 'EOF'
deploy same docker asset to multiple regions
deploy same docker asset to multiple stacks
deploy stack with multiple docker assets
deploy stack with docker asset
cdk-assets smoke test
deploy new style synthesis to new style bootstrap (with docker image)
Garbage Collection untags in-use ecr images
Garbage Collection keeps in use ecr images
Garbage Collection deletes unused ecr images
Garbage Collection tags unused ecr images
all calls from isolated container go through proxy
docker-credential-cdk-assets can assume role and fetch ECR credentials
toolkit deploy stack with multiple docker assets
CDK synth bundled functions as expected
CDK synth add the metadata properties expected by sam
can deploy with session tags on the deploy, lookup, file asset, and image asset publishing roles
generating and loading assembly
test resource import with construct that requires bundling
hotswap deployment supports Bedrock AgentCore Runtime
sam can locally test the synthesized cdk application
EOF
- name: Download artifact
id: download_artifact
uses: actions/download-artifact@3e5f45b2cfb9172054b4087a40e8e0b5a5461e7c
with:
artifact-ids: ${{needs.prepare.outputs.packagesArtifact}}
path: packages
- name: Download artifact
id: download_artifact_2
uses: actions/download-artifact@3e5f45b2cfb9172054b4087a40e8e0b5a5461e7c
with:
artifact-ids: ${{needs.prepare.outputs.scriptsArtifact}}
path: .projen
- name: Setup Node.js
id: setup_node_js
uses: actions/setup-node@v7.0.0
with:
node-version: ${{ matrix.node }}
package-manager-cache: false
- name: Set up JDK 18
id: set_up_jdk_18
if: matrix.suite == 'init-java' || matrix.suite == 'cli-integ-tests'
uses: actions/setup-java@v6.0.0
with:
java-version: "18"
distribution: corretto
- name: Set git identity
id: set_git_identity
run: |-
git config --global user.name "aws-cdk-cli-integ"
git config --global user.email "noreply@example.com"
- name: Prepare Verdaccio
id: prepare_verdaccio
run: chmod +x .projen/prepare-verdaccio.sh && .projen/prepare-verdaccio.sh
- name: Download and install the test artifact
id: download_and_install_the_test_artifact
run: npm install @aws-cdk-testing/cli-integ
- name: Determine latest package versions
id: versions
run: |-
CLI_VERSION=$(cd ${TMPDIR:-/tmp} && npm view aws-cdk version)
echo "CLI version: ${CLI_VERSION}"
echo "cli_version=${CLI_VERSION}" >> $GITHUB_OUTPUT
LIB_VERSION=$(cd ${TMPDIR:-/tmp} && npm view aws-cdk-lib version)
echo "lib version: ${LIB_VERSION}"
echo "lib_version=${LIB_VERSION}" >> $GITHUB_OUTPUT
- name: Authenticate Via OIDC Role
id: creds
uses: aws-actions/configure-aws-credentials@v6.2.3
with:
aws-region: us-east-1
role-duration-seconds: 3600
role-to-assume: ${{ vars.CDK_ATMOSPHERE_PROD_OIDC_ROLE }}
role-session-name: run-tests@aws-cdk-cli-integ
output-credentials: true
- name: "Run the test suite: ${{ matrix.suite }}"
id: run_the_test_suite_matrix_suite
env:
JSII_SILENCE_WARNING_DEPRECATED_NODE_VERSION: "true"
JSII_SILENCE_WARNING_UNTESTED_NODE_VERSION: "true"
JSII_SILENCE_WARNING_KNOWN_BROKEN_NODE_VERSION: "true"
DOCKERHUB_DISABLED: "true"
CDK_INTEG_ATMOSPHERE_ENABLED: "true"
CDK_INTEG_ATMOSPHERE_ENDPOINT: ${{ vars.CDK_ATMOSPHERE_PROD_ENDPOINT }}
CDK_INTEG_ATMOSPHERE_POOL: ${{ vars.CDK_INTEG_ATMOSPHERE_POOL }}
CDK_MAJOR_VERSION: "2"
RELEASE_TAG: latest
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
INTEG_LOGS: logs
run: npx run-suite --shard="${{ matrix.shard }}/12" --use-cli-release=${{ steps.versions.outputs.cli_version }} --framework-version=${{ steps.versions.outputs.lib_version }} ${{ matrix.suite }}
- name: Set workflow summary
id: set_workflow_summary
if: always()
run: |-
if compgen -G "logs/md/*.md" > /dev/null; then
cat logs/md/*.md >> $GITHUB_STEP_SUMMARY;
fi
- name: Slugify artifact id
id: artifactid
if: always()
env:
INPUT: logs_windows-${{ matrix.suite }}-${{ matrix.node }}-${{ matrix.shard }}
run: |-
slug=$(node -p 'process.env.INPUT.replace(/[^a-z0-9._-]/gi, "-")')
echo "slug=$slug" >> "$GITHUB_OUTPUT"
- name: Upload logs
id: logupload
if: always()
uses: actions/upload-artifact@043fb46d1a93c77aae656e7c1c64a875d1fc6a0a
with:
name: ${{ steps.artifactid.outputs.slug }}
path: logs/
overwrite: true
- name: Append artifact URL
id: append_artifact_url
if: always()
run: |-
echo "" >> $GITHUB_STEP_SUMMARY
echo "[Logs](${{ steps.logupload.outputs.artifact-url }})" >> $GITHUB_STEP_SUMMARY
timeout-minutes: 90
strategy:
fail-fast: false
matrix:
suite:
- cli-integ-tests
node:
- "24.19"
shard:
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
integ_toolkit-lib_windows:
needs: prepare
runs-on: windows-latest
permissions:
contents: read
id-token: write
environment: run-tests
env:
NODE_NO_WARNINGS: "1"
MAVEN_ARGS: --no-transfer-progress
IS_CANARY: "true"
CI: "true"
CDK_INTEG_SKIP_TESTS_FILE: ${{ github.workspace }}\windows-skip-tests.txt
defaults:
run:
shell: bash
if: github.event_name != 'merge_group' && !contains(github.event.pull_request.labels.*.name, 'pr/exempt-integ-test') && (github.event_name == 'workflow_dispatch' || contains(github.event.pull_request.labels.*.name, 'pr/test-windows'))
steps:
- name: Set up Dev Drive for TEMP and npm cache
id: set_up_dev_drive_for_temp_and_npm_cache
run: |-
$vhd = "C:\devdrive.vhdx"
$drive = (New-VHD -Path $vhd -SizeBytes 40GB -Dynamic | Mount-VHD -PassThru | Initialize-Disk -PassThru | New-Partition -AssignDriveLetter -UseMaximumSize | Format-Volume -DevDrive -Confirm:$false).DriveLetter
New-Item -ItemType Directory -Path "${drive}:\temp" | Out-Null
New-Item -ItemType Directory -Path "${drive}:\npm-cache" | Out-Null
echo "TEMP=${drive}:\temp" >> $env:GITHUB_ENV
echo "TMP=${drive}:\temp" >> $env:GITHUB_ENV
echo "npm_config_cache=${drive}:\npm-cache" >> $env:GITHUB_ENV
shell: powershell
- name: Write Windows skip-tests file
id: write_windows_skip-tests_file
run: |-
cat > windows-skip-tests.txt << 'EOF'
deploy same docker asset to multiple regions
deploy same docker asset to multiple stacks
deploy stack with multiple docker assets
deploy stack with docker asset
cdk-assets smoke test
deploy new style synthesis to new style bootstrap (with docker image)
Garbage Collection untags in-use ecr images
Garbage Collection keeps in use ecr images
Garbage Collection deletes unused ecr images
Garbage Collection tags unused ecr images
all calls from isolated container go through proxy
docker-credential-cdk-assets can assume role and fetch ECR credentials
toolkit deploy stack with multiple docker assets
CDK synth bundled functions as expected
CDK synth add the metadata properties expected by sam
can deploy with session tags on the deploy, lookup, file asset, and image asset publishing roles
generating and loading assembly
test resource import with construct that requires bundling
hotswap deployment supports Bedrock AgentCore Runtime
sam can locally test the synthesized cdk application
EOF
- name: Download artifact
id: download_artifact
uses: actions/download-artifact@3e5f45b2cfb9172054b4087a40e8e0b5a5461e7c
with:
artifact-ids: ${{needs.prepare.outputs.packagesArtifact}}
path: packages
- name: Download artifact
id: download_artifact_2
uses: actions/download-artifact@3e5f45b2cfb9172054b4087a40e8e0b5a5461e7c
with:
artifact-ids: ${{needs.prepare.outputs.scriptsArtifact}}
path: .projen
- name: Setup Node.js
id: setup_node_js
uses: actions/setup-node@v7.0.0
with:
node-version: ${{ matrix.node }}
package-manager-cache: false
- name: Set up JDK 18
id: set_up_jdk_18
if: matrix.suite == 'init-java' || matrix.suite == 'cli-integ-tests'
uses: actions/setup-java@v6.0.0
with:
java-version: "18"
distribution: corretto
- name: Set git identity
id: set_git_identity
run: |-
git config --global user.name "aws-cdk-cli-integ"
git config --global user.email "noreply@example.com"
- name: Prepare Verdaccio
id: prepare_verdaccio
run: chmod +x .projen/prepare-verdaccio.sh && .projen/prepare-verdaccio.sh
- name: Download and install the test artifact
id: download_and_install_the_test_artifact
run: npm install @aws-cdk-testing/cli-integ
- name: Determine latest package versions
id: versions
run: |-
CLI_VERSION=$(cd ${TMPDIR:-/tmp} && npm view aws-cdk version)
echo "CLI version: ${CLI_VERSION}"
echo "cli_version=${CLI_VERSION}" >> $GITHUB_OUTPUT
LIB_VERSION=$(cd ${TMPDIR:-/tmp} && npm view aws-cdk-lib version)
echo "lib version: ${LIB_VERSION}"
echo "lib_version=${LIB_VERSION}" >> $GITHUB_OUTPUT
- name: Authenticate Via OIDC Role
id: creds
uses: aws-actions/configure-aws-credentials@v6.2.3
with:
aws-region: us-east-1
role-duration-seconds: 3600
role-to-assume: ${{ vars.CDK_ATMOSPHERE_PROD_OIDC_ROLE }}
role-session-name: run-tests@aws-cdk-cli-integ
output-credentials: true
- name: "Run the test suite: ${{ matrix.suite }}"
id: run_the_test_suite_matrix_suite
env:
JSII_SILENCE_WARNING_DEPRECATED_NODE_VERSION: "true"
JSII_SILENCE_WARNING_UNTESTED_NODE_VERSION: "true"
JSII_SILENCE_WARNING_KNOWN_BROKEN_NODE_VERSION: "true"
DOCKERHUB_DISABLED: "true"
CDK_INTEG_ATMOSPHERE_ENABLED: "true"
CDK_INTEG_ATMOSPHERE_ENDPOINT: ${{ vars.CDK_ATMOSPHERE_PROD_ENDPOINT }}
CDK_INTEG_ATMOSPHERE_POOL: ${{ vars.CDK_INTEG_ATMOSPHERE_POOL }}
CDK_MAJOR_VERSION: "2"
RELEASE_TAG: latest
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
INTEG_LOGS: logs
run: npx run-suite --use-cli-release=${{ steps.versions.outputs.cli_version }} --framework-version=${{ steps.versions.outputs.lib_version }} ${{ matrix.suite }}
- name: Set workflow summary
id: set_workflow_summary
if: always()
run: |-
if compgen -G "logs/md/*.md" > /dev/null; then
cat logs/md/*.md >> $GITHUB_STEP_SUMMARY;
fi
- name: Slugify artifact id
id: artifactid
if: always()
env:
INPUT: logs_windows-${{ matrix.suite }}-${{ matrix.node }}
run: |-
slug=$(node -p 'process.env.INPUT.replace(/[^a-z0-9._-]/gi, "-")')
echo "slug=$slug" >> "$GITHUB_OUTPUT"
- name: Upload logs
id: logupload
if: always()
uses: actions/upload-artifact@043fb46d1a93c77aae656e7c1c64a875d1fc6a0a
with:
name: ${{ steps.artifactid.outputs.slug }}
path: logs/
overwrite: true
- name: Append artifact URL
id: append_artifact_url
if: always()
run: |-
echo "" >> $GITHUB_STEP_SUMMARY
echo "[Logs](${{ steps.logupload.outputs.artifact-url }})" >> $GITHUB_STEP_SUMMARY
timeout-minutes: 90
strategy:
fail-fast: false
matrix:
suite:
- toolkit-lib-integ-tests
node:
- "24.19"
- "20"
- "22"
- "24"
integ_telemetry_windows:
needs: prepare
runs-on: windows-latest
permissions:
contents: read
id-token: write
environment: run-tests
env:
NODE_NO_WARNINGS: "1"
MAVEN_ARGS: --no-transfer-progress
IS_CANARY: "true"
CI: "true"
CDK_INTEG_SKIP_TESTS_FILE: ${{ github.workspace }}\windows-skip-tests.txt
defaults:
run:
shell: bash
if: github.event_name != 'merge_group' && !contains(github.event.pull_request.labels.*.name, 'pr/exempt-integ-test') && (github.event_name == 'workflow_dispatch' || contains(github.event.pull_request.labels.*.name, 'pr/test-windows'))
steps:
- name: Set up Dev Drive for TEMP and npm cache
id: set_up_dev_drive_for_temp_and_npm_cache
run: |-
$vhd = "C:\devdrive.vhdx"
$drive = (New-VHD -Path $vhd -SizeBytes 40GB -Dynamic | Mount-VHD -PassThru | Initialize-Disk -PassThru | New-Partition -AssignDriveLetter -UseMaximumSize | Format-Volume -DevDrive -Confirm:$false).DriveLetter
New-Item -ItemType Directory -Path "${drive}:\temp" | Out-Null
New-Item -ItemType Directory -Path "${drive}:\npm-cache" | Out-Null
echo "TEMP=${drive}:\temp" >> $env:GITHUB_ENV
echo "TMP=${drive}:\temp" >> $env:GITHUB_ENV
echo "npm_config_cache=${drive}:\npm-cache" >> $env:GITHUB_ENV
shell: powershell
- name: Write Windows skip-tests file
id: write_windows_skip-tests_file
run: |-
cat > windows-skip-tests.txt << 'EOF'
deploy same docker asset to multiple regions
deploy same docker asset to multiple stacks
deploy stack with multiple docker assets
deploy stack with docker asset
cdk-assets smoke test
deploy new style synthesis to new style bootstrap (with docker image)
Garbage Collection untags in-use ecr images
Garbage Collection keeps in use ecr images
Garbage Collection deletes unused ecr images
Garbage Collection tags unused ecr images
all calls from isolated container go through proxy
docker-credential-cdk-assets can assume role and fetch ECR credentials
toolkit deploy stack with multiple docker assets
CDK synth bundled functions as expected
CDK synth add the metadata properties expected by sam
can deploy with session tags on the deploy, lookup, file asset, and image asset publishing roles
generating and loading assembly
test resource import with construct that requires bundling
hotswap deployment supports Bedrock AgentCore Runtime
sam can locally test the synthesized cdk application
EOF
- name: Download artifact
id: download_artifact
uses: actions/download-artifact@3e5f45b2cfb9172054b4087a40e8e0b5a5461e7c
with:
artifact-ids: ${{needs.prepare.outputs.packagesArtifact}}
path: packages
- name: Download artifact
id: download_artifact_2
uses: actions/download-artifact@3e5f45b2cfb9172054b4087a40e8e0b5a5461e7c
with:
artifact-ids: ${{needs.prepare.outputs.scriptsArtifact}}
path: .projen
- name: Setup Node.js
id: setup_node_js
uses: actions/setup-node@v7.0.0
with:
node-version: ${{ matrix.node }}
package-manager-cache: false
- name: Set up JDK 18
id: set_up_jdk_18
if: matrix.suite == 'init-java' || matrix.suite == 'cli-integ-tests'
uses: actions/setup-java@v6.0.0
with:
java-version: "18"
distribution: corretto
- name: Set git identity
id: set_git_identity
run: |-
git config --global user.name "aws-cdk-cli-integ"
git config --global user.email "noreply@example.com"
- name: Prepare Verdaccio
id: prepare_verdaccio
run: chmod +x .projen/prepare-verdaccio.sh && .projen/prepare-verdaccio.sh
- name: Download and install the test artifact
id: download_and_install_the_test_artifact
run: npm install @aws-cdk-testing/cli-integ
- name: Determine latest package versions
id: versions
run: |-
CLI_VERSION=$(cd ${TMPDIR:-/tmp} && npm view aws-cdk version)
echo "CLI version: ${CLI_VERSION}"
echo "cli_version=${CLI_VERSION}" >> $GITHUB_OUTPUT
LIB_VERSION=$(cd ${TMPDIR:-/tmp} && npm view aws-cdk-lib version)
echo "lib version: ${LIB_VERSION}"
echo "lib_version=${LIB_VERSION}" >> $GITHUB_OUTPUT
- name: Authenticate Via OIDC Role
id: creds
uses: aws-actions/configure-aws-credentials@v6.2.3
with:
aws-region: us-east-1
role-duration-seconds: 3600
role-to-assume: ${{ vars.CDK_ATMOSPHERE_PROD_OIDC_ROLE }}
role-session-name: run-tests@aws-cdk-cli-integ
output-credentials: true
- name: "Run the test suite: ${{ matrix.suite }}"
id: run_the_test_suite_matrix_suite
env:
JSII_SILENCE_WARNING_DEPRECATED_NODE_VERSION: "true"
JSII_SILENCE_WARNING_UNTESTED_NODE_VERSION: "true"
JSII_SILENCE_WARNING_KNOWN_BROKEN_NODE_VERSION: "true"
DOCKERHUB_DISABLED: "true"
CDK_INTEG_ATMOSPHERE_ENABLED: "true"
CDK_INTEG_ATMOSPHERE_ENDPOINT: ${{ vars.CDK_ATMOSPHERE_PROD_ENDPOINT }}
CDK_INTEG_ATMOSPHERE_POOL: ${{ vars.CDK_INTEG_ATMOSPHERE_POOL }}
CDK_MAJOR_VERSION: "2"
RELEASE_TAG: latest
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
INTEG_LOGS: logs
run: npx run-suite --use-cli-release=${{ steps.versions.outputs.cli_version }} --framework-version=${{ steps.versions.outputs.lib_version }} ${{ matrix.suite }}
- name: Set workflow summary
id: set_workflow_summary
if: always()
run: |-
if compgen -G "logs/md/*.md" > /dev/null; then
cat logs/md/*.md >> $GITHUB_STEP_SUMMARY;
fi
- name: Slugify artifact id
id: artifactid
if: always()
env:
INPUT: logs_windows-${{ matrix.suite }}-${{ matrix.node }}
run: |-
slug=$(node -p 'process.env.INPUT.replace(/[^a-z0-9._-]/gi, "-")')
echo "slug=$slug" >> "$GITHUB_OUTPUT"
- name: Upload logs
id: logupload
if: always()
uses: actions/upload-artifact@043fb46d1a93c77aae656e7c1c64a875d1fc6a0a
with:
name: ${{ steps.artifactid.outputs.slug }}
path: logs/
overwrite: true
- name: Append artifact URL
id: append_artifact_url
if: always()
run: |-
echo "" >> $GITHUB_STEP_SUMMARY
echo "[Logs](${{ steps.logupload.outputs.artifact-url }})" >> $GITHUB_STEP_SUMMARY
timeout-minutes: 90
strategy:
fail-fast: false
matrix:
suite:
- telemetry-integ-tests
node:
- "24.19"
integ_init-templates_windows:
needs: prepare
runs-on: windows-latest
permissions:
contents: read
id-token: write
environment: run-tests
env:
NODE_NO_WARNINGS: "1"
MAVEN_ARGS: --no-transfer-progress
IS_CANARY: "true"
CI: "true"
CDK_INTEG_SKIP_TESTS_FILE: ${{ github.workspace }}\windows-skip-tests.txt
defaults:
run:
shell: bash
if: github.event_name != 'merge_group' && !contains(github.event.pull_request.labels.*.name, 'pr/exempt-integ-test') && (github.event_name == 'workflow_dispatch' || contains(github.event.pull_request.labels.*.name, 'pr/test-windows'))
steps:
- name: Set up Dev Drive for TEMP and npm cache
id: set_up_dev_drive_for_temp_and_npm_cache
run: |-
$vhd = "C:\devdrive.vhdx"
$drive = (New-VHD -Path $vhd -SizeBytes 40GB -Dynamic | Mount-VHD -PassThru | Initialize-Disk -PassThru | New-Partition -AssignDriveLetter -UseMaximumSize | Format-Volume -DevDrive -Confirm:$false).DriveLetter
New-Item -ItemType Directory -Path "${drive}:\temp" | Out-Null
New-Item -ItemType Directory -Path "${drive}:\npm-cache" | Out-Null
echo "TEMP=${drive}:\temp" >> $env:GITHUB_ENV
echo "TMP=${drive}:\temp" >> $env:GITHUB_ENV
echo "npm_config_cache=${drive}:\npm-cache" >> $env:GITHUB_ENV
shell: powershell
- name: Write Windows skip-tests file
id: write_windows_skip-tests_file
run: |-
cat > windows-skip-tests.txt << 'EOF'
deploy same docker asset to multiple regions
deploy same docker asset to multiple stacks
deploy stack with multiple docker assets
deploy stack with docker asset
cdk-assets smoke test
deploy new style synthesis to new style bootstrap (with docker image)
Garbage Collection untags in-use ecr images
Garbage Collection keeps in use ecr images
Garbage Collection deletes unused ecr images
Garbage Collection tags unused ecr images
all calls from isolated container go through proxy
docker-credential-cdk-assets can assume role and fetch ECR credentials
toolkit deploy stack with multiple docker assets
CDK synth bundled functions as expected
CDK synth add the metadata properties expected by sam
can deploy with session tags on the deploy, lookup, file asset, and image asset publishing roles
generating and loading assembly
test resource import with construct that requires bundling
hotswap deployment supports Bedrock AgentCore Runtime
sam can locally test the synthesized cdk application
EOF
- name: Download artifact
id: download_artifact
uses: actions/download-artifact@3e5f45b2cfb9172054b4087a40e8e0b5a5461e7c
with:
artifact-ids: ${{needs.prepare.outputs.packagesArtifact}}
path: packages
- name: Download artifact
id: download_artifact_2
uses: actions/download-artifact@3e5f45b2cfb9172054b4087a40e8e0b5a5461e7c
with:
artifact-ids: ${{needs.prepare.outputs.scriptsArtifact}}
path: .projen
- name: Setup Node.js
id: setup_node_js
uses: actions/setup-node@v7.0.0
with:
node-version: ${{ matrix.node }}
package-manager-cache: false
- name: Set up JDK 18
id: set_up_jdk_18
if: matrix.suite == 'init-java' || matrix.suite == 'cli-integ-tests'
uses: actions/setup-java@v6.0.0
with:
java-version: "18"
distribution: corretto
- name: Set git identity
id: set_git_identity
run: |-
git config --global user.name "aws-cdk-cli-integ"
git config --global user.email "noreply@example.com"
- name: Prepare Verdaccio
id: prepare_verdaccio
run: chmod +x .projen/prepare-verdaccio.sh && .projen/prepare-verdaccio.sh
- name: Download and install the test artifact
id: download_and_install_the_test_artifact
run: npm install @aws-cdk-testing/cli-integ
- name: Determine latest package versions
id: versions
run: |-
CLI_VERSION=$(cd ${TMPDIR:-/tmp} && npm view aws-cdk version)
echo "CLI version: ${CLI_VERSION}"
echo "cli_version=${CLI_VERSION}" >> $GITHUB_OUTPUT
LIB_VERSION=$(cd ${TMPDIR:-/tmp} && npm view aws-cdk-lib version)
echo "lib version: ${LIB_VERSION}"
echo "lib_version=${LIB_VERSION}" >> $GITHUB_OUTPUT
- name: Authenticate Via OIDC Role
id: creds
uses: aws-actions/configure-aws-credentials@v6.2.3
with:
aws-region: us-east-1
role-duration-seconds: 3600
role-to-assume: ${{ vars.CDK_ATMOSPHERE_PROD_OIDC_ROLE }}
role-session-name: run-tests@aws-cdk-cli-integ
output-credentials: true
- name: "Run the test suite: ${{ matrix.suite }}"
id: run_the_test_suite_matrix_suite
env:
JSII_SILENCE_WARNING_DEPRECATED_NODE_VERSION: "true"
JSII_SILENCE_WARNING_UNTESTED_NODE_VERSION: "true"
JSII_SILENCE_WARNING_KNOWN_BROKEN_NODE_VERSION: "true"
DOCKERHUB_DISABLED: "true"
CDK_INTEG_ATMOSPHERE_ENABLED: "true"
CDK_INTEG_ATMOSPHERE_ENDPOINT: ${{ vars.CDK_ATMOSPHERE_PROD_ENDPOINT }}
CDK_INTEG_ATMOSPHERE_POOL: ${{ vars.CDK_INTEG_ATMOSPHERE_POOL }}
CDK_MAJOR_VERSION: "2"
RELEASE_TAG: latest
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
INTEG_LOGS: logs
run: npx run-suite --use-cli-release=${{ steps.versions.outputs.cli_version }} --framework-version=${{ steps.versions.outputs.lib_version }} ${{ matrix.suite }}
- name: Set workflow summary
id: set_workflow_summary
if: always()
run: |-
if compgen -G "logs/md/*.md" > /dev/null; then
cat logs/md/*.md >> $GITHUB_STEP_SUMMARY;
fi
- name: Slugify artifact id
id: artifactid
if: always()
env:
INPUT: logs_windows-${{ matrix.suite }}-${{ matrix.node }}
run: |-
slug=$(node -p 'process.env.INPUT.replace(/[^a-z0-9._-]/gi, "-")')
echo "slug=$slug" >> "$GITHUB_OUTPUT"
- name: Upload logs
id: logupload
if: always()
uses: actions/upload-artifact@043fb46d1a93c77aae656e7c1c64a875d1fc6a0a
with:
name: ${{ steps.artifactid.outputs.slug }}
path: logs/
overwrite: true
- name: Append artifact URL
id: append_artifact_url
if: always()
run: |-
echo "" >> $GITHUB_STEP_SUMMARY
echo "[Logs](${{ steps.logupload.outputs.artifact-url }})" >> $GITHUB_STEP_SUMMARY
timeout-minutes: 90
strategy:
fail-fast: false
matrix:
include:
- suite: init-typescript-app
node: "20"
- suite: init-typescript-app
node: "22"
- suite: init-typescript-app
node: "24"
suite:
- init-csharp
- init-fsharp
- init-go
- init-java
- init-javascript
- init-python
- init-typescript-app
- init-typescript-lib
node:
- "24.19"
integ_tool-integrations_windows:
needs: prepare
runs-on: windows-latest
permissions:
contents: read
id-token: write
environment: run-tests
env:
NODE_NO_WARNINGS: "1"
MAVEN_ARGS: --no-transfer-progress
IS_CANARY: "true"
CI: "true"
CDK_INTEG_SKIP_TESTS_FILE: ${{ github.workspace }}\windows-skip-tests.txt
defaults:
run:
shell: bash
if: github.event_name != 'merge_group' && !contains(github.event.pull_request.labels.*.name, 'pr/exempt-integ-test') && (github.event_name == 'workflow_dispatch' || contains(github.event.pull_request.labels.*.name, 'pr/test-windows'))
steps:
- name: Set up Dev Drive for TEMP and npm cache
id: set_up_dev_drive_for_temp_and_npm_cache
run: |-
$vhd = "C:\devdrive.vhdx"
$drive = (New-VHD -Path $vhd -SizeBytes 40GB -Dynamic | Mount-VHD -PassThru | Initialize-Disk -PassThru | New-Partition -AssignDriveLetter -UseMaximumSize | Format-Volume -DevDrive -Confirm:$false).DriveLetter
New-Item -ItemType Directory -Path "${drive}:\temp" | Out-Null
New-Item -ItemType Directory -Path "${drive}:\npm-cache" | Out-Null
echo "TEMP=${drive}:\temp" >> $env:GITHUB_ENV
echo "TMP=${drive}:\temp" >> $env:GITHUB_ENV
echo "npm_config_cache=${drive}:\npm-cache" >> $env:GITHUB_ENV
shell: powershell
- name: Write Windows skip-tests file
id: write_windows_skip-tests_file
run: |-
cat > windows-skip-tests.txt << 'EOF'
deploy same docker asset to multiple regions
deploy same docker asset to multiple stacks
deploy stack with multiple docker assets
deploy stack with docker asset
cdk-assets smoke test
deploy new style synthesis to new style bootstrap (with docker image)
Garbage Collection untags in-use ecr images
Garbage Collection keeps in use ecr images
Garbage Collection deletes unused ecr images
Garbage Collection tags unused ecr images
all calls from isolated container go through proxy
docker-credential-cdk-assets can assume role and fetch ECR credentials
toolkit deploy stack with multiple docker assets
CDK synth bundled functions as expected
CDK synth add the metadata properties expected by sam
can deploy with session tags on the deploy, lookup, file asset, and image asset publishing roles
generating and loading assembly
test resource import with construct that requires bundling
hotswap deployment supports Bedrock AgentCore Runtime
sam can locally test the synthesized cdk application
EOF
- name: Download artifact
id: download_artifact
uses: actions/download-artifact@3e5f45b2cfb9172054b4087a40e8e0b5a5461e7c
with:
artifact-ids: ${{needs.prepare.outputs.packagesArtifact}}
path: packages
- name: Download artifact
id: download_artifact_2
uses: actions/download-artifact@3e5f45b2cfb9172054b4087a40e8e0b5a5461e7c
with:
artifact-ids: ${{needs.prepare.outputs.scriptsArtifact}}
path: .projen
- name: Setup Node.js
id: setup_node_js
uses: actions/setup-node@v7.0.0
with:
node-version: ${{ matrix.node }}
package-manager-cache: false
- name: Set up JDK 18
id: set_up_jdk_18
if: matrix.suite == 'init-java' || matrix.suite == 'cli-integ-tests'
uses: actions/setup-java@v6.0.0
with:
java-version: "18"
distribution: corretto
- name: Set git identity
id: set_git_identity
run: |-
git config --global user.name "aws-cdk-cli-integ"
git config --global user.email "noreply@example.com"
- name: Prepare Verdaccio
id: prepare_verdaccio
run: chmod +x .projen/prepare-verdaccio.sh && .projen/prepare-verdaccio.sh
- name: Download and install the test artifact
id: download_and_install_the_test_artifact
run: npm install @aws-cdk-testing/cli-integ
- name: Determine latest package versions
id: versions
run: |-
CLI_VERSION=$(cd ${TMPDIR:-/tmp} && npm view aws-cdk version)
echo "CLI version: ${CLI_VERSION}"
echo "cli_version=${CLI_VERSION}" >> $GITHUB_OUTPUT
LIB_VERSION=$(cd ${TMPDIR:-/tmp} && npm view aws-cdk-lib version)
echo "lib version: ${LIB_VERSION}"
echo "lib_version=${LIB_VERSION}" >> $GITHUB_OUTPUT
- name: Authenticate Via OIDC Role
id: creds
uses: aws-actions/configure-aws-credentials@v6.2.3
with:
aws-region: us-east-1
role-duration-seconds: 3600
role-to-assume: ${{ vars.CDK_ATMOSPHERE_PROD_OIDC_ROLE }}
role-session-name: run-tests@aws-cdk-cli-integ
output-credentials: true
- name: "Run the test suite: ${{ matrix.suite }}"
id: run_the_test_suite_matrix_suite
env:
JSII_SILENCE_WARNING_DEPRECATED_NODE_VERSION: "true"
JSII_SILENCE_WARNING_UNTESTED_NODE_VERSION: "true"
JSII_SILENCE_WARNING_KNOWN_BROKEN_NODE_VERSION: "true"
DOCKERHUB_DISABLED: "true"
CDK_INTEG_ATMOSPHERE_ENABLED: "true"
CDK_INTEG_ATMOSPHERE_ENDPOINT: ${{ vars.CDK_ATMOSPHERE_PROD_ENDPOINT }}
CDK_INTEG_ATMOSPHERE_POOL: ${{ vars.CDK_INTEG_ATMOSPHERE_POOL }}
CDK_MAJOR_VERSION: "2"
RELEASE_TAG: latest
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
INTEG_LOGS: logs
run: npx run-suite --use-cli-release=${{ steps.versions.outputs.cli_version }} --framework-version=${{ steps.versions.outputs.lib_version }} ${{ matrix.suite }}
- name: Set workflow summary
id: set_workflow_summary
if: always()
run: |-
if compgen -G "logs/md/*.md" > /dev/null; then
cat logs/md/*.md >> $GITHUB_STEP_SUMMARY;
fi
- name: Slugify artifact id
id: artifactid
if: always()
env:
INPUT: logs_windows-${{ matrix.suite }}-${{ matrix.node }}
run: |-
slug=$(node -p 'process.env.INPUT.replace(/[^a-z0-9._-]/gi, "-")')
echo "slug=$slug" >> "$GITHUB_OUTPUT"
- name: Upload logs
id: logupload
if: always()
uses: actions/upload-artifact@043fb46d1a93c77aae656e7c1c64a875d1fc6a0a
with:
name: ${{ steps.artifactid.outputs.slug }}
path: logs/
overwrite: true
- name: Append artifact URL
id: append_artifact_url
if: always()
run: |-
echo "" >> $GITHUB_STEP_SUMMARY
echo "[Logs](${{ steps.logupload.outputs.artifact-url }})" >> $GITHUB_STEP_SUMMARY
timeout-minutes: 90
strategy:
fail-fast: false
matrix:
suite:
- tool-integrations
node:
- "20"
integ:
needs:
- integ_cli
- integ_toolkit-lib
- integ_telemetry
- integ_init-templates
- integ_tool-integrations
- integ_cli_windows
- integ_toolkit-lib_windows
- integ_telemetry_windows
- integ_init-templates_windows
- integ_tool-integrations_windows
runs-on: ubuntu-latest
permissions: {}
if: always()
steps:
- name: integ_cli result
id: integ_cli_result
run: echo ${{ needs.integ_cli.result }}
- name: integ_toolkit-lib result
id: integ_toolkit-lib_result
run: echo ${{ needs.integ_toolkit-lib.result }}
- name: integ_telemetry result
id: integ_telemetry_result
run: echo ${{ needs.integ_telemetry.result }}
- name: integ_init-templates result
id: integ_init-templates_result
run: echo ${{ needs.integ_init-templates.result }}
- name: integ_tool-integrations result
id: integ_tool-integrations_result
run: echo ${{ needs.integ_tool-integrations.result }}
- name: integ_cli_windows result
id: integ_cli_windows_result
run: echo ${{ needs.integ_cli_windows.result }}
- name: integ_toolkit-lib_windows result
id: integ_toolkit-lib_windows_result
run: echo ${{ needs.integ_toolkit-lib_windows.result }}
- name: integ_telemetry_windows result
id: integ_telemetry_windows_result
run: echo ${{ needs.integ_telemetry_windows.result }}
- name: integ_init-templates_windows result
id: integ_init-templates_windows_result
run: echo ${{ needs.integ_init-templates_windows.result }}
- name: integ_tool-integrations_windows result
id: integ_tool-integrations_windows_result
run: echo ${{ needs.integ_tool-integrations_windows.result }}
- name: Set status based on test results
id: set_status_based_on_test_results
if: ${{ !(contains(fromJSON('["success", "skipped"]'), needs.integ_cli.result) && contains(fromJSON('["success", "skipped"]'), needs.integ_toolkit-lib.result) && contains(fromJSON('["success", "skipped"]'), needs.integ_telemetry.result) && contains(fromJSON('["success", "skipped"]'), needs.integ_init-templates.result) && contains(fromJSON('["success", "skipped"]'), needs.integ_tool-integrations.result) && contains(fromJSON('["success", "skipped"]'), needs.integ_cli_windows.result) && contains(fromJSON('["success", "skipped"]'), needs.integ_toolkit-lib_windows.result) && contains(fromJSON('["success", "skipped"]'), needs.integ_telemetry_windows.result) && contains(fromJSON('["success", "skipped"]'), needs.integ_init-templates_windows.result) && contains(fromJSON('["success", "skipped"]'), needs.integ_tool-integrations_windows.result)) }}
run: exit 1