Merge remote-tracking branch 'keiyoushi-upstream/main' into merge-kei… #358
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
name: CI-komikku | |
on: | |
push: | |
branches: | |
# - master | |
- merge-keiyoushi | |
paths: | |
- '**' | |
- '!**.md' | |
- '!.github/**' | |
- '.github/scripts/**' | |
- '.github/workflows/build_push_komikku.yml' | |
# Manual trigger | |
workflow_dispatch: | |
concurrency: | |
group: ${{ github.workflow }}-${{ github.ref }} | |
cancel-in-progress: true | |
env: | |
CI_CHUNK_SIZE: 65 | |
jobs: | |
prepare: | |
name: Prepare job | |
runs-on: ubuntu-latest | |
outputs: | |
individualMatrix: ${{ steps.generate-matrices.outputs.individualMatrix }} | |
steps: | |
- name: Clone repo | |
uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4 | |
- name: Validate Gradle Wrapper | |
uses: gradle/wrapper-validation-action@f9c9c575b8b21b6485636a91ffecd10e558c62f6 # v3 | |
- name: Get number of modules | |
run: | | |
set -x | |
projects=(src/*/*) | |
echo "NUM_INDIVIDUAL_MODULES=${#projects[@]}" >> $GITHUB_ENV | |
- id: generate-matrices | |
name: Create output matrices | |
uses: 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: ubuntu-latest | |
strategy: | |
matrix: ${{ fromJSON(needs.prepare.outputs.individualMatrix) }} | |
steps: | |
- name: Checkout ${{ github.ref_name }} branch | |
uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4 | |
- name: Set up JDK | |
uses: actions/setup-java@8df1039502a15bceb9433410b1a100fbe190c53b # v4 | |
with: | |
java-version: 17 | |
distribution: temurin | |
- name: Prepare signing key | |
run: | | |
echo ${{ secrets.SIGNING_KEY }} | base64 -d > signingkey.jks | |
- name: Set up Gradle | |
uses: gradle/actions/setup-gradle@cc4fc85e6b35bafd578d5ffbc76a5518407e1af0 # v4 | |
with: | |
cache-read-only: ${{ matrix.chunk != 0 }} | |
- 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: ./gradlew -p src assembleRelease | |
- name: Upload APKs (chunk ${{ matrix.chunk }}) | |
uses: actions/upload-artifact@b4b15b8c7c6ac21ea08fcf65892d2ee8f75cf882 # v4 | |
if: github.repository == 'komikku-app/komikku-extensions' | |
with: | |
name: "individual-apks-${{ matrix.chunk }}" | |
path: "**/*.apk" | |
retention-days: 1 | |
- name: Clean up CI files | |
run: rm signingkey.jks | |
publish_repo: | |
name: Publish repo | |
needs: | |
- build_individual | |
if: github.repository == 'komikku-app/komikku-extensions' | |
runs-on: ubuntu-latest | |
steps: | |
- name: Download APK artifacts | |
uses: actions/download-artifact@fa0a91b85d4f404e444e00e005971372dc801d16 # v4 | |
with: | |
path: ~/apk-artifacts | |
- name: Set up JDK | |
uses: actions/setup-java@8df1039502a15bceb9433410b1a100fbe190c53b # v4 | |
with: | |
java-version: 17 | |
distribution: temurin | |
- name: Checkout ${{ github.ref_name }} branch | |
uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4 | |
with: | |
ref: ${{ github.ref_name }} | |
path: ${{ github.ref_name }} | |
- name: Create repo artifacts | |
run: | | |
cd ${{ github.ref_name }} | |
python ./.github/scripts/move-apks.py | |
INSPECTOR_LINK="$(curl -s "https://api.github.com/repos/keiyoushi/extensions-inspector/releases/latest" | jq -r '.assets[0].browser_download_url')" | |
curl -L "$INSPECTOR_LINK" -o ./Inspector.jar | |
java -jar ./Inspector.jar "repo/apk" "output.json" "tmp" | |
python ./.github/scripts/create-repo.py | |
- name: Checkout repo branch | |
uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4 | |
with: | |
repository: komikku-app/extensions | |
token: ${{ secrets.BOT_PAT }} | |
ref: repo | |
path: repo | |
- name: Import GPG key | |
id: import-gpg | |
uses: crazy-max/ghaction-import-gpg@cb9bde2e2525e640591a934b1fd28eef1dcaf5e5 # v6 | |
with: | |
workdir: repo | |
gpg_private_key: ${{ secrets.GPG_PRIVATE_KEY }} | |
passphrase: ${{ secrets.PASSPHRASE }} | |
git_user_signingkey: true | |
git_commit_gpgsign: true | |
- name: GPG user IDs | |
run: | | |
echo "fingerprint: ${{ steps.import-gpg.outputs.fingerprint }}" | |
echo "keyid: ${{ steps.import-gpg.outputs.keyid }}" | |
echo "name: ${{ steps.import-gpg.outputs.name }}" | |
echo "email: ${{ steps.import-gpg.outputs.email }}" | |
- name: Deploy repo | |
run: | | |
cd repo | |
../${{ github.ref_name }}/.github/scripts/commit-repo.sh ../${{ github.ref_name }}/repo/ |