Migrate tox tests from buildbot to actions #3
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: Android Build | |
| on: | |
| push: | |
| branches: [master, main, v0.6] | |
| pull_request: | |
| branches: [master, main, v0.6] | |
| jobs: | |
| build: | |
| # Only run on Gitea; this build needs a self-hosted runner with | |
| # the tool cache and is not meant for GitHub's hosted runners. | |
| if: >- | |
| !contains(github.server_url, 'github.com') | |
| name: buildozer android debug | |
| runs-on: ubuntu-latest | |
| container: ubuntu:focal | |
| steps: | |
| - name: Install system dependencies | |
| env: | |
| DEBIAN_FRONTEND: noninteractive | |
| run: | | |
| apt-get update -qq | |
| apt-get -y install -qq --no-install-recommends \ | |
| locales git curl autoconf automake build-essential cmake \ | |
| libtool libltdl-dev libffi-dev libssl-dev \ | |
| patch pkg-config python-is-python3 python3-dev python3-pip \ | |
| unzip zip openjdk-17-jdk libzbar0 gettext | |
| locale-gen en_US.UTF-8 | |
| - name: Checkout repository | |
| env: | |
| TOKEN: ${{ github.token }} | |
| run: | | |
| git config --global --add safe.directory "$PWD" | |
| git init | |
| SERVER="${GITHUB_SERVER_URL#https://}" | |
| git remote add origin "https://x-access-token:${TOKEN}@${SERVER}/${GITHUB_REPOSITORY}.git" | |
| git fetch --depth 1 origin "${GITHUB_SHA}" | |
| git checkout FETCH_HEAD | |
| - name: Install buildozer and cython | |
| run: pip install buildozer cython==3.0.10 virtualenv | |
| - name: Create build user | |
| run: | | |
| useradd -m builder | |
| chown -R builder:builder . | |
| chown -R builder:builder "${RUNNER_TOOL_CACHE}" | |
| - name: Prepare source tree | |
| run: | | |
| # buildozer symlink workaround (from build.sh) | |
| rm -rf src/pybitmessage | |
| mkdir -p src/pybitmessage | |
| cp src/*.py src/pybitmessage | |
| cp -r src/bitmessagekivy src/backend src/mockbm src/images src/pybitmessage | |
| # Symlink both buildozer directories to persistent tool cache: | |
| # ~/.buildozer holds SDK/NDK downloads | |
| # packages/android/.buildozer holds p4a toolchain and build artifacts | |
| mkdir -p "${RUNNER_TOOL_CACHE}/buildozer-home" "${RUNNER_TOOL_CACHE}/buildozer-builddir" | |
| ln -sfn "${RUNNER_TOOL_CACHE}/buildozer-home" /home/builder/.buildozer | |
| ln -sfn "${RUNNER_TOOL_CACHE}/buildozer-builddir" packages/android/.buildozer | |
| chown -R builder:builder "${RUNNER_TOOL_CACHE}/buildozer-home" "${RUNNER_TOOL_CACHE}/buildozer-builddir" | |
| - name: Build APK | |
| env: | |
| LC_ALL: en_US.UTF-8 | |
| LANG: en_US.UTF-8 | |
| run: | | |
| runuser -u builder -- bash -c ' | |
| # gradle OOM workaround | |
| mkdir -p ~/.gradle | |
| echo "org.gradle.jvmargs=-Xmx2g -XX:MaxMetaspaceSize=512m -XX:+HeapDumpOnOutOfMemoryError -Dfile.encoding=UTF-8" \ | |
| > ~/.gradle/gradle.properties | |
| cd packages/android | |
| buildozer android debug | |
| ' | |
| - name: Verify APK contents | |
| run: | | |
| RELEASE_ARTIFACT=$(grep release_artifact packages/android/buildozer.spec | cut -d= -f2 | tr -Cd 'a-z') | |
| if [ "$RELEASE_ARTIFACT" = "aab" ]; then | |
| echo "Release artifact is AAB, skipping APK verification" | |
| exit 0 | |
| fi | |
| unzip -p packages/android/bin/*.apk assets/private.tar \ | |
| | tar --list -z > package.list | |
| cat package.list | |
| grep '\.sql$' package.list || exit 1 |