diff --git a/.github/workflows/test-pull-request-java-akka.yml b/.github/workflows/test-pull-request-java-akka.yml deleted file mode 100644 index e97c201b..00000000 --- a/.github/workflows/test-pull-request-java-akka.yml +++ /dev/null @@ -1,29 +0,0 @@ -name: Test Pull Request (Akka) - -on: - merge_group: - pull_request: - branches: - - main - paths: - - java/akka/** - -jobs: - smoke: - name: Smoke Tests - runs-on: ubuntu-latest - steps: - - name: Setup Go - uses: actions/setup-go@v4 - with: - go-version: 1.18.x - - - name: Checkout - uses: actions/checkout@v4 - - - name: Test Java Samples - run: | - ./scripts/smoke.sh --suite java/akka/smoke_test \ - --builder paketobuildpacks/builder:full \ - --builder paketobuildpacks/builder:base \ - --builder paketobuildpacks/builder:tiny diff --git a/.github/workflows/test-pull-request-java.yml b/.github/workflows/test-pull-request-java.yml index 5c180c4f..c7258032 100644 --- a/.github/workflows/test-pull-request-java.yml +++ b/.github/workflows/test-pull-request-java.yml @@ -1,63 +1,78 @@ -name: Test Pull Request (Java) +name: Smoke Test Pull Request (Java) on: merge_group: pull_request: branches: - - main + - main paths: - - 'java/**' - - '!java/native-image/**' - - '!java/java-node/**' + - 'java/**' jobs: + prepare: + name: Prepare + runs-on: ubuntu-latest + outputs: + matrix: ${{ steps.paths.outputs.matrix }} + steps: + - name: Checkout + uses: actions/checkout@v4 + with: + fetch-depth: 0 + - name: Discover changed paths + id: paths + run: | + env + # see: https://stackoverflow.com/a/8721550/24069 for usage of paste + changed_java_folders=$( git diff --name-only --merge-base origin/$GITHUB_BASE_REF $GITHUB_SHA | xargs -n 1 dirname | sort -k 2 | uniq | grep -v "^\." ) + + smoke_test_folders="" + while read -r changed_folder + do + echo "working on $changed_folder" + smoke_test="" + current_folder=$changed_folder + while [ -z "$smoke_test" ] && [ "$current_folder" != "java" ] + do + echo "--smoke_test is $smoke_test" + echo "--current_folder is $current_folder" + if [[ -s $current_folder/smoke_test ]]; then + smoke_test="$current_folder/smoke_test" + else + current_folder=$(dirname $current_folder) + fi + done + if [ "$current_folder" != "java" ]; then + smoke_test_folders="$smoke_test_folders\"$smoke_test\"\n" + fi + done <<<"$changed_java_folders" + + smoke_test_folders=$( echo -e $smoke_test_folders | uniq | grep "\S" | paste -s -d, -) + + echo "These are the Java folders where we found changes for this PR : $changed_java_folders" >> $GITHUB_STEP_SUMMARY + echo "These are the Java folders where we found changes AND the presence of smoke tests for this PR : $smoke_test_folders" >> $GITHUB_STEP_SUMMARY + echo "matrix={\"java_sample_folder\":[$smoke_test_folders]}" >> $GITHUB_OUTPUT + echo "This is how the matrix will look like: $(cat $GITHUB_OUTPUT)" + smoke: + needs: prepare name: Smoke Tests runs-on: ubuntu-latest + strategy: + matrix: ${{ fromJSON(needs.prepare.outputs.matrix) }} + steps: - - name: Setup Go - uses: actions/setup-go@v4 - with: - go-version: 1.18.x - - - name: Checkout - uses: actions/checkout@v4 - - - name: Cache local Gradle repository - uses: actions/cache@v3 - with: - path: | - ~/.gradle/caches - ~/.gradle/wrapper - key: ${{ runner.os }}-gradle-${{ hashFiles('java/**/*.gradle*', 'java/**/gradle-wrapper.properties') }} - restore-keys: | - ${{ runner.os }}-gradle- - - - name: Cache local Maven repository - uses: actions/cache@v3 - with: - path: | - ~/.m2/repository - ~/.m2/wrapper - key: ${{ runner.os }}-maven-${{ hashFiles('**/pom.xml', 'java/**/maven-wrapper.properties') }} - restore-keys: | - ${{ runner.os }}-maven- - - - name: Setup Directories - run: | - #!/usr/bin/env bash - set -euo pipefail - - mkdir -p ~/.m2/repository - mkdir -p ~/.m2/repository/wrapper/dists - mkdir -p ~/.gradle/caches - mkdir -p ~/.gradle/wrapper/dists - chmod -R 775 ~/.m2 - chmod -R 775 ~/.gradle - - - name: Test Java Samples - run: | - ./scripts/smoke.sh --suite java \ - --builder paketobuildpacks/builder:full \ - --builder paketobuildpacks/builder:base \ - --builder paketobuildpacks/builder:tiny + - name: Setup Go + uses: actions/setup-go@v4 + with: + go-version: 1.20.x + + - name: Checkout + uses: actions/checkout@v4 + + - name: Smoke Test Java samples + run: | + echo "About to run the smoke test script against this suite folder: ${{ matrix.java_sample_folder }}/smoke_test" + ./scripts/smoke.sh --suite ${{ matrix.java_sample_folder }}/smoke_test \ + --builder paketobuildpacks/builder:base \ + --builder paketobuildpacks/builder:tiny