From edd5dc1752c88accb1d70f55ef37d94c54997753 Mon Sep 17 00:00:00 2001 From: AlmightyHak Date: Tue, 17 Jun 2025 10:11:40 -0500 Subject: [PATCH] Update .github/workflows/build_push.yml --- .github/workflows/build_push.yml | 63 ++++++++++++++++++++++---------- 1 file changed, 44 insertions(+), 19 deletions(-) diff --git a/.github/workflows/build_push.yml b/.github/workflows/build_push.yml index ebd5d35d..8f461747 100644 --- a/.github/workflows/build_push.yml +++ b/.github/workflows/build_push.yml @@ -22,6 +22,8 @@ jobs: prepare: name: Prepare job runs-on: docker + outputs: + individualMatrix: ${{ steps.generate-matrices.outputs.individualMatrix }} steps: - name: Clone repo uses: https://github.com/actions/checkout@b4ffde65f46336ab88eb53be808477a3936bae11 # v4 @@ -29,23 +31,22 @@ jobs: ref: main token: ${{ secrets.BOT_PAT }} - - name: Find lib changes - id: modified-libs - uses: https://github.com/tj-actions/changed-files@90a06d6ba9543371ab4df8eeca0be07ca6054959 #v42 - with: - files: lib/ - files_ignore: lib/**.md - files_separator: " " - safe_output: false - - # This step is going to commit, but this will not trigger another workflow. - - name: Bump extensions that uses a modified lib - if: steps.modified-libs.outputs.any_changed == 'true' + - name: Get number of modules run: | - ./.github/scripts/bump-versions.py ${{ steps.modified-libs.outputs.all_changed_files }} - - - name: Validate Gradle Wrapper - uses: https://github.com/gradle/wrapper-validation-action@a494d935f4b56874c4a5a87d19af7afcf3a163d0 # v2 + set -x + projects=(src/*/*) + export CI_CHUNK_NUM=${#projects[@]} + echo "NUM_INDIVIDUAL_MODULES=${#projects[@]}" >> $GITHUB_ENV + + # Temporary pause because of leak of tj-actions/changed-files + # - name: Find lib changes + # id: modified-libs + # uses: tj-actions/changed-files@90a06d6ba9543371ab4df8eeca0be07ca6054959 #v42 + # with: + # files: lib/ + # files_ignore: lib/**.md + # files_separator: " " + # safe_output: false - name: Import GPG key uses: https://github.com/crazy-max/ghaction-import-gpg@v6 # v6.1.0 @@ -55,10 +56,33 @@ jobs: git_user_signingkey: true git_commit_gpgsign: true + # # This step is going to commit, but this will not trigger another workflow. + # - name: Bump extensions that uses a modified lib + # if: steps.modified-libs.outputs.any_changed == 'true' + # run: | + # chmod +x ./.github/scripts/bump-versions.py + # ./.github/scripts/bump-versions.py ${{ steps.modified-libs.outputs.all_changed_files }} + + - id: generate-matrices + name: Create output matrices + uses: https://github.com/actions/github-script@60a0d83039c74a4aee543508d2ffcb1c3799cdea # v7 + with: + script: | + const numIndividualModules = process.env.NUM_INDIVIDUAL_MODULES; + const chunkSize = process.env.CI_CHUNK_SIZE; + + const numIndividualChunks = Math.ceil(numIndividualModules / chunkSize); + + console.log(`Individual modules: ${numIndividualModules} (${numIndividualChunks} chunks of ${chunkSize})`); + + core.setOutput('individualMatrix', { 'chunk': [...Array(numIndividualChunks).keys()] }); + build_individual: name: Build individual modules needs: prepare runs-on: docker + strategy: + matrix: ${{ fromJSON(needs.prepare.outputs.individualMatrix) }} steps: - name: Checkout main branch uses: https://github.com/actions/checkout@b4ffde65f46336ab88eb53be808477a3936bae11 # v4 @@ -83,18 +107,19 @@ jobs: - name: Set up Gradle uses: https://github.com/gradle/actions/setup-gradle@245c8a24de79c0dbeabaf19ebcbbd3b2c36f278d # v4 - - name: Build extensions + - name: Build extensions (chunk ${{ matrix.chunk }}) env: + CI_CHUNK_NUM: ${{ matrix.chunk }} ALIAS: ${{ secrets.ALIAS }} KEY_STORE_PASSWORD: ${{ secrets.KEY_STORE_PASSWORD }} KEY_PASSWORD: ${{ secrets.KEY_PASSWORD }} run: chmod +x ./gradlew && ./gradlew -p src assembleRelease - - name: Upload APKs + - name: Upload APKs (chunk ${{ matrix.chunk }}) uses: https://code.forgejo.org/forgejo/upload-artifact@16871d9e8cfcf27ff31822cac382bbb5450f1e1e # v4-patch if: "github.repository == 'Kohi-den/extensions-source'" with: - name: "individual-apks" + name: "individual-apks-${{ matrix.chunk }}" path: "**/*.apk" retention-days: 1