From 6dfcfa43c5c31663d0caa3c62a27fa51df9de141 Mon Sep 17 00:00:00 2001 From: Lennon Scariano Date: Tue, 7 Apr 2026 11:48:51 -0400 Subject: [PATCH 01/10] create more robust ci-cd pipeline --- .github/workflows/gradle_publish.yml | 73 ++++++++++++++++++++-------- build.gradle | 6 +++ 2 files changed, 59 insertions(+), 20 deletions(-) diff --git a/.github/workflows/gradle_publish.yml b/.github/workflows/gradle_publish.yml index 36f5b7328..41d6642f5 100644 --- a/.github/workflows/gradle_publish.yml +++ b/.github/workflows/gradle_publish.yml @@ -1,25 +1,58 @@ name: Publish package to GitHub Packages -on: workflow_dispatch +on: + workflow_dispatch: + inputs: + run_all: + description: "Publish all subprojects" + required: true + default: "false" + run_specific: + description: "Publish specific subproject" + required: false + default: "" + push: + branches: [ "master" ] jobs: - publish: + detect-changes: runs-on: ubuntu-latest - permissions: - contents: read - packages: write + outputs: + matrix: ${{ steps.set-matrix.outputs.matrix }} steps: - - name: Checkout - uses: actions/checkout@v3 - with: - fetch-depth: 0 - submodules: recursive - - uses: actions/setup-java@v4 - with: - java-version: '17' - distribution: 'temurin' - - name: Setup Gradle - uses: gradle/actions/setup-gradle@017a9effdb900e5b5b2fddfb590a105619dca3c3 # v4.4.2 + - uses: actions/checkout@v4 + - name: Detect changed subprojects + id: changes + run: | + # get all projects + CHANGED=$(./gradlew projects --quiet | grep "Project " | awk '{print $3}' | sed "s/'\|://g") + + #handle if project is specified + if [ "${{ github.event_name }}" = "workflow_dispatch" ]; then + if [ "${{ inputs.run_all }}" = "false" ]; then + CHANGED="${{ inputs.run_specific }}" + fi + else #merge to master, detect specific changes + CHANGED=$(grep -F -o -f <(echo "$CHANGED") <(git diff --name-only HEAD~ HEAD)) + fi + + echo "changed=$CHANGED" >> $GITHUB_OUTPUT + - name: Build matrix + id: set-matrix + run: | + ARR=$(echo "${{ steps.changes.outputs.changed }}" | jq -R -s -c 'split("\n")[:-1]') + echo "matrix={\"project\":$ARR}" >> $GITHUB_OUTPUT - - name: Publish package - run: ./gradlew publish --continue #don't block progress for other packages - env: - GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} \ No newline at end of file + publish: + needs: detect-changes + runs-on: ubuntu-latest + strategy: + matrix: ${{ fromJson(needs.detect-changes.outputs.matrix) }} + steps: + - uses: actions/checkout@v4 + - name: Publish project + run: | + echo "Publishing ${{ matrix.project }}" + VERSION=$(./gradlew --quiet :${{ matrix.project }}:printVersion) + if [ "${{ github.event_name }}" = "push" ]; then + VERSION="${VERSION}-SNAPSHOT" + fi + ./gradlew :${{ matrix.project }}:publish -Pversion="$VERSION" \ No newline at end of file diff --git a/build.gradle b/build.gradle index 5245e5199..f799cb415 100644 --- a/build.gradle +++ b/build.gradle @@ -23,6 +23,12 @@ subprojects { testImplementation "junit:junit:4.13.1" } + task printVersion { + doLast { + print project.version + } + } + sourceCompatibility = 17 targetCompatibility = 17 From 962f3fb4df06964d9969cf096845c2f16620516b Mon Sep 17 00:00:00 2001 From: Lennon Scariano Date: Mon, 27 Apr 2026 13:50:36 -0400 Subject: [PATCH 02/10] fix run spec --- .github/workflows/gradle_publish.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/gradle_publish.yml b/.github/workflows/gradle_publish.yml index 41d6642f5..fe7f064aa 100644 --- a/.github/workflows/gradle_publish.yml +++ b/.github/workflows/gradle_publish.yml @@ -28,7 +28,7 @@ jobs: #handle if project is specified if [ "${{ github.event_name }}" = "workflow_dispatch" ]; then if [ "${{ inputs.run_all }}" = "false" ]; then - CHANGED="${{ inputs.run_specific }}" + CHANGED=${{ inputs.run_specific }} fi else #merge to master, detect specific changes CHANGED=$(grep -F -o -f <(echo "$CHANGED") <(git diff --name-only HEAD~ HEAD)) From 903334d43e03405c80da36ca4a80db34d62052c5 Mon Sep 17 00:00:00 2001 From: Lennon Scariano Date: Mon, 27 Apr 2026 13:56:28 -0400 Subject: [PATCH 03/10] add github token --- .github/workflows/gradle_publish.yml | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/.github/workflows/gradle_publish.yml b/.github/workflows/gradle_publish.yml index fe7f064aa..078a38ad1 100644 --- a/.github/workflows/gradle_publish.yml +++ b/.github/workflows/gradle_publish.yml @@ -55,4 +55,6 @@ jobs: if [ "${{ github.event_name }}" = "push" ]; then VERSION="${VERSION}-SNAPSHOT" fi - ./gradlew :${{ matrix.project }}:publish -Pversion="$VERSION" \ No newline at end of file + ./gradlew :${{ matrix.project }}:publish -Pversion="$VERSION" + env: + GH_TOKEN: ${{ secrets.GITHUB_TOKEN }} \ No newline at end of file From 1214b09958555ebb93f349041c440630e22161f2 Mon Sep 17 00:00:00 2001 From: Lennon Scariano Date: Mon, 27 Apr 2026 13:58:55 -0400 Subject: [PATCH 04/10] fix name --- .github/workflows/gradle_publish.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/gradle_publish.yml b/.github/workflows/gradle_publish.yml index 078a38ad1..945347eb2 100644 --- a/.github/workflows/gradle_publish.yml +++ b/.github/workflows/gradle_publish.yml @@ -57,4 +57,4 @@ jobs: fi ./gradlew :${{ matrix.project }}:publish -Pversion="$VERSION" env: - GH_TOKEN: ${{ secrets.GITHUB_TOKEN }} \ No newline at end of file + GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} \ No newline at end of file From 7ef9ce56d2d0a13b92ba9ad81ba406059114edea Mon Sep 17 00:00:00 2001 From: Lennon Scariano Date: Mon, 27 Apr 2026 14:13:28 -0400 Subject: [PATCH 05/10] allow multiline --- .github/workflows/gradle_publish.yml | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/.github/workflows/gradle_publish.yml b/.github/workflows/gradle_publish.yml index 945347eb2..4b3f99776 100644 --- a/.github/workflows/gradle_publish.yml +++ b/.github/workflows/gradle_publish.yml @@ -34,11 +34,15 @@ jobs: CHANGED=$(grep -F -o -f <(echo "$CHANGED") <(git diff --name-only HEAD~ HEAD)) fi + CHANGED=$(echo -n "$CHANGED" | base64) + echo "changed=$CHANGED" >> $GITHUB_OUTPUT - name: Build matrix id: set-matrix run: | - ARR=$(echo "${{ steps.changes.outputs.changed }}" | jq -R -s -c 'split("\n")[:-1]') + ENCODED=${{ steps.changes.outputs.changed }} + CHANGED=$(echo -n "$ENCODED" | base64 --decode) + ARR=$(echo "$CHANGED" | jq -R -s -c 'split("\n")[:-1]') echo "matrix={\"project\":$ARR}" >> $GITHUB_OUTPUT publish: From a297f82c13d68e24215e7a86df04faf61efa8850 Mon Sep 17 00:00:00 2001 From: Lennon Scariano Date: Mon, 27 Apr 2026 14:22:15 -0400 Subject: [PATCH 06/10] more multiline fix --- .github/workflows/gradle_publish.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/gradle_publish.yml b/.github/workflows/gradle_publish.yml index 4b3f99776..3c51cf562 100644 --- a/.github/workflows/gradle_publish.yml +++ b/.github/workflows/gradle_publish.yml @@ -34,7 +34,7 @@ jobs: CHANGED=$(grep -F -o -f <(echo "$CHANGED") <(git diff --name-only HEAD~ HEAD)) fi - CHANGED=$(echo -n "$CHANGED" | base64) + CHANGED=$(echo -n "$CHANGED" | base64 -w 0) echo "changed=$CHANGED" >> $GITHUB_OUTPUT - name: Build matrix From ca0a1c7212bd5b7815e71249b06bbbc68369a2f6 Mon Sep 17 00:00:00 2001 From: Lennon Scariano Date: Mon, 27 Apr 2026 14:26:52 -0400 Subject: [PATCH 07/10] add recursive checkout --- .github/workflows/gradle_publish.yml | 2 ++ 1 file changed, 2 insertions(+) diff --git a/.github/workflows/gradle_publish.yml b/.github/workflows/gradle_publish.yml index 3c51cf562..2d2a3a077 100644 --- a/.github/workflows/gradle_publish.yml +++ b/.github/workflows/gradle_publish.yml @@ -19,6 +19,8 @@ jobs: matrix: ${{ steps.set-matrix.outputs.matrix }} steps: - uses: actions/checkout@v4 + with: + submodules: recursive - name: Detect changed subprojects id: changes run: | From d047b474596bf30bf608d9e038d0aa6c14b4111d Mon Sep 17 00:00:00 2001 From: Lennon Scariano Date: Mon, 27 Apr 2026 14:33:53 -0400 Subject: [PATCH 08/10] add prebuild step --- .github/workflows/gradle_publish.yml | 1 + 1 file changed, 1 insertion(+) diff --git a/.github/workflows/gradle_publish.yml b/.github/workflows/gradle_publish.yml index 2d2a3a077..766e323d1 100644 --- a/.github/workflows/gradle_publish.yml +++ b/.github/workflows/gradle_publish.yml @@ -61,6 +61,7 @@ jobs: if [ "${{ github.event_name }}" = "push" ]; then VERSION="${VERSION}-SNAPSHOT" fi + ./gradlew :${{ matrix.project }}:build -Pversion="$VERSION" -x test ./gradlew :${{ matrix.project }}:publish -Pversion="$VERSION" env: GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} \ No newline at end of file From b7ee775fe7e173839f0578de6e87fb8552560ee4 Mon Sep 17 00:00:00 2001 From: Lennon Scariano Date: Mon, 27 Apr 2026 14:38:33 -0400 Subject: [PATCH 09/10] allow failure of publish job --- .github/workflows/gradle_publish.yml | 1 + 1 file changed, 1 insertion(+) diff --git a/.github/workflows/gradle_publish.yml b/.github/workflows/gradle_publish.yml index 766e323d1..3a50aebca 100644 --- a/.github/workflows/gradle_publish.yml +++ b/.github/workflows/gradle_publish.yml @@ -52,6 +52,7 @@ jobs: runs-on: ubuntu-latest strategy: matrix: ${{ fromJson(needs.detect-changes.outputs.matrix) }} + fail-fast: false steps: - uses: actions/checkout@v4 - name: Publish project From 0f6770922c881f934c3833dc2629cc08b3f9a009 Mon Sep 17 00:00:00 2001 From: Lennon Scariano Date: Mon, 27 Apr 2026 14:40:06 -0400 Subject: [PATCH 10/10] added recursive checkout on wrong job --- .github/workflows/gradle_publish.yml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/.github/workflows/gradle_publish.yml b/.github/workflows/gradle_publish.yml index 3a50aebca..ca360fc44 100644 --- a/.github/workflows/gradle_publish.yml +++ b/.github/workflows/gradle_publish.yml @@ -19,8 +19,6 @@ jobs: matrix: ${{ steps.set-matrix.outputs.matrix }} steps: - uses: actions/checkout@v4 - with: - submodules: recursive - name: Detect changed subprojects id: changes run: | @@ -55,6 +53,8 @@ jobs: fail-fast: false steps: - uses: actions/checkout@v4 + with: + submodules: recursive - name: Publish project run: | echo "Publishing ${{ matrix.project }}"