From f3d3070ea8c66e6a746414c2e8a6afac069c09c3 Mon Sep 17 00:00:00 2001 From: "Cuong M. Tran" Date: Wed, 8 May 2024 14:51:24 +0700 Subject: [PATCH] setup workflow to build preview repo --- .github/workflows/build_benchmark.yml | 194 ++++++++++++++++++++ .github/workflows/build_develop.yml | 151 ---------------- .github/workflows/build_preview.yml | 220 +++++++++++++---------- .github/workflows/build_push.yml | 174 ++++++++---------- .github/workflows/build_push_preview.yml | 51 ++++-- 5 files changed, 440 insertions(+), 350 deletions(-) create mode 100644 .github/workflows/build_benchmark.yml delete mode 100644 .github/workflows/build_develop.yml diff --git a/.github/workflows/build_benchmark.yml b/.github/workflows/build_benchmark.yml new file mode 100644 index 000000000..616ae1e87 --- /dev/null +++ b/.github/workflows/build_benchmark.yml @@ -0,0 +1,194 @@ +name: Benchmark Builder +on: + # Dispatch or Manual triggers + workflow_dispatch: + +# push: +# branches: +# - dev-benchmark + +concurrency: + group: ${{ github.workflow }}-${{ github.ref }} + cancel-in-progress: true + +jobs: + prepare-build: + if: github.ref == 'refs/tags/master' && github.repository == 'komikku-app/komikku' + runs-on: ubuntu-latest + outputs: + COMMIT_COUNT: ${{ steps.prepare_env.outputs.COMMIT_COUNT }} + CURRENT_SHA: ${{ steps.prepare_env.outputs.CURRENT_SHA }} + PREV_RELEASE_SHA: ${{ steps.prepare_env.outputs.PREV_RELEASE_SHA }} + COMMIT_LOGS: ${{ steps.prepare_env.outputs.COMMIT_LOGS }} + TAG_PREFIX: benchmark-r + ARTIFACTS_PREFIX: dev/benchmark/app-dev + steps: + - name: Get tag name + id: get_tag + run: | + set -x + echo "VERSION_TAG=${GITHUB_REF/refs\/tags\//}" >> $GITHUB_OUTPUT + + - name: Clone Repository (${{ steps.get_tag.outputs.VERSION_TAG }}) + uses: actions/checkout@v4 + with: + fetch-depth: 0 + + - name: Validate Gradle Wrapper + uses: gradle/actions/wrapper-validation@v3 + + - name: Prepare env + id: prepare_env + run: | + set -e + + commit_count=$(git rev-list --count HEAD) + echo "COMMIT_COUNT=$commit_count" >> $GITHUB_OUTPUT + current_sha=$(git rev-parse --short HEAD) + echo "CURRENT_SHA=$current_sha" >> $GITHUB_OUTPUT + + prev_release_sha=$(git log --oneline --decorate --tags --no-walk --pretty='%C(auto)%h' | head -n 1) + echo "PREV_RELEASE_SHA=$prev_release_sha" >> $GITHUB_OUTPUT + + echo "COMMIT_LOGS<<{delimiter} + $(curl -H "Accept: application/vnd.github.v3+json" \ + "https://api.github.com/repos/komikku-app/komikku/compare/$prev_release_sha...$current_sha" \ + | jq '[.commits[]|{message:(.commit.message | split("\n")), username:.author.login}]' \ + | jq -r '.[]|"- \(.message | first) (@\(.username))"') + {delimiter}" >> $GITHUB_OUTPUT + + build-app: + runs-on: ubuntu-latest + needs: prepare-build + steps: + - name: Clone Repository (r${{ needs.prepare-build.outputs.COMMIT_COUNT }}) + uses: actions/checkout@v4 + with: + fetch-depth: 0 + + - name: Set up gradle + uses: gradle/actions/setup-gradle@v3 + + - name: Setup Android SDK + run: | + ${ANDROID_SDK_ROOT}/cmdline-tools/latest/bin/sdkmanager "build-tools;29.0.3" + + - name: Set up JDK + uses: actions/setup-java@v4 + with: + java-version: 17 + distribution: temurin + + - name: Write google-services.json + uses: DamianReeves/write-file-action@v1.3 + with: + path: app/google-services.json + contents: ${{ secrets.GOOGLE_SERVICES_JSON }} + write-mode: overwrite + + - name: Write client_secrets.json + uses: DamianReeves/write-file-action@v1.3 + with: + path: app/src/main/assets/client_secrets.json + contents: ${{ secrets.GOOGLE_CLIENT_SECRETS_JSON }} + write-mode: overwrite + + # - name: Build app and run unit tests + # uses: gradle/gradle-command-action@v2 + # with: + # arguments: detekt assembleDevBenchmark testDevBenchmarkUnitTest + + - name: Build Benchmark app and run unit tests + run: ./gradlew assembleDevBenchmark testDevBenchmarkUnitTest --stacktrace + + - name: Upload artifacts + uses: actions/upload-artifact@v4 + with: + path: "**/*.apk" + retention-days: 1 + + release-app: + runs-on: ubuntu-latest + needs: + - prepare-build + - build-app + steps: + - name: Download artifacts + uses: actions/download-artifact@v4 + with: + merge-multiple: true + + - name: Setup Android SDK + run: | + ${ANDROID_SDK_ROOT}/cmdline-tools/latest/bin/sdkmanager "build-tools;29.0.3" + + - name: Sign APK + uses: r0adkll/sign-android-release@349ebdef58775b1e0d8099458af0816dc79b6407 # v1 + with: + releaseDirectory: app/build/outputs/apk/dev/benchmark + signingKeyBase64: ${{ secrets.SIGNING_KEY }} + alias: ${{ secrets.ALIAS }} + keyStorePassword: ${{ secrets.KEY_STORE_PASSWORD }} + keyPassword: ${{ secrets.KEY_PASSWORD }} + + - name: Get SHA & clean up build artifacts + id: get_sha + run: | + set -e + + mv app/build/outputs/apk/${{ needs.prepare-build.outputs.ARTIFACTS_PREFIX }}-universal-benchmark-signed.apk Komikku-${{ needs.prepare-build.outputs.TAG_PREFIX }}${{ needs.prepare-build.outputs.COMMIT_COUNT }}.apk + sha=`sha256sum Komikku-${{ needs.prepare-build.outputs.TAG_PREFIX }}${{ needs.prepare-build.outputs.COMMIT_COUNT }}.apk | awk '{ print $1 }'` + echo "APK_UNIVERSAL_SHA=$sha" >> $GITHUB_OUTPUT + + mv app/build/outputs/apk/${{ needs.prepare-build.outputs.ARTIFACTS_PREFIX }}-arm64-v8a-benchmark-signed.apk Komikku-arm64-v8a-${{ needs.prepare-build.outputs.TAG_PREFIX }}${{ needs.prepare-build.outputs.COMMIT_COUNT }}.apk + sha=`sha256sum Komikku-arm64-v8a-${{ needs.prepare-build.outputs.TAG_PREFIX }}${{ needs.prepare-build.outputs.COMMIT_COUNT }}.apk | awk '{ print $1 }'` + echo "APK_ARM64_V8A_SHA=$sha" >> $GITHUB_OUTPUT + + mv app/build/outputs/apk/${{ needs.prepare-build.outputs.ARTIFACTS_PREFIX }}-armeabi-v7a-benchmark-signed.apk Komikku-armeabi-v7a-${{ needs.prepare-build.outputs.TAG_PREFIX }}${{ needs.prepare-build.outputs.COMMIT_COUNT }}.apk + sha=`sha256sum Komikku-armeabi-v7a-${{ needs.prepare-build.outputs.TAG_PREFIX }}${{ needs.prepare-build.outputs.COMMIT_COUNT }}.apk | awk '{ print $1 }'` + echo "APK_ARMEABI_V7A_SHA=$sha" >> $GITHUB_OUTPUT + + mv app/build/outputs/apk/${{ needs.prepare-build.outputs.ARTIFACTS_PREFIX }}-x86-benchmark-signed.apk Komikku-x86-${{ needs.prepare-build.outputs.TAG_PREFIX }}${{ needs.prepare-build.outputs.COMMIT_COUNT }}.apk + sha=`sha256sum Komikku-x86-${{ needs.prepare-build.outputs.TAG_PREFIX }}${{ needs.prepare-build.outputs.COMMIT_COUNT }}.apk | awk '{ print $1 }'` + echo "APK_X86_SHA=$sha" >> $GITHUB_OUTPUT + + mv app/build/outputs/apk/${{ needs.prepare-build.outputs.ARTIFACTS_PREFIX }}-x86_64-benchmark-signed.apk Komikku-x86_64-${{ needs.prepare-build.outputs.TAG_PREFIX }}${{ needs.prepare-build.outputs.COMMIT_COUNT }}.apk + sha=`sha256sum Komikku-x86_64-${{ needs.prepare-build.outputs.TAG_PREFIX }}${{ needs.prepare-build.outputs.COMMIT_COUNT }}.apk | awk '{ print $1 }'` + echo "APK_X86_64_SHA=$sha" >> $GITHUB_OUTPUT + + - name: Create release + uses: softprops/action-gh-release@9d7c94cfd0a1f3ed45544c887983e9fa900f0564 # v2.0.4 + with: + tag_name: ${{ needs.prepare-build.outputs.TAG_PREFIX }}${{ needs.prepare-build.outputs.COMMIT_COUNT }} + name: Komikku Benchmark ${{ needs.prepare-build.outputs.TAG_PREFIX }}${{ needs.prepare-build.outputs.COMMIT_COUNT }} + body: | + ### Commits + + https://github.com/komikku-app/komikku/compare/${{ needs.prepare-build.outputs.PREV_RELEASE_SHA }}...${{ needs.prepare-build.outputs.CURRENT_SHA }} + + ${{ needs.prepare-build.outputs.COMMIT_LOGS }} + + --- + + ### Checksums + + | Variant | SHA-256 | + | ------- | ------- | + | Universal | ${{ steps.get_sha.outputs.APK_UNIVERSAL_SHA }} | + | arm64-v8a | ${{ steps.get_sha.outputs.APK_ARM64_V8A_SHA }} | + | armeabi-v7a | ${{ steps.get_sha.outputs.APK_ARMEABI_V7A_SHA }} | + | x86 | ${{ steps.get_sha.outputs.APK_X86_SHA }} | + | x86_64 | ${{ steps.get_sha.outputs.APK_X86_64_SHA }} | + + ## If you are unsure which apk to download then go with Komikku-${{ needs.prepare-build.outputs.TAG_PREFIX }}${{ needs.prepare-build.outputs.COMMIT_COUNT }}.apk + files: | + Komikku-${{ needs.prepare-build.outputs.TAG_PREFIX }}${{ needs.prepare-build.outputs.COMMIT_COUNT }}.apk + Komikku-arm64-v8a-${{ needs.prepare-build.outputs.TAG_PREFIX }}${{ needs.prepare-build.outputs.COMMIT_COUNT }}.apk + Komikku-armeabi-v7a-${{ needs.prepare-build.outputs.TAG_PREFIX }}${{ needs.prepare-build.outputs.COMMIT_COUNT }}.apk + Komikku-x86-${{ needs.prepare-build.outputs.TAG_PREFIX }}${{ needs.prepare-build.outputs.COMMIT_COUNT }}.apk + Komikku-x86_64-${{ needs.prepare-build.outputs.TAG_PREFIX }}${{ needs.prepare-build.outputs.COMMIT_COUNT }}.apk + draft: true + prerelease: true + env: + GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} + \ No newline at end of file diff --git a/.github/workflows/build_develop.yml b/.github/workflows/build_develop.yml deleted file mode 100644 index 2cc213437..000000000 --- a/.github/workflows/build_develop.yml +++ /dev/null @@ -1,151 +0,0 @@ -name: Development Builder -on: - push: - branches: - - develop - - dev-benchmark - workflow_dispatch: # Manual trigger - -concurrency: - group: ${{ github.workflow }}-${{ github.ref }} - cancel-in-progress: true - -jobs: - build: - name: Build dev-benchmark commit - runs-on: ubuntu-latest - - steps: - - name: Clone repo - uses: actions/checkout@v4 - with: - ref: ${{ github.ref_name }} - fetch-depth: 0 - - - name: Set up gradle - uses: gradle/actions/setup-gradle@v3 - - - name: Setup Android SDK - run: | - ${ANDROID_SDK_ROOT}/cmdline-tools/latest/bin/sdkmanager "build-tools;29.0.3" - - - name: Set up JDK - uses: actions/setup-java@v4 - with: - java-version: 17 - distribution: temurin - - - name: Prepare build - run: | - set -e - - git fetch --tags - - prev_release_sha=$(git log --oneline --decorate --tags --no-walk --pretty='%C(auto)%h' | head -n 1) - echo "PREV_RELEASE_SHA=$prev_release_sha" >> $GITHUB_ENV - - current_sha=$(git log -1 --pretty='%C(auto)%h' | head -n 1) - echo "CURRENT_SHA=$current_sha" >> $GITHUB_ENV - - echo "COMMIT_LOGS<<{delimiter} - $(curl -H "Accept: application/vnd.github.v3+json" \ - "https://api.github.com/repos/komikku-app/komikku/compare/$prev_release_sha...$current_sha" \ - | jq '[.commits[]|{message:(.commit.message | split("\n")), username:.author.login}]' \ - | jq -r '.[]|"- \(.message | first) (@\(.username))"') - {delimiter}" >> $GITHUB_ENV - - - name: Set CHANGELOG - run: | - changelog="$(git log ${{ env.PREV_RELEASE_SHA }}..${{ env.CURRENT_SHA }} --pretty=format:'{{changelogtext}}%s (@%an){{!changelogtext}}')" - changelog="${changelog//$'%'/%25}" - changelog="${changelog//$'\n'/}" - changelog="${changelog//$'\r'/}" - changelog="${changelog//$'<'/}" - changelog="${changelog//$'>'/}" - changelog="${changelog//$'&'/}" - changelog="$(echo $changelog | sed -e 's/{{changelogtext}}//g')" - changelog="$(echo $changelog | sed -e 's/{{!changelogtext}}/<\/changelogtext>/g')" - changelog="$changelog" - echo "CHANGELOG=$changelog" >> $GITHUB_ENV - - - name: Write changelog_debug.xml - uses: DamianReeves/write-file-action@v1.3 - with: - path: app/src/main/res/raw/changelog_debug.xml - contents: "${{ env.CHANGELOG }}" - write-mode: overwrite - - - name: Build app - if: ${{ ! startsWith(github.ref, 'refs/tags/') && github.repository == 'komikku-app/komikku' }} - run: ./gradlew assembleDevBenchmark testDevBenchmarkUnitTest --stacktrace - - - name: Sign Android Release - if: ${{ ! startsWith(github.ref, 'refs/tags/') && github.repository == 'komikku-app/komikku' }} - uses: r0adkll/sign-android-release@v1 - with: - releaseDirectory: app/build/outputs/apk/dev/benchmark - signingKeyBase64: ${{ secrets.SIGNING_KEY }} - alias: ${{ secrets.ALIAS }} - keyStorePassword: ${{ secrets.KEY_STORE_PASSWORD }} - keyPassword: ${{ secrets.KEY_PASSWORD }} - - - name: Clean up build artifacts - if: ${{ ! startsWith(github.ref, 'refs/tags/') && github.repository == 'komikku-app/komikku' }} - run: | - set -e - - mv app/build/outputs/apk/dev/benchmark/app-dev-universal-benchmark-signed.apk Komikku-dev-${{ github.run_number }}.apk - sha=`sha256sum Komikku-dev-${{ github.run_number }}.apk | awk '{ print $1 }'` - echo "APK_UNIVERSAL_SHA=$sha" >> $GITHUB_ENV - - cp app/build/outputs/apk/dev/benchmark/app-dev-arm64-v8a-benchmark-signed.apk Komikku-arm64-v8a-dev-${{ github.run_number }}.apk - sha=`sha256sum Komikku-arm64-v8a-dev-${{ github.run_number }}.apk | awk '{ print $1 }'` - echo "APK_ARM64_V8A_SHA=$sha" >> $GITHUB_ENV - - cp app/build/outputs/apk/dev/benchmark/app-dev-armeabi-v7a-benchmark-signed.apk Komikku-armeabi-v7a-dev-${{ github.run_number }}.apk - sha=`sha256sum Komikku-armeabi-v7a-dev-${{ github.run_number }}.apk | awk '{ print $1 }'` - echo "APK_ARMEABI_V7A_SHA=$sha" >> $GITHUB_ENV - - cp app/build/outputs/apk/dev/benchmark/app-dev-x86-benchmark-signed.apk Komikku-x86-dev-${{ github.run_number }}.apk - sha=`sha256sum Komikku-x86-dev-${{ github.run_number }}.apk | awk '{ print $1 }'` - echo "APK_X86_SHA=$sha" >> $GITHUB_ENV - - cp app/build/outputs/apk/dev/benchmark/app-dev-x86_64-benchmark-signed.apk Komikku-x86_64-dev-${{ github.run_number }}.apk - sha=`sha256sum Komikku-x86_64-dev-${{ github.run_number }}.apk | awk '{ print $1 }'` - echo "APK_X86_64_SHA=$sha" >> $GITHUB_ENV - - - name: Create release - if: ${{ ! startsWith(github.ref, 'refs/tags/') && github.repository == 'komikku-app/komikku' }} - uses: softprops/action-gh-release@v1 - with: - tag_name: dev-${{ github.run_number }} - target_commitish: ${{ github.ref }} - name: Komikku Development Benchmark Build ${{ github.run_number }} - body: | - ### Commits - - https://github.com/komikku-app/komikku/compare/${{ env.PREV_RELEASE_SHA }}...${{ env.CURRENT_SHA }} - - ${{ env.COMMIT_LOGS }} - - --- - - ### Checksums - - | Variant | SHA-256 | - | ------- | ------- | - | Universal | ${{ env.APK_UNIVERSAL_SHA }} | - | arm64-v8a | ${{ env.APK_ARM64_V8A_SHA }} | - | armeabi-v7a | ${{ env.APK_ARMEABI_V7A_SHA }} | - | x86 | ${{ env.APK_X86_SHA }} | - | x86_64 | ${{ env.APK_X86_64_SHA }} | - files: | - Komikku-dev-${{ github.run_number }}.apk - Komikku-arm64-v8a-dev-${{ github.run_number }}.apk - Komikku-armeabi-v7a-dev-${{ github.run_number }}.apk - Komikku-x86-dev-${{ github.run_number }}.apk - Komikku-x86_64-dev-${{ github.run_number }}.apk - draft: false - prerelease: true - env: - GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} diff --git a/.github/workflows/build_preview.yml b/.github/workflows/build_preview.yml index 9939ca967..b6a11f40b 100644 --- a/.github/workflows/build_preview.yml +++ b/.github/workflows/build_preview.yml @@ -1,26 +1,74 @@ name: Preview Builder + on: - push: - branches: - - master - paths: - - '**' - - '!**.md' - - '!.github/**' - - '.github/scripts/**' - - '.github/workflows/**' + # Dispatch or Manual triggers + workflow_dispatch: + +# push: +# branches: +# - master +# paths: +# - '**' +# - '!**.md' +# - '!.github/**' +# - '.github/scripts/**' +# - '.github/workflows/**' concurrency: group: ${{ github.workflow }}-${{ github.ref }} cancel-in-progress: true jobs: - build: - name: Build preview app + prepare-build: + if: github.ref == 'refs/tags/master' && github.repository == 'komikku-app/komikku' runs-on: ubuntu-latest - + outputs: + COMMIT_COUNT: ${{ steps.prepare_env.outputs.COMMIT_COUNT }} + CURRENT_SHA: ${{ steps.prepare_env.outputs.CURRENT_SHA }} + PREV_RELEASE_SHA: ${{ steps.prepare_env.outputs.PREV_RELEASE_SHA }} + COMMIT_LOGS: ${{ steps.prepare_env.outputs.COMMIT_LOGS }} + TAG_PREFIX: r + ARTIFACTS_PREFIX: standard/preview/app-standard steps: - - name: Clone repo + - name: Get tag name + id: get_tag + run: | + set -x + echo "VERSION_TAG=${GITHUB_REF/refs\/tags\//}" >> $GITHUB_OUTPUT + + - name: Clone Repository (${{ steps.get_tag.outputs.VERSION_TAG }}) + uses: actions/checkout@v4 + with: + fetch-depth: 0 + + - name: Validate Gradle Wrapper + uses: gradle/actions/wrapper-validation@v3 + + - name: Prepare env + id: prepare_env + run: | + set -e + + commit_count=$(git rev-list --count HEAD) + echo "COMMIT_COUNT=$commit_count" >> $GITHUB_OUTPUT + current_sha=$(git rev-parse --short HEAD) + echo "CURRENT_SHA=$current_sha" >> $GITHUB_OUTPUT + + prev_release_sha=$(git log --oneline --decorate --tags --no-walk --pretty='%C(auto)%h' | head -n 1) + echo "PREV_RELEASE_SHA=$prev_release_sha" >> $GITHUB_OUTPUT + + echo "COMMIT_LOGS<<{delimiter} + $(curl -H "Accept: application/vnd.github.v3+json" \ + "https://api.github.com/repos/komikku-app/komikku/compare/$prev_release_sha...$current_sha" \ + | jq '[.commits[]|{message:(.commit.message | split("\n")), username:.author.login}]' \ + | jq -r '.[]|"- \(.message | first) (@\(.username))"') + {delimiter}" >> $GITHUB_OUTPUT + + build-app: + runs-on: ubuntu-latest + needs: prepare-build + steps: + - name: Clone Repository (r${{ needs.prepare-build.outputs.COMMIT_COUNT }}) uses: actions/checkout@v4 with: fetch-depth: 0 @@ -37,105 +85,95 @@ jobs: with: java-version: 17 distribution: temurin - - - name: Prepare build - run: | - set -e - - git fetch --tags - - prev_release_sha=$(git log --oneline --decorate --tags --no-walk --pretty='%C(auto)%h' | head -n 1) - echo "PREV_RELEASE_SHA=$prev_release_sha" >> $GITHUB_ENV - current_sha=$(git log -1 --pretty='%C(auto)%h' | head -n 1) - echo "CURRENT_SHA=$current_sha" >> $GITHUB_ENV - - echo "COMMIT_LOGS<<{delimiter} - $(curl -H "Accept: application/vnd.github.v3+json" \ - "https://api.github.com/repos/komikku-app/komikku/compare/$prev_release_sha...$current_sha" \ - | jq '[.commits[]|{message:(.commit.message | split("\n")), username:.author.login}]' \ - | jq -r '.[]|"- \(.message | first) (@\(.username))"') - {delimiter}" >> $GITHUB_ENV - - - name: Set CHANGELOG - run: | - changelog="$(git log ${{ env.PREV_RELEASE_SHA }}..${{ env.CURRENT_SHA }} --pretty=format:'{{changelogtext}}%s (@%an){{!changelogtext}}')" - changelog="${changelog//$'%'/%25}" - changelog="${changelog//$'\n'/}" - changelog="${changelog//$'\r'/}" - changelog="${changelog//$'<'/}" - changelog="${changelog//$'>'/}" - changelog="${changelog//$'&'/}" - changelog="$(echo $changelog | sed -e 's/{{changelogtext}}//g')" - changelog="$(echo $changelog | sed -e 's/{{!changelogtext}}/<\/changelogtext>/g')" - changelog="$changelog" - echo "CHANGELOG=$changelog" >> $GITHUB_ENV - - name: Write google-services.json uses: DamianReeves/write-file-action@v1.3 with: path: app/google-services.json - contents: ${{ secrets.GOOGLE_SERVICES_TEXT }} + contents: ${{ secrets.GOOGLE_SERVICES_JSON }} write-mode: overwrite - name: Write client_secrets.json uses: DamianReeves/write-file-action@v1.3 with: path: app/src/main/assets/client_secrets.json - contents: ${{ secrets.CLIENT_SECRETS_TEXT }} + contents: ${{ secrets.GOOGLE_CLIENT_SECRETS_JSON }} write-mode: overwrite - - name: Build app - if: ${{ ! startsWith(github.ref, 'refs/tags/') && github.repository == 'komikku-app/komikku' }} - run: ./gradlew assembleStandardRelease testStandardReleaseUnitTest --stacktrace + # - name: Build app and run unit tests + # uses: gradle/gradle-command-action@v2 + # with: + # arguments: detekt assembleStandardPreview testStandardPreviewUnitTest - - name: Sign Android Release - if: ${{ ! startsWith(github.ref, 'refs/tags/') && github.repository == 'komikku-app/komikku' }} - uses: r0adkll/sign-android-release@v1 + - name: Build Preview app and run unit tests + run: ./gradlew assembleStandardPreview testStandardPreviewUnitTest --stacktrace + + - name: Upload artifacts + uses: actions/upload-artifact@v4 with: - releaseDirectory: app/build/outputs/apk/standard/release + path: "**/*.apk" + retention-days: 1 + + release-app: + runs-on: ubuntu-latest + needs: + - prepare-build + - build-app + steps: + - name: Download artifacts + uses: actions/download-artifact@v4 + with: + merge-multiple: true + + - name: Setup Android SDK + run: | + ${ANDROID_SDK_ROOT}/cmdline-tools/latest/bin/sdkmanager "build-tools;29.0.3" + + - name: Sign APK + uses: r0adkll/sign-android-release@349ebdef58775b1e0d8099458af0816dc79b6407 # v1 + with: + releaseDirectory: app/build/outputs/apk/standard/preview signingKeyBase64: ${{ secrets.SIGNING_KEY }} alias: ${{ secrets.ALIAS }} keyStorePassword: ${{ secrets.KEY_STORE_PASSWORD }} keyPassword: ${{ secrets.KEY_PASSWORD }} - - name: Clean up build artifacts - if: ${{ ! startsWith(github.ref, 'refs/tags/') && github.repository == 'komikku-app/komikku' }} + - name: Get SHA & clean up build artifacts + id: get_sha run: | set -e - mv app/build/outputs/apk/standard/release/app-standard-universal-release-unsigned-signed.apk Komikku-pre-${{ github.run_number }}.apk - sha=`sha256sum Komikku-pre-${{ github.run_number }}.apk | awk '{ print $1 }'` - echo "APK_UNIVERSAL_SHA=$sha" >> $GITHUB_ENV + mv app/build/outputs/apk/${{ needs.prepare-build.outputs.ARTIFACTS_PREFIX }}-universal-preview-signed.apk Komikku-${{ needs.prepare-build.outputs.TAG_PREFIX }}${{ needs.prepare-build.outputs.COMMIT_COUNT }}.apk + sha=`sha256sum Komikku-${{ needs.prepare-build.outputs.TAG_PREFIX }}${{ needs.prepare-build.outputs.COMMIT_COUNT }}.apk | awk '{ print $1 }'` + echo "APK_UNIVERSAL_SHA=$sha" >> $GITHUB_OUTPUT - cp app/build/outputs/apk/standard/release/app-standard-arm64-v8a-release-unsigned-signed.apk Komikku-arm64-v8a-pre-${{ github.run_number }}.apk - sha=`sha256sum Komikku-arm64-v8a-pre-${{ github.run_number }}.apk | awk '{ print $1 }'` - echo "APK_ARM64_V8A_SHA=$sha" >> $GITHUB_ENV + mv app/build/outputs/apk/${{ needs.prepare-build.outputs.ARTIFACTS_PREFIX }}-arm64-v8a-preview-signed.apk Komikku-arm64-v8a-${{ needs.prepare-build.outputs.TAG_PREFIX }}${{ needs.prepare-build.outputs.COMMIT_COUNT }}.apk + sha=`sha256sum Komikku-arm64-v8a-${{ needs.prepare-build.outputs.TAG_PREFIX }}${{ needs.prepare-build.outputs.COMMIT_COUNT }}.apk | awk '{ print $1 }'` + echo "APK_ARM64_V8A_SHA=$sha" >> $GITHUB_OUTPUT - cp app/build/outputs/apk/standard/release/app-standard-armeabi-v7a-release-unsigned-signed.apk Komikku-armeabi-v7a-pre-${{ github.run_number }}.apk - sha=`sha256sum Komikku-armeabi-v7a-pre-${{ github.run_number }}.apk | awk '{ print $1 }'` - echo "APK_ARMEABI_V7A_SHA=$sha" >> $GITHUB_ENV + mv app/build/outputs/apk/${{ needs.prepare-build.outputs.ARTIFACTS_PREFIX }}-armeabi-v7a-preview-signed.apk Komikku-armeabi-v7a-${{ needs.prepare-build.outputs.TAG_PREFIX }}${{ needs.prepare-build.outputs.COMMIT_COUNT }}.apk + sha=`sha256sum Komikku-armeabi-v7a-${{ needs.prepare-build.outputs.TAG_PREFIX }}${{ needs.prepare-build.outputs.COMMIT_COUNT }}.apk | awk '{ print $1 }'` + echo "APK_ARMEABI_V7A_SHA=$sha" >> $GITHUB_OUTPUT - cp app/build/outputs/apk/standard/release/app-standard-x86-release-unsigned-signed.apk Komikku-x86-pre-${{ github.run_number }}.apk - sha=`sha256sum Komikku-x86-pre-${{ github.run_number }}.apk | awk '{ print $1 }'` - echo "APK_X86_SHA=$sha" >> $GITHUB_ENV - - cp app/build/outputs/apk/standard/release/app-standard-x86_64-release-unsigned-signed.apk Komikku-x86_64-pre-${{ github.run_number }}.apk - sha=`sha256sum Komikku-x86_64-pre-${{ github.run_number }}.apk | awk '{ print $1 }'` - echo "APK_X86_64_SHA=$sha" >> $GITHUB_ENV + mv app/build/outputs/apk/${{ needs.prepare-build.outputs.ARTIFACTS_PREFIX }}-x86-preview-signed.apk Komikku-x86-${{ needs.prepare-build.outputs.TAG_PREFIX }}${{ needs.prepare-build.outputs.COMMIT_COUNT }}.apk + sha=`sha256sum Komikku-x86-${{ needs.prepare-build.outputs.TAG_PREFIX }}${{ needs.prepare-build.outputs.COMMIT_COUNT }}.apk | awk '{ print $1 }'` + echo "APK_X86_SHA=$sha" >> $GITHUB_OUTPUT + + mv app/build/outputs/apk/${{ needs.prepare-build.outputs.ARTIFACTS_PREFIX }}-x86_64-preview-signed.apk Komikku-x86_64-${{ needs.prepare-build.outputs.TAG_PREFIX }}${{ needs.prepare-build.outputs.COMMIT_COUNT }}.apk + sha=`sha256sum Komikku-x86_64-${{ needs.prepare-build.outputs.TAG_PREFIX }}${{ needs.prepare-build.outputs.COMMIT_COUNT }}.apk | awk '{ print $1 }'` + echo "APK_X86_64_SHA=$sha" >> $GITHUB_OUTPUT - name: Create release - if: ${{ ! startsWith(github.ref, 'refs/tags/') && github.repository == 'komikku-app/komikku' }} - uses: softprops/action-gh-release@v1 + uses: softprops/action-gh-release@9d7c94cfd0a1f3ed45544c887983e9fa900f0564 # v2.0.4 with: - tag_name: pre-release-${{ github.run_number }} - name: Komikku Preview Build ${{ github.run_number }} + tag_name: ${{ needs.prepare-build.outputs.TAG_PREFIX }}${{ needs.prepare-build.outputs.COMMIT_COUNT }} + name: Komikku Preview ${{ needs.prepare-build.outputs.TAG_PREFIX }}${{ needs.prepare-build.outputs.COMMIT_COUNT }} body: | ### Commits - https://github.com/komikku-app/komikku/compare/${{ env.PREV_RELEASE_SHA }}...${{ env.CURRENT_SHA }} + https://github.com/komikku-app/komikku/compare/${{ needs.prepare-build.outputs.PREV_RELEASE_SHA }}...${{ needs.prepare-build.outputs.CURRENT_SHA }} - ${{ env.COMMIT_LOGS }} + ${{ needs.prepare-build.outputs.COMMIT_LOGS }} --- @@ -143,18 +181,20 @@ jobs: | Variant | SHA-256 | | ------- | ------- | - | Universal | ${{ env.APK_UNIVERSAL_SHA }} | - | arm64-v8a | ${{ env.APK_ARM64_V8A_SHA }} | - | armeabi-v7a | ${{ env.APK_ARMEABI_V7A_SHA }} | - | x86 | ${{ env.APK_X86_SHA }} | - | x86_64 | ${{ env.APK_X86_64_SHA }} | + | Universal | ${{ steps.get_sha.outputs.APK_UNIVERSAL_SHA }} | + | arm64-v8a | ${{ steps.get_sha.outputs.APK_ARM64_V8A_SHA }} | + | armeabi-v7a | ${{ steps.get_sha.outputs.APK_ARMEABI_V7A_SHA }} | + | x86 | ${{ steps.get_sha.outputs.APK_X86_SHA }} | + | x86_64 | ${{ steps.get_sha.outputs.APK_X86_64_SHA }} | + + ## If you are unsure which apk to download then go with Komikku-${{ needs.prepare-build.outputs.TAG_PREFIX }}${{ needs.prepare-build.outputs.COMMIT_COUNT }}.apk files: | - Komikku-pre-${{ github.run_number }}.apk - Komikku-arm64-v8a-pre-${{ github.run_number }}.apk - Komikku-armeabi-v7a-pre-${{ github.run_number }}.apk - Komikku-x86-pre-${{ github.run_number }}.apk - Komikku-x86_64-pre-${{ github.run_number }}.apk + Komikku-${{ needs.prepare-build.outputs.TAG_PREFIX }}${{ needs.prepare-build.outputs.COMMIT_COUNT }}.apk + Komikku-arm64-v8a-${{ needs.prepare-build.outputs.TAG_PREFIX }}${{ needs.prepare-build.outputs.COMMIT_COUNT }}.apk + Komikku-armeabi-v7a-${{ needs.prepare-build.outputs.TAG_PREFIX }}${{ needs.prepare-build.outputs.COMMIT_COUNT }}.apk + Komikku-x86-${{ needs.prepare-build.outputs.TAG_PREFIX }}${{ needs.prepare-build.outputs.COMMIT_COUNT }}.apk + Komikku-x86_64-${{ needs.prepare-build.outputs.TAG_PREFIX }}${{ needs.prepare-build.outputs.COMMIT_COUNT }}.apk draft: true - prerelease: false + prerelease: true env: GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} diff --git a/.github/workflows/build_push.yml b/.github/workflows/build_push.yml index 1a9eb3e20..e04cf7291 100644 --- a/.github/workflows/build_push.yml +++ b/.github/workflows/build_push.yml @@ -3,57 +3,37 @@ on: push: tags: - v* + # Dispatch or Manual triggers + workflow_dispatch: concurrency: group: ${{ github.workflow }}-${{ github.ref }} cancel-in-progress: true jobs: - build: + build-app: + if: startsWith(github.ref, 'refs/tags/') && github.repository == 'komikku-app/komikku' name: Build release app runs-on: ubuntu-latest - + outputs: + VERSION_TAG: ${{ steps.get_tag.outputs.VERSION_TAG }} steps: - - name: Clone repo + - name: Get tag name + id: get_tag + run: | + set -x + echo "VERSION_TAG=${GITHUB_REF/refs\/tags\//}" >> $GITHUB_OUTPUT + + - name: Clone Repository (${{ steps.get_tag.outputs.VERSION_TAG }}) uses: actions/checkout@v4 with: fetch-depth: 0 - - name: Prepare build - run: | - set -e - - git fetch --tags - - prev_release_sha=$(git log --oneline --decorate --tags --no-walk --pretty='%C(auto)%h' | head -n 2 | tail -1) - echo "PREV_RELEASE_SHA=$prev_release_sha" >> $GITHUB_ENV - - current_sha=$(git log --oneline --decorate --tags --no-walk --pretty='%C(auto)%h' | head -n 1) - echo "CURRENT_SHA=$current_sha" >> $GITHUB_ENV - - echo "COMMIT_LOGS<<{delimiter} - $(curl -H "Accept: application/vnd.github.v3+json" \ - "https://api.github.com/repos/komikku-app/komikku/compare/$prev_release_sha...$current_sha" \ - | jq '[.commits[]|{message:(.commit.message | split("\n")), username:.author.login}]' \ - | jq -r '.[]|"- \(.message | first) (@\(.username))"') - {delimiter}" >> $GITHUB_ENV - - - name: Set CHANGELOG - run: | - changelog="$(git log ${{ env.PREV_RELEASE_SHA }}..${{ env.CURRENT_SHA }} --pretty=format:'{{changelogtext}}%s (@%an){{!changelogtext}}')" - changelog="${changelog//$'%'/%25}" - changelog="${changelog//$'\n'/}" - changelog="${changelog//$'\r'/}" - changelog="${changelog//$'<'/}" - changelog="${changelog//$'>'/}" - changelog="${changelog//$'&'/}" - changelog="$(echo $changelog | sed -e 's/{{changelogtext}}//g')" - changelog="$(echo $changelog | sed -e 's/{{!changelogtext}}/<\/changelogtext>/g')" - changelog="$changelog" - echo "CHANGELOG=$changelog" >> $GITHUB_ENV - - name: Validate Gradle Wrapper - uses: gradle/wrapper-validation-action@v3 + uses: gradle/actions/wrapper-validation@v3 + + - name: Set up gradle + uses: gradle/actions/setup-gradle@v3 - name: Setup Android SDK run: | @@ -63,41 +43,52 @@ jobs: uses: actions/setup-java@v4 with: java-version: 17 - distribution: adopt + distribution: temurin - - name: Set up gradle - uses: gradle/actions/setup-gradle@v3 - - # SY <-- - name: Write google-services.json uses: DamianReeves/write-file-action@v1.3 with: path: app/google-services.json - contents: ${{ secrets.GOOGLE_SERVICES_TEXT }} + contents: ${{ secrets.GOOGLE_SERVICES_JSON }} write-mode: overwrite - name: Write client_secrets.json uses: DamianReeves/write-file-action@v1.3 with: path: app/src/main/assets/client_secrets.json - contents: ${{ secrets.CLIENT_SECRETS_TEXT }} + contents: ${{ secrets.GOOGLE_CLIENT_SECRETS_JSON }} write-mode: overwrite - # SY --> + + # - name: Build app and run unit tests + # uses: gradle/gradle-command-action@v2 + # with: + # arguments: detekt assembleStandardRelease testStandardReleaseUnitTest - name: Build app and run unit tests - if: startsWith(github.ref, 'refs/tags/') && github.repository == 'komikku-app/komikku' run: ./gradlew assembleStandardRelease testStandardReleaseUnitTest --stacktrace - # Sign APK and create release for tags - - name: Get tag name - if: startsWith(github.ref, 'refs/tags/') && github.repository == 'komikku-app/komikku' + - name: Upload artifacts + uses: actions/upload-artifact@v4 + with: + path: "**/*.apk" + retention-days: 1 + + release-app: + runs-on: ubuntu-latest + needs: + - build-app + steps: + - name: Download artifacts + uses: actions/download-artifact@v4 + with: + merge-multiple: true + + - name: Setup Android SDK run: | - set -x - echo "VERSION_TAG=${GITHUB_REF/refs\/tags\//}" >> $GITHUB_ENV + ${ANDROID_SDK_ROOT}/cmdline-tools/latest/bin/sdkmanager "build-tools;29.0.3" - name: Sign APK - if: startsWith(github.ref, 'refs/tags/') && github.repository == 'komikku-app/komikku' - uses: r0adkll/sign-android-release@v1 + uses: r0adkll/sign-android-release@349ebdef58775b1e0d8099458af0816dc79b6407 # v1 with: releaseDirectory: app/build/outputs/apk/standard/release signingKeyBase64: ${{ secrets.SIGNING_KEY }} @@ -105,68 +96,57 @@ jobs: keyStorePassword: ${{ secrets.KEY_STORE_PASSWORD }} keyPassword: ${{ secrets.KEY_PASSWORD }} - - name: Clean up build artifacts - if: startsWith(github.ref, 'refs/tags/') && github.repository == 'komikku-app/komikku' + - name: Get SHA & clean up build artifacts + id: get_sha run: | set -e - mv app/build/outputs/apk/standard/release/app-standard-universal-release-unsigned-signed.apk Komikku-${{ env.VERSION_TAG }}.apk - sha=`sha256sum Komikku-${{ env.VERSION_TAG }}.apk | awk '{ print $1 }'` - echo "APK_UNIVERSAL_SHA=$sha" >> $GITHUB_ENV + mv app/build/outputs/apk/standard/release/app-standard-universal-release-unsigned-signed.apk Komikku-${{ needs.build-app.outputs.VERSION_TAG }}.apk + sha=`sha256sum Komikku-${{ needs.build-app.outputs.VERSION_TAG }}.apk | awk '{ print $1 }'` + echo "APK_UNIVERSAL_SHA=$sha" >> $GITHUB_OUTPUT - cp app/build/outputs/apk/standard/release/app-standard-arm64-v8a-release-unsigned-signed.apk Komikku-arm64-v8a-${{ env.VERSION_TAG }}.apk - sha=`sha256sum Komikku-arm64-v8a-${{ env.VERSION_TAG }}.apk | awk '{ print $1 }'` - echo "APK_ARM64_V8A_SHA=$sha" >> $GITHUB_ENV + mv app/build/outputs/apk/standard/release/app-standard-arm64-v8a-release-unsigned-signed.apk Komikku-arm64-v8a-${{ needs.build-app.outputs.VERSION_TAG }}.apk + sha=`sha256sum Komikku-arm64-v8a-${{ needs.build-app.outputs.VERSION_TAG }}.apk | awk '{ print $1 }'` + echo "APK_ARM64_V8A_SHA=$sha" >> $GITHUB_OUTPUT - cp app/build/outputs/apk/standard/release/app-standard-armeabi-v7a-release-unsigned-signed.apk Komikku-armeabi-v7a-${{ env.VERSION_TAG }}.apk - sha=`sha256sum Komikku-armeabi-v7a-${{ env.VERSION_TAG }}.apk | awk '{ print $1 }'` - echo "APK_ARMEABI_V7A_SHA=$sha" >> $GITHUB_ENV + mv app/build/outputs/apk/standard/release/app-standard-armeabi-v7a-release-unsigned-signed.apk Komikku-armeabi-v7a-${{ needs.build-app.outputs.VERSION_TAG }}.apk + sha=`sha256sum Komikku-armeabi-v7a-${{ needs.build-app.outputs.VERSION_TAG }}.apk | awk '{ print $1 }'` + echo "APK_ARMEABI_V7A_SHA=$sha" >> $GITHUB_OUTPUT - cp app/build/outputs/apk/standard/release/app-standard-x86-release-unsigned-signed.apk Komikku-x86-${{ env.VERSION_TAG }}.apk - sha=`sha256sum Komikku-x86-${{ env.VERSION_TAG }}.apk | awk '{ print $1 }'` - echo "APK_X86_SHA=$sha" >> $GITHUB_ENV - - cp app/build/outputs/apk/standard/release/app-standard-x86_64-release-unsigned-signed.apk Komikku-x86_64-${{ env.VERSION_TAG }}.apk - sha=`sha256sum Komikku-x86_64-${{ env.VERSION_TAG }}.apk | awk '{ print $1 }'` - echo "APK_X86_64_SHA=$sha" >> $GITHUB_ENV + mv app/build/outputs/apk/standard/release/app-standard-x86-release-unsigned-signed.apk Komikku-x86-${{ needs.build-app.outputs.VERSION_TAG }}.apk + sha=`sha256sum Komikku-x86-${{ needs.build-app.outputs.VERSION_TAG }}.apk | awk '{ print $1 }'` + echo "APK_X86_SHA=$sha" >> $GITHUB_OUTPUT + + mv app/build/outputs/apk/standard/release/app-standard-x86_64-release-unsigned-signed.apk Komikku-x86_64-${{ needs.build-app.outputs.VERSION_TAG }}.apk + sha=`sha256sum Komikku-x86_64-${{ needs.build-app.outputs.VERSION_TAG }}.apk | awk '{ print $1 }'` + echo "APK_X86_64_SHA=$sha" >> $GITHUB_OUTPUT - name: Create release - if: startsWith(github.ref, 'refs/tags/') && github.repository == 'komikku-app/komikku' - uses: softprops/action-gh-release@v2 + uses: softprops/action-gh-release@9d7c94cfd0a1f3ed45544c887983e9fa900f0564 # v2.0.4 with: - tag_name: ${{ env.VERSION_TAG }} - name: Komikku ${{ env.VERSION_TAG }} + tag_name: ${{ needs.build-app.outputs.VERSION_TAG }} + name: Komikku ${{ needs.build-app.outputs.VERSION_TAG }} body: | - Change logs: - - ${{ env.CHANGE_LOGS }} - - ### Commits - - https://github.com/komikku-app/komikku/compare/${{ env.PREV_RELEASE_SHA }}...${{ env.CURRENT_SHA }} - - ${{ env.COMMIT_LOGS }} - --- ### Checksums | Variant | SHA-256 | | ------- | ------- | - | Universal | ${{ env.APK_UNIVERSAL_SHA }} | - | arm64-v8a | ${{ env.APK_ARM64_V8A_SHA }} | - | armeabi-v7a | ${{ env.APK_ARMEABI_V7A_SHA }} | - | x86 | ${{ env.APK_X86_SHA }} | - | x86_64 | ${{ env.APK_X86_64_SHA }} | + | Universal | ${{ steps.get_sha.outputs.APK_UNIVERSAL_SHA }} | + | arm64-v8a | ${{ steps.get_sha.outputs.APK_ARM64_V8A_SHA }} | + | armeabi-v7a | ${{ steps.get_sha.outputs.APK_ARMEABI_V7A_SHA }} | + | x86 | ${{ steps.get_sha.outputs.APK_X86_SHA }} | + | x86_64 | ${{ steps.get_sha.outputs.APK_X86_64_SHA }} | - ## If you are unsure which version to choose then go with Komikku-${{ env.VERSION_TAG }}.apk + ## If you are unsure which apk to download then go with Komikku-${{ needs.build-app.outputs.VERSION_TAG }}.apk files: | - Komikku-${{ env.VERSION_TAG }}.apk - Komikku-arm64-v8a-${{ env.VERSION_TAG }}.apk - Komikku-armeabi-v7a-${{ env.VERSION_TAG }}.apk - Komikku-x86-${{ env.VERSION_TAG }}.apk - Komikku-x86_64-${{ env.VERSION_TAG }}.apk - draft: false + Komikku-${{ needs.build-app.outputs.VERSION_TAG }}.apk + Komikku-arm64-v8a-${{ needs.build-app.outputs.VERSION_TAG }}.apk + Komikku-armeabi-v7a-${{ needs.build-app.outputs.VERSION_TAG }}.apk + Komikku-x86-${{ needs.build-app.outputs.VERSION_TAG }}.apk + Komikku-x86_64-${{ needs.build-app.outputs.VERSION_TAG }}.apk + draft: true prerelease: false env: GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} diff --git a/.github/workflows/build_push_preview.yml b/.github/workflows/build_push_preview.yml index 94abbc817..caf4065d7 100644 --- a/.github/workflows/build_push_preview.yml +++ b/.github/workflows/build_push_preview.yml @@ -1,14 +1,27 @@ -name: Remote Dispatch Action Initiator +name: Remote Dispatch Preview Build on: + # Dispatch or Manual triggers + workflow_dispatch: + push: - branches: - - 'preview' + branches: + - master + - develop + paths: + - '**' + - '!**.md' + - '!.github/**' + - '.github/scripts/**' + - '.github/workflows/**' + +concurrency: + group: ${{ github.workflow }}-${{ github.ref }} + cancel-in-progress: true jobs: trigger_preview_build: name: Trigger preview build - if: ${{ github.ref == 'refs/heads/preview' }} runs-on: ubuntu-latest steps: @@ -18,14 +31,28 @@ jobs: - name: Validate Gradle Wrapper uses: gradle/wrapper-validation-action@v1 + - name: Prepare build + id: prepare_build + run: | + set -e + + commit_count=$(git rev-list --count HEAD) + echo "COMMIT_COUNT=$commit_count" >> $GITHUB_OUTPUT + - name: Create Tag run: | - git tag "preview-${{ github.run_number }}" - git push origin "preview-${{ github.run_number }}" + git tag "r${{ steps.prepare_build.outputs.COMMIT_COUNT }}" + git push origin "r${{ steps.prepare_build.outputs.COMMIT_COUNT }}" - - name: PING - Dispatch initiating repository event - run: | - curl -X POST https://api.github.com/repos/komikku-app/KomikkuPreview/dispatches \ - -H 'Accept: application/vnd.github.everest-preview+json' \ - -u ${{ secrets.ACCESS_TOKEN }} \ - --data '{"event_type": "ping", "client_payload": { "repository": "'"$GITHUB_REPOSITORY"'" }}' + - name: Get branch names. + id: branch_names + uses: tj-actions/branch-names@v8 + + - name: Invoke workflow in preview repo + uses: benc-uk/workflow-dispatch@v1 + with: + workflow: build_app.yml + repo: komikku-app/komikku-preview + ref: "refs/heads/main" + token: "${{ secrets.BOT_PAT }}" + inputs: '{ "git-ref": "${{ steps.branch_names.outputs.current_branch }}" }'