Fix/connectivity race no sleep #148
Workflow file for this run
This file contains hidden or 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-apk | |
| on: | |
| push: | |
| branches: | |
| - main | |
| tags: | |
| - "v*" | |
| pull_request: | |
| workflow_dispatch: | |
| permissions: | |
| contents: write | |
| jobs: | |
| build: | |
| runs-on: ubuntu-22.04 | |
| steps: | |
| - name: Checkout | |
| uses: actions/checkout@v4 | |
| - name: Install SDKMAN and Java 8 | |
| shell: bash | |
| run: | | |
| set -eo pipefail | |
| curl -s "https://get.sdkman.io" | bash | |
| export SDKMAN_DIR="${HOME}/.sdkman" | |
| source "${SDKMAN_DIR}/bin/sdkman-init.sh" | |
| sdk install java 8.0.302-open | |
| java -version | |
| - name: Download Android ADT bundle | |
| shell: bash | |
| run: | | |
| set -euo pipefail | |
| ADT_URL="http://dl.google.com/android/adt/adt-bundle-linux-x86_64-20140702.zip" | |
| ADT_ZIP="${RUNNER_TEMP}/adt-bundle.zip" | |
| curl -L "${ADT_URL}" -o "${ADT_ZIP}" | |
| unzip -q "${ADT_ZIP}" -d "${RUNNER_TEMP}" | |
| - name: Download SpongyCastle JARs | |
| shell: bash | |
| run: | | |
| set -euo pipefail | |
| curl -L "https://repo1.maven.org/maven2/com/madgag/spongycastle/core/1.58.0.0/core-1.58.0.0.jar" \ | |
| -o "libs/spongycastle-core-1.58.0.0.jar" | |
| curl -L "https://repo1.maven.org/maven2/com/madgag/spongycastle/prov/1.58.0.0/prov-1.58.0.0.jar" \ | |
| -o "libs/spongycastle-prov-1.58.0.0.jar" | |
| curl -L "https://repo1.maven.org/maven2/com/madgag/spongycastle/bctls-jdk15on/1.58.0.0/bctls-jdk15on-1.58.0.0.jar" \ | |
| -o "libs/spongycastle-bctls-jdk15on-1.58.0.0.jar" | |
| - name: Stamp version from tag | |
| if: startsWith(github.ref, 'refs/tags/') | |
| shell: bash | |
| run: | | |
| set -euo pipefail | |
| chmod +x tools/set-version.sh | |
| tools/set-version.sh "${GITHUB_REF_NAME}" | |
| - name: Commit version bump to main | |
| if: startsWith(github.ref, 'refs/tags/') | |
| shell: bash | |
| run: | | |
| set -euo pipefail | |
| git config user.name "github-actions[bot]" | |
| git config user.email "github-actions[bot]@users.noreply.github.com" | |
| if ! git diff --quiet AndroidManifest.xml; then | |
| git add AndroidManifest.xml | |
| git commit -m "Bump version to ${GITHUB_REF_NAME#v}" | |
| git push origin HEAD:main | |
| fi | |
| - name: Move tag to version-bumped commit | |
| if: startsWith(github.ref, 'refs/tags/') | |
| shell: bash | |
| run: | | |
| set -euo pipefail | |
| # After committing the version bump to main, the tag still points | |
| # to the pre-bump commit. Move it so raw.githubusercontent.com | |
| # serves the correct AndroidManifest.xml for this tag. | |
| BUMP_SHA="$(git rev-parse HEAD)" | |
| git tag -f "${GITHUB_REF_NAME}" "${BUMP_SHA}" | |
| git push origin "${GITHUB_REF_NAME}" --force | |
| - name: Configure release signing | |
| if: startsWith(github.ref, 'refs/tags/') | |
| shell: bash | |
| env: | |
| ANDROID_KEYSTORE_BASE64: ${{ secrets.ANDROID_KEYSTORE_BASE64 }} | |
| ANDROID_KEYSTORE_PASSWORD: ${{ secrets.ANDROID_KEYSTORE_PASSWORD }} | |
| ANDROID_KEY_ALIAS: ${{ secrets.ANDROID_KEY_ALIAS }} | |
| ANDROID_KEY_PASSWORD: ${{ secrets.ANDROID_KEY_PASSWORD }} | |
| run: | | |
| set -euo pipefail | |
| if [[ -z "${ANDROID_KEYSTORE_BASE64}" ]]; then | |
| echo "Missing ANDROID_KEYSTORE_BASE64 secret." >&2 | |
| exit 1 | |
| fi | |
| if [[ -z "${ANDROID_KEYSTORE_PASSWORD}" || -z "${ANDROID_KEY_ALIAS}" || -z "${ANDROID_KEY_PASSWORD}" ]]; then | |
| echo "Missing keystore secrets (password/alias/key password)." >&2 | |
| exit 1 | |
| fi | |
| KEYS_DIR="${RUNNER_TEMP}/keys" | |
| mkdir -p "${KEYS_DIR}" | |
| KEYSTORE_PATH="${KEYS_DIR}/trmnl-release.keystore" | |
| echo "${ANDROID_KEYSTORE_BASE64}" | base64 -d > "${KEYSTORE_PATH}" | |
| cat > ant.properties <<EOF | |
| key.store=${KEYSTORE_PATH} | |
| key.alias=${ANDROID_KEY_ALIAS} | |
| key.store.password=${ANDROID_KEYSTORE_PASSWORD} | |
| key.alias.password=${ANDROID_KEY_PASSWORD} | |
| EOF | |
| - name: Build APK with Ant | |
| shell: bash | |
| run: | | |
| set -euo pipefail | |
| export JAVA_HOME="${HOME}/.sdkman/candidates/java/8.0.302-open" | |
| export PATH="${JAVA_HOME}/bin:${PATH}" | |
| ADT_ROOT="${RUNNER_TEMP}/adt-bundle-linux-x86_64-20140702" | |
| SDK_DIR="${ADT_ROOT}/sdk" | |
| ANT_BIN="${ADT_ROOT}/eclipse/plugins/org.apache.ant_1.8.3.v201301120609/bin/ant" | |
| echo "sdk.dir=${SDK_DIR}" > local.properties | |
| chmod +x "${ANT_BIN}" | |
| ANT_TARGET="debug" | |
| if [[ "${GITHUB_REF}" == refs/tags/* ]]; then | |
| ANT_TARGET="release" | |
| fi | |
| "${ANT_BIN}" -Dbuild.compiler=modern clean "${ANT_TARGET}" | |
| - name: Capture APK path | |
| id: apk | |
| shell: bash | |
| run: | | |
| set -euo pipefail | |
| if [[ "${GITHUB_REF}" == refs/tags/* ]]; then | |
| APK_PATH="$(ls -1 bin/*-release.apk 2>/dev/null | head -n 1 || true)" | |
| else | |
| APK_PATH="$(ls -1 bin/*-debug.apk 2>/dev/null | grep -v -- "-unaligned.apk" | head -n 1 || true)" | |
| fi | |
| if [[ -z "${APK_PATH}" ]]; then | |
| APK_PATH="$(ls -1 bin/*-debug-unaligned.apk bin/*.apk 2>/dev/null | head -n 1 || true)" | |
| fi | |
| if [[ -z "${APK_PATH}" ]]; then | |
| echo "APK not found in bin/. Ant build may have failed." >&2 | |
| exit 1 | |
| fi | |
| echo "path=${APK_PATH}" >> "${GITHUB_OUTPUT}" | |
| - name: Upload APK artifact | |
| uses: actions/upload-artifact@v4 | |
| with: | |
| name: trmnl-nook-simple-touch-apk | |
| path: ${{ steps.apk.outputs.path }} | |
| - name: Publish GitHub Release | |
| if: startsWith(github.ref, 'refs/tags/') | |
| uses: softprops/action-gh-release@v2 | |
| with: | |
| prerelease: ${{ contains(github.ref_name, '-rc.') || contains(github.ref_name, '-rc') }} | |
| files: ${{ steps.apk.outputs.path }} |