2424 CARGO_LAMBDA_VERSION : " v0.17.1"
2525 NOSE_PARAMETERIZED_NO_WARN : 1
2626 BY_CANARY : true
27- UV_PYTHON : python3.9
27+ UV_PYTHON : python3.11
2828 CREDENTIAL_DISTRIBUTION_LAMBDA_ARN : ${{ secrets.CREDENTIAL_DISTRIBUTION_LAMBDA_ARN }}
2929 ACCOUNT_RESET_LAMBDA_ARN : ${{ secrets.ACCOUNT_RESET_LAMBDA_ARN }}
3030
7474
7575 steps :
7676 - name : Checkout code
77- uses : actions/checkout@v4
77+ uses : actions/checkout@v6
7878 with :
7979 # For scheduled runs, always use develop
8080 # For manual runs, use the branch from "Use workflow from" dropdown
@@ -139,7 +139,7 @@ jobs:
139139
140140 - name : Set up Go
141141 if : contains(fromJSON('["build-integ", "build-integ-java-python-provided", "build-integ-arm64"]'), matrix.test_suite) && matrix.container_runtime == 'no-container'
142- uses : actions/setup-go@v5
142+ uses : actions/setup-go@v6
143143 with :
144144 go-version : ' 1.25'
145145
@@ -149,35 +149,35 @@ jobs:
149149 # Remove system Maven if it exists
150150 sudo apt-get remove -y maven || true
151151
152- # Install Maven 3.9.11
153- wget https://dlcdn.apache.org/maven/maven-3/3.9.11 /binaries/apache-maven-3.9.11 -bin.zip -P /tmp
152+ # Install Maven 3.9.12
153+ wget https://dlcdn.apache.org/maven/maven-3/3.9.12 /binaries/apache-maven-3.9.12 -bin.zip -P /tmp
154154 sudo unzip -d /opt/mvn /tmp/apache-maven-*.zip
155155
156156 # Install Gradle 9.2.0
157157 wget https://services.gradle.org/distributions/gradle-9.2.0-bin.zip -P /tmp
158158 sudo unzip -d /opt/gradle /tmp/gradle-*.zip
159159
160160 # Create symlinks to ensure our Maven is used
161- sudo ln -sf /opt/mvn/apache-maven-3.9.11 /bin/mvn /usr/local/bin/mvn
161+ sudo ln -sf /opt/mvn/apache-maven-3.9.12 /bin/mvn /usr/local/bin/mvn
162162 sudo ln -sf /opt/gradle/gradle-9.2.0/bin/gradle /usr/local/bin/gradle
163163
164164 # Add to PATH (prepend to ensure our versions are used first)
165- echo "/opt/mvn/apache-maven-3.9.11 /bin" >> $GITHUB_PATH
165+ echo "/opt/mvn/apache-maven-3.9.12 /bin" >> $GITHUB_PATH
166166 echo "/opt/gradle/gradle-9.2.0/bin" >> $GITHUB_PATH
167167
168168 # Set MAVEN_HOME
169- echo "MAVEN_HOME=/opt/mvn/apache-maven-3.9.11 " >> $GITHUB_ENV
169+ echo "MAVEN_HOME=/opt/mvn/apache-maven-3.9.12 " >> $GITHUB_ENV
170170
171171 # Verify versions
172- export PATH="/opt/mvn/apache-maven-3.9.11 /bin:/opt/gradle/gradle-9.2.0/bin:$PATH"
172+ export PATH="/opt/mvn/apache-maven-3.9.12 /bin:/opt/gradle/gradle-9.2.0/bin:$PATH"
173173 mvn --version
174174 gradle --version
175175
176- - name : Install .NET 8 SDK
176+ - name : Install .NET 10 SDK
177177 if : contains(fromJSON('["build-integ-java-python-provided", "build-integ-dotnet-node-ruby", "build-integ-arm64"]'), matrix.test_suite) && matrix.container_runtime == 'no-container' || matrix.test_suite == 'other-and-e2e'
178178 uses : actions/setup-dotnet@v5
179179 with :
180- dotnet-version : ' 8 .0.x'
180+ dotnet-version : ' 10 .0.x'
181181
182182 - name : Set up Ruby 3.3.7
183183 if : (contains(fromJSON('["build-integ","build-integ-dotnet-node-ruby", "build-integ-arm64"]'), matrix.test_suite) && matrix.container_runtime == 'no-container') || matrix.test_suite == 'other-and-e2e'
@@ -297,33 +297,52 @@ jobs:
297297 - name : Get testing resources and credentials
298298 run : |
299299 # Try with skip_role_deletion parameter first
300- test_env_var=$(python3.9 tests/get_testing_resources.py skip_role_deletion)
300+ test_env_var=$(python3.11 tests/get_testing_resources.py skip_role_deletion)
301301
302302 if [ $? -ne 0 ]; then
303303 echo "First attempt with skip_role_deletion failed, trying without parameter..."
304- test_env_var=$(python3.9 tests/get_testing_resources.py)
304+ test_env_var=$(python3.11 tests/get_testing_resources.py)
305305
306306 if [ $? -ne 0 ]; then
307307 echo "get_testing_resources failed. Failed to acquire credentials or test resources."
308308 exit 1
309309 fi
310310 fi
311311
312- # Save current credentials for account reset later
312+ # Save current credentials for account reset later (mask them first)
313+ echo "::add-mask::$AWS_ACCESS_KEY_ID"
314+ echo "::add-mask::$AWS_SECRET_ACCESS_KEY"
315+ echo "::add-mask::$AWS_SESSION_TOKEN"
313316 echo "CI_ACCESS_ROLE_AWS_ACCESS_KEY_ID=$AWS_ACCESS_KEY_ID" >> $GITHUB_ENV
314317 echo "CI_ACCESS_ROLE_AWS_SECRET_ACCESS_KEY=$AWS_SECRET_ACCESS_KEY" >> $GITHUB_ENV
315318 echo "CI_ACCESS_ROLE_AWS_SESSION_TOKEN=$AWS_SESSION_TOKEN" >> $GITHUB_ENV
316319
317- # Set test credentials
318- echo "AWS_ACCESS_KEY_ID=$(echo "$test_env_var" | jq -j ".accessKeyID")" >> $GITHUB_ENV
319- echo "AWS_SECRET_ACCESS_KEY=$(echo "$test_env_var" | jq -j ".secretAccessKey")" >> $GITHUB_ENV
320- echo "AWS_SESSION_TOKEN=$(echo "$test_env_var" | jq -j ".sessionToken")" >> $GITHUB_ENV
321- echo "TASK_TOKEN=$(echo "$test_env_var" | jq -j ".taskToken")" >> $GITHUB_ENV
320+ # Extract test credentials and mask them before setting as env vars
321+ TEST_ACCESS_KEY_ID=$(echo "$test_env_var" | jq -j ".accessKeyID")
322+ TEST_SECRET_ACCESS_KEY=$(echo "$test_env_var" | jq -j ".secretAccessKey")
323+ TEST_SESSION_TOKEN=$(echo "$test_env_var" | jq -j ".sessionToken")
324+ TEST_TASK_TOKEN=$(echo "$test_env_var" | jq -j ".taskToken")
325+
326+ # Mask sensitive credentials so they don't appear in logs
327+ echo "::add-mask::$TEST_ACCESS_KEY_ID"
328+ echo "::add-mask::$TEST_SECRET_ACCESS_KEY"
329+ echo "::add-mask::$TEST_SESSION_TOKEN"
330+ echo "::add-mask::$TEST_TASK_TOKEN"
331+
332+ # Set test credentials as environment variables
333+ echo "AWS_ACCESS_KEY_ID=$TEST_ACCESS_KEY_ID" >> $GITHUB_ENV
334+ echo "AWS_SECRET_ACCESS_KEY=$TEST_SECRET_ACCESS_KEY" >> $GITHUB_ENV
335+ echo "AWS_SESSION_TOKEN=$TEST_SESSION_TOKEN" >> $GITHUB_ENV
336+ echo "TASK_TOKEN=$TEST_TASK_TOKEN" >> $GITHUB_ENV
337+
338+ # Set other test resources (non-sensitive)
322339 echo "AWS_S3_TESTING=$(echo "$test_env_var" | jq -j ".TestBucketName")" >> $GITHUB_ENV
323340 echo "AWS_ECR_TESTING=$(echo "$test_env_var" | jq -j ".TestECRURI")" >> $GITHUB_ENV
324341 echo "AWS_KMS_KEY=$(echo "$test_env_var" | jq -j ".TestKMSKeyArn")" >> $GITHUB_ENV
325342 echo "AWS_SIGNING_PROFILE_NAME=$(echo "$test_env_var" | jq -j ".TestSigningProfileName")" >> $GITHUB_ENV
326343 echo "AWS_SIGNING_PROFILE_VERSION_ARN=$(echo "$test_env_var" | jq -j ".TestSigningProfileARN")" >> $GITHUB_ENV
344+ echo "LMI_SUBNET_ID=$(echo "$test_env_var" | jq -j ".LMISubnetId")" >> $GITHUB_ENV
345+ echo "LMI_SECURITY_GROUP_ID=$(echo "$test_env_var" | jq -j ".LMISecurityGroupId")" >> $GITHUB_ENV
327346
328347 - name : Login to Public ECR
329348 if : matrix.container_runtime != 'no-container' && env.BY_CANARY == 'true'
@@ -368,13 +387,13 @@ jobs:
368387 pytest -vv -n 2 --reruns 3 tests/integration/buildcmd/test_build_cmd_arm64.py -m 'java' -k "${CONTAINER_FILTER}" --json-report --json-report-file=TEST_REPORT-integration-buildcmd-arm64-java-${{ matrix.container_runtime }}.json
369388 ;;
370389 "terraform-build")
371- pytest -vv -n 4 --reruns 4 tests/integration/buildcmd/test_build_terraform_applications.py tests/integration/buildcmd/test_build_terraform_applications_other_cases.py --json-report --json-report-file=TEST_REPORT-integration-terraform-${{ matrix.container_runtime }}.json
390+ pytest -vv -n 4 --reruns 3 tests/integration/buildcmd/test_build_terraform_applications.py tests/integration/buildcmd/test_build_terraform_applications_other_cases.py --json-report --json-report-file=TEST_REPORT-integration-terraform-${{ matrix.container_runtime }}.json
372391 ;;
373392 "package-delete-deploy")
374393 pytest -vv tests/integration/package tests/integration/delete tests/integration/deploy --dist=loadgroup -n 6 --reruns 4 --json-report --json-report-file=TEST_REPORT-integration-package-delete-deploy-${{ matrix.container_runtime }}.json
375394 ;;
376395 "sync")
377- pytest -vv tests/integration/sync -n 6 --reruns 3 --dist loadscope --json-report --json-report-file=TEST_REPORT-integration-sync-${{ matrix.container_runtime }}.json
396+ pytest -vv tests/integration/sync -n 4 --reruns 3 --dist loadscope --json-report --json-report-file=TEST_REPORT-integration-sync-${{ matrix.container_runtime }}.json
378397 ;;
379398 "local-invoke")
380399 pytest -vv --reruns 3 tests/integration/local/invoke tests/integration/local/generate_event --ignore tests/integration/local/invoke/test_invoke_durable.py --json-report --json-report-file=TEST_REPORT-integration-local-invoke-${{ matrix.container_runtime }}.json
@@ -389,14 +408,13 @@ jobs:
389408 pytest -vv --reruns 3 tests/integration/local/invoke/test_invoke_durable.py tests/integration/local/start_api/test_start_api_durable.py tests/integration/local/start_lambda/test_start_lambda_durable.py tests/integration/local/callback/test_callback.py tests/integration/local/execution/test_execution.py --json-report --json-report-file=TEST_REPORT-integration-durable-functions-${{ matrix.container_runtime }}.json
390409 ;;
391410 "other-and-e2e")
392- pytest -vv -n 4 --reruns 4 --dist loadgroup tests/integration tests/end_to_end --ignore=tests/integration/buildcmd --ignore=tests/integration/delete --ignore=tests/integration/deploy --ignore=tests/integration/package --ignore=tests/integration/sync --ignore=tests/integration/local --json-report --json-report-file=TEST_REPORT-integration-others-${{ matrix.container_runtime }}.json
393- pytest -vv --reruns 3 tests/regression --json-report --json-report-file=TEST_REPORT-regression-${{ matrix.container_runtime }}.json
411+ pytest -vv -n 4 --reruns 3 --dist loadgroup tests/integration tests/end_to_end tests/regression --ignore=tests/integration/buildcmd --ignore=tests/integration/delete --ignore=tests/integration/deploy --ignore=tests/integration/package --ignore=tests/integration/sync --ignore=tests/integration/local --json-report --json-report-file=TEST_REPORT-integration-others-${{ matrix.container_runtime }}.json
394412 ;;
395413 esac
396414
397415 - name : Upload test results
398416 if : always()
399- uses : actions/upload-artifact@v5
417+ uses : actions/upload-artifact@v6
400418 with :
401419 name : test-results-${{ matrix.test_suite }}-${{ matrix.container_runtime }}
402420 path : TEST_REPORT-*.json
0 commit comments