Skip to content

docs: add nooks.bpmct.net easy setup section + clarify optional button settings #137

docs: add nooks.bpmct.net easy setup section + clarify optional button settings

docs: add nooks.bpmct.net easy setup section + clarify optional button settings #137

Workflow file for this run

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