Skip to content

Optimize logic of android workflow #32

Optimize logic of android workflow

Optimize logic of android workflow #32

Workflow file for this run

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}}