Optimize logic of android workflow #32
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: Build Android apk from Web code | |
permissions: | |
contents: write | |
on: | |
push: | |
branches: ["apk"] | |
tags: | |
- "v*.*.*" | |
workflow_dispatch: | |
jobs: | |
setUpEnvironmentVariable: | |
runs-on: ubuntu-latest | |
steps: | |
- name: Get the paths to Android project and output apk | |
run: cat "./.env" >> "${GITHUB_ENV}" | |
- name: Set app name | |
run: | | |
cat << _EOF_ >> "${GITHUB_ENV}" | |
# Set app name to repository name | |
"APP_NAME=/${GITHUB_REPOSITORY#*/}/" | |
"APP_NAME_UNVERSIONED_WITH_EXTENSION=${APP_NAME}-debug.apk" | |
"APP_NAME_VERSIONED_WITH_EXTENSION=${GITHUB_REF_NAME}.apk" | |
_EOF_ | |
build: | |
needs: setUpEnvironmentVariable | |
runs-on: ubuntu-latest | |
steps: | |
- name: Checkout | |
uses: actions/checkout@v3 | |
- name: Set up Node | |
uses: actions/setup-node@v3 | |
with: | |
node-version: 20 | |
cache: "npm" | |
- name: Set up npm dependencies | |
run: npm install && npm run setUp:capacitor | |
- name: set up JDK | |
uses: actions/setup-java@v3 | |
with: | |
java-version: "19" | |
distribution: "temurin" | |
cache: "gradle" | |
- name: Create the Android project | |
run: npx cap add android | |
- name: Guarantee scripts execution permission | |
run: chmod +x ./scripts/* | |
- name: Set apk version number | |
if: startsWith(github.ref, 'refs/tags/v') | |
run: npm run setVersionNumber | |
- name: Sync the web code and Build apk | |
run: npm run build:apk | |
rename: | |
needs: build | |
runs-on: ubuntu-latest | |
steps: | |
- name: Rename unversioned built apk | |
if: ${{ ! startsWith(github.ref, 'refs/tags/v') }} | |
run: mv "${OUTPUT_APK_PATH}/${APP_DEBUG}" "${OUTPUT_APK_PATH}/${APP_NAME_UNVERSIONED_WITH_EXTENSION}" | |
- name: Rename versioned built apk | |
if: ${{ startsWith(github.ref, 'refs/tags/v') }} | |
run: mv "${OUTPUT_APK_PATH}/${APP_DEBUG}" "${OUTPUT_APK_PATH}/${APP_NAME_VERSIONED_WITH_EXTENSION}" | |
upload: | |
needs: [build, rename] | |
runs-on: ubuntu-latest | |
steps: | |
- name: Upload apk when pushing the branch "apk" | |
if: startsWith(github.ref, 'refs/heads/apk') | |
uses: actions/upload-artifact@v3 | |
with: | |
name: ${{ env.APP_NAME_UNVERSIONED_WITH_EXTENSION }} | |
path: ${{ env.OUTPUT_APK_PATH }}/${{ env.APP_NAME_UNVERSIONED_WITH_EXTENSION }} | |
- name: Upload apk when pushing a version tag | |
if: startsWith(github.ref, 'refs/tags/v') | |
uses: actions/upload-artifact@v3 | |
with: | |
name: ${{ env.APP_NAME_VERSIONED_WITH_EXTENSION }} | |
path: ${{ env.OUTPUT_APK_PATH }}/${{ env.APP_NAME_VERSIONED_WITH_EXTENSION }} | |
- name: Upload output-metadata.json | |
uses: actions/upload-artifact@v3 | |
with: | |
name: output-metadata.json | |
path: ${{ env.OUTPUT_APK_PATH }}/output-metadata.json | |
# - name: Get latest version tag | |
# id: git-version-tag | |
# run: | | |
# latestButOneVersionTag="$(git for-each-ref --sort=-creatordate --count 2 --format="%(refname:short)" "refs/tags/v*"|tail --lines 1)" | |
# echo "LATEST_BUT_ONE_VERSION_TAG=${lastVersionTag}" >> "$GITHUB_OUTPUT" | |
release: | |
needs: [build, rename] | |
runs-on: ubuntu-latest | |
steps: | |
- name: Release | |
if: startsWith(github.ref, 'refs/tags/v') | |
uses: softprops/action-gh-release@v1 | |
with: | |
generate_release_notes: true | |
# body: "**Full Changelog**: https://github.com/${GITHUB_REPOSITORY}/compare/${{ steps.git-version-tag.outputs.LATEST_BUT_ONE_VERSION_TAG }}...${{github.ref_name}}" | |
# Can't use quotes here | |
files: | | |
${{ env.OUTPUT_APK_PATH }}/${{ env.APP_NAME_VERSIONED_WITH_EXTENSION }} | |
${{ env.OUTPUT_APK_PATH }}/output-metadata.json | |
# Name of the release | |
name: apk ${{github.ref_name}} |