-
Notifications
You must be signed in to change notification settings - Fork 115
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Make Java Smoke Test PR workflow generic
* so that it can be used for every Java samples
- Loading branch information
1 parent
9831969
commit c14e8d9
Showing
2 changed files
with
62 additions
and
77 deletions.
There are no files selected for viewing
This file was deleted.
Oops, something went wrong.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -1,63 +1,77 @@ | ||
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: | ||
smoke: | ||
name: Smoke Tests | ||
prepare: | ||
name: Prepare | ||
runs-on: ubuntu-latest | ||
outputs: | ||
matrix: ${{ steps.paths.outputs.matrix }} | ||
steps: | ||
- name: Setup Go | ||
uses: actions/setup-go@v4 | ||
with: | ||
go-version: 1.18.x | ||
- 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" | ||
- name: Checkout | ||
uses: actions/checkout@v4 | ||
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)" | ||
- 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- | ||
smoke: | ||
needs: prepare | ||
name: Smoke Tests | ||
runs-on: ubuntu-latest | ||
strategy: | ||
matrix: ${{ fromJSON(needs.prepare.outputs.matrix) }} | ||
|
||
- name: Setup Directories | ||
run: | | ||
#!/usr/bin/env bash | ||
set -euo pipefail | ||
steps: | ||
- name: Setup Go | ||
uses: actions/setup-go@v4 | ||
with: | ||
go-version: 1.20.x | ||
|
||
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: Checkout | ||
uses: actions/checkout@v4 | ||
|
||
- name: Test Java Samples | ||
run: | | ||
./scripts/smoke.sh --suite java \ | ||
--builder paketobuildpacks/builder:full \ | ||
--builder paketobuildpacks/builder:base \ | ||
--builder paketobuildpacks/builder:tiny | ||
- 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:full \ | ||
--builder paketobuildpacks/builder:base \ | ||
--builder paketobuildpacks/builder:tiny |