diff --git a/.github/workflows/codebuild-ci.yml b/.github/workflows/codebuild-ci.yml index 72b79d06b3ed..fa523f4c0476 100644 --- a/.github/workflows/codebuild-ci.yml +++ b/.github/workflows/codebuild-ci.yml @@ -167,106 +167,3 @@ jobs: uses: aws-actions/aws-codebuild-run-build@v1 with: project-name: aws-sdk-java-v2-migration-test - - s3-regression-tests-download: - if: github.repository == 'aws/aws-sdk-java-v2' - runs-on: ubuntu-latest - env: - REGRESSION_TEST: DownloadStreamingRegressionTesting - steps: - - name: Configure AWS Credentials - uses: aws-actions/configure-aws-credentials@v4 - with: - role-to-assume: ${{ secrets.CI_AWS_ROLE_ARN }} - aws-region: us-west-2 - role-duration-seconds: 7200 - - name: Run s3 regression tests for downloads - uses: aws-actions/aws-codebuild-run-build@v1 - with: - project-name: aws-sdk-java-v2-s3-regression-tests - env-vars-for-codebuild: REGRESSION_TEST - s3-regression-tests-control-plane: - if: github.repository == 'aws/aws-sdk-java-v2' - runs-on: ubuntu-latest - env: - REGRESSION_TEST: ControlPlaneOperationRegressionTesting - steps: - - name: Configure AWS Credentials - uses: aws-actions/configure-aws-credentials@v4 - with: - role-to-assume: ${{ secrets.CI_AWS_ROLE_ARN }} - aws-region: us-west-2 - role-duration-seconds: 7200 - - name: Run s3 regression tests for control plane - uses: aws-actions/aws-codebuild-run-build@v1 - with: - project-name: aws-sdk-java-v2-s3-regression-tests - env-vars-for-codebuild: REGRESSION_TEST - s3-regression-tests-upload-sync: - if: github.repository == 'aws/aws-sdk-java-v2' - runs-on: ubuntu-latest - env: - REGRESSION_TEST: UploadSyncRegressionTesting - steps: - - name: Configure AWS Credentials - uses: aws-actions/configure-aws-credentials@v4 - with: - role-to-assume: ${{ secrets.CI_AWS_ROLE_ARN }} - aws-region: us-west-2 - role-duration-seconds: 7200 - - name: Run s3 regression tests for uploads - uses: aws-actions/aws-codebuild-run-build@v1 - with: - project-name: aws-sdk-java-v2-s3-regression-tests - env-vars-for-codebuild: REGRESSION_TEST - s3-regression-tests-upload-async: - if: github.repository == 'aws/aws-sdk-java-v2' - runs-on: ubuntu-latest - env: - REGRESSION_TEST: UploadAsyncRegressionTesting - steps: - - name: Configure AWS Credentials - uses: aws-actions/configure-aws-credentials@v4 - with: - role-to-assume: ${{ secrets.CI_AWS_ROLE_ARN }} - aws-region: us-west-2 - role-duration-seconds: 7200 - - name: Run s3 regression tests for uploads - uses: aws-actions/aws-codebuild-run-build@v1 - with: - project-name: aws-sdk-java-v2-s3-regression-tests - env-vars-for-codebuild: REGRESSION_TEST - s3-regression-tests-upload-crt: - if: github.repository == 'aws/aws-sdk-java-v2' - runs-on: ubuntu-latest - env: - REGRESSION_TEST: UploadCrtRegressionTesting - steps: - - name: Configure AWS Credentials - uses: aws-actions/configure-aws-credentials@v4 - with: - role-to-assume: ${{ secrets.CI_AWS_ROLE_ARN }} - aws-region: us-west-2 - role-duration-seconds: 7200 - - name: Run s3 regression tests for uploads - uses: aws-actions/aws-codebuild-run-build@v1 - with: - project-name: aws-sdk-java-v2-s3-regression-tests - env-vars-for-codebuild: REGRESSION_TEST - s3-regression-tests-upload-multi: - if: github.repository == 'aws/aws-sdk-java-v2' - runs-on: ubuntu-latest - env: - REGRESSION_TEST: UploadTransferManagerRegressionTesting - steps: - - name: Configure AWS Credentials - uses: aws-actions/configure-aws-credentials@v4 - with: - role-to-assume: ${{ secrets.CI_AWS_ROLE_ARN }} - aws-region: us-west-2 - role-duration-seconds: 7200 - - name: Run s3 regression tests for uploads - uses: aws-actions/aws-codebuild-run-build@v1 - with: - project-name: aws-sdk-java-v2-s3-regression-tests - env-vars-for-codebuild: REGRESSION_TEST diff --git a/.github/workflows/s3-regression-tests.yml b/.github/workflows/s3-regression-tests.yml new file mode 100644 index 000000000000..abad4b4e675f --- /dev/null +++ b/.github/workflows/s3-regression-tests.yml @@ -0,0 +1,153 @@ +name: S3 Regression Tests +on: + pull_request: + merge_group: + push: + branches: + - master + +permissions: + id-token: write + +jobs: + check-s3-related-changes: + if: github.repository == 'aws/aws-sdk-java-v2' + runs-on: ubuntu-latest + outputs: + has_s3_related_changes: ${{ steps.check-changes.outputs.has_s3_related_changes }} + steps: + - uses: actions/checkout@v4 + with: + fetch-depth: 0 + - name: Check for changes related to s3 + id: check-changes + run: | + git fetch origin ${{ github.base_ref }} --depth 1 + CHANGED_FILES=$(git diff remotes/origin/${{ github.base_ref }} --name-only) + if echo "$CHANGED_FILES" | grep -q -E '^core/|^services/s3/|^services-custom/s3-transfer-manager/|^http-client-spi/|^http-clients/'; then + echo "Detected changes in S3, HTTP client, or core modules" + echo "has_s3_related_changes=true" >> $GITHUB_OUTPUT + else + echo "No changes detected in S3, HTTP client, or core modules" + echo "has_s3_related_changes=false" >> $GITHUB_OUTPUT + fi + + s3-regression-tests-download: + needs: check-s3-related-changes + if: github.repository == 'aws/aws-sdk-java-v2' + runs-on: ubuntu-latest + env: + REGRESSION_TEST: DownloadStreamingRegressionTesting + HAS_S3_CHANGES: ${{ needs.check-s3-related-changes.outputs.has_s3_related_changes }} + steps: + - name: Configure AWS Credentials + uses: aws-actions/configure-aws-credentials@v4 + with: + role-to-assume: ${{ secrets.CI_AWS_ROLE_ARN }} + aws-region: us-west-2 + role-duration-seconds: 7200 + - name: Run s3 regression tests for downloads + uses: aws-actions/aws-codebuild-run-build@v1 + with: + project-name: aws-sdk-java-v2-s3-regression-tests + env-vars-for-codebuild: REGRESSION_TEST,HAS_S3_CHANGES + + s3-regression-tests-control-plane: + needs: check-s3-related-changes + if: github.repository == 'aws/aws-sdk-java-v2' + runs-on: ubuntu-latest + env: + REGRESSION_TEST: ControlPlaneOperationRegressionTesting + HAS_S3_CHANGES: ${{ needs.check-s3-related-changes.outputs.has_s3_related_changes }} + steps: + - name: Configure AWS Credentials + uses: aws-actions/configure-aws-credentials@v4 + with: + role-to-assume: ${{ secrets.CI_AWS_ROLE_ARN }} + aws-region: us-west-2 + role-duration-seconds: 7200 + - name: Run s3 regression tests for control plane + uses: aws-actions/aws-codebuild-run-build@v1 + with: + project-name: aws-sdk-java-v2-s3-regression-tests + env-vars-for-codebuild: REGRESSION_TEST,HAS_S3_CHANGES + + s3-regression-tests-upload-sync: + needs: check-s3-related-changes + if: github.repository == 'aws/aws-sdk-java-v2' + runs-on: ubuntu-latest + env: + REGRESSION_TEST: UploadSyncRegressionTesting + HAS_S3_CHANGES: ${{ needs.check-s3-related-changes.outputs.has_s3_related_changes }} + steps: + - name: Configure AWS Credentials + uses: aws-actions/configure-aws-credentials@v4 + with: + role-to-assume: ${{ secrets.CI_AWS_ROLE_ARN }} + aws-region: us-west-2 + role-duration-seconds: 7200 + - name: Run s3 regression tests for uploads + uses: aws-actions/aws-codebuild-run-build@v1 + with: + project-name: aws-sdk-java-v2-s3-regression-tests + env-vars-for-codebuild: REGRESSION_TEST,HAS_S3_CHANGES + + s3-regression-tests-upload-async: + needs: check-s3-related-changes + if: github.repository == 'aws/aws-sdk-java-v2' + runs-on: ubuntu-latest + env: + REGRESSION_TEST: UploadAsyncRegressionTesting + HAS_S3_CHANGES: ${{ needs.check-s3-related-changes.outputs.has_s3_related_changes }} + steps: + - name: Configure AWS Credentials + uses: aws-actions/configure-aws-credentials@v4 + with: + role-to-assume: ${{ secrets.CI_AWS_ROLE_ARN }} + aws-region: us-west-2 + role-duration-seconds: 7200 + - name: Run s3 regression tests for uploads + uses: aws-actions/aws-codebuild-run-build@v1 + with: + project-name: aws-sdk-java-v2-s3-regression-tests + env-vars-for-codebuild: REGRESSION_TEST,HAS_S3_CHANGES + + s3-regression-tests-upload-crt: + needs: check-s3-related-changes + if: github.repository == 'aws/aws-sdk-java-v2' + runs-on: ubuntu-latest + env: + REGRESSION_TEST: UploadCrtRegressionTesting + HAS_S3_CHANGES: ${{ needs.check-s3-related-changes.outputs.has_s3_related_changes }} + steps: + - name: Configure AWS Credentials + uses: aws-actions/configure-aws-credentials@v4 + with: + role-to-assume: ${{ secrets.CI_AWS_ROLE_ARN }} + aws-region: us-west-2 + role-duration-seconds: 7200 + - name: Run s3 regression tests for uploads + uses: aws-actions/aws-codebuild-run-build@v1 + with: + project-name: aws-sdk-java-v2-s3-regression-tests + env-vars-for-codebuild: REGRESSION_TEST,HAS_S3_CHANGES + + s3-regression-tests-upload-multi: + needs: check-s3-related-changes + if: github.repository == 'aws/aws-sdk-java-v2' + runs-on: ubuntu-latest + env: + REGRESSION_TEST: UploadTransferManagerRegressionTesting + HAS_S3_CHANGES: ${{ needs.check-s3-related-changes.outputs.has_s3_related_changes }} + steps: + - name: Configure AWS Credentials + uses: aws-actions/configure-aws-credentials@v4 + with: + role-to-assume: ${{ secrets.CI_AWS_ROLE_ARN }} + aws-region: us-west-2 + role-duration-seconds: 7200 + - name: Run s3 regression tests for uploads + uses: aws-actions/aws-codebuild-run-build@v1 + with: + project-name: aws-sdk-java-v2-s3-regression-tests + env-vars-for-codebuild: REGRESSION_TEST,HAS_S3_CHANGES diff --git a/buildspecs/s3-regression-tests.yml b/buildspecs/s3-regression-tests.yml index 4b7102350ce0..1905f850ed6f 100644 --- a/buildspecs/s3-regression-tests.yml +++ b/buildspecs/s3-regression-tests.yml @@ -3,8 +3,13 @@ version: 0.2 phases: build: commands: - - mvn clean install -P s3-regression-tests -pl :s3-tests -am -T1C -Dregression.test=$REGRESSION_TEST $MAVEN_OPTIONS - - echo $MAVEN_OPTIONS + - | + if [ "$HAS_S3_CHANGES" = "false" ]; then + echo "No s3 related changes in the PR, skipping s3 regression tests" + exit 0 + fi + mvn clean install -P s3-regression-tests -pl :s3-tests -am -T1C -Dregression.test="$REGRESSION_TEST" $MAVEN_OPTIONS + echo $MAVEN_OPTIONS finally: - mkdir -p codebuild-test-reports - find ./ -name 'TEST-*.xml' -type f -exec cp {} codebuild-test-reports/ \;