Merge pull request #22 from usetrmnl/adb-connect-d8vk #91
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: 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 }} |