[#316] Create builds on GitHub Actions
This generates builds in a well defined environment, which we can sideload for testing. Both mainnet and testnet “release” variants are created. Note that signing is done with an insecure placeholder key stored in the repo.
This commit is contained in:
parent
264af65a4c
commit
0b64edc776
|
@ -0,0 +1,44 @@
|
|||
name: 'Setup Java and Dependency Cache'
|
||||
description: "Configures the build environment and caches Gradle and dependencies."
|
||||
runs:
|
||||
using: "composite"
|
||||
steps:
|
||||
- name: Set Env
|
||||
shell: bash
|
||||
run: |
|
||||
echo "home=${HOME}" >> "$GITHUB_ENV"
|
||||
- name: Set up Java
|
||||
uses: actions/setup-java@9519cf1382ac8dc61ad461f7f7cb45f033220189
|
||||
with:
|
||||
distribution: 'temurin'
|
||||
java-version: 17
|
||||
- name: Disable Gradle Daemon
|
||||
shell: bash
|
||||
run: |
|
||||
mkdir ~/.gradle
|
||||
|
||||
echo "org.gradle.daemon=false" >> ~/.gradle/gradle.properties
|
||||
- name: Gradle Wrapper Cache
|
||||
id: gradle-wrapper-cache
|
||||
uses: actions/cache@30f413bfed0a2bc738fdfd409e5a9e96b24545fd
|
||||
with:
|
||||
path: ~/.gradle/wrapper
|
||||
key: ${{ runner.os }}-gradle-wrapper-${{ hashFiles(format('{0}{1}', github.workspace, '/gradle/wrapper/gradle-wrapper.properties')) }}
|
||||
- name: Gradle Dependency Cache
|
||||
id: gradle-dependency-cache
|
||||
uses: actions/cache@30f413bfed0a2bc738fdfd409e5a9e96b24545fd
|
||||
with:
|
||||
path: ~/.gradle/caches/modules-2
|
||||
key: ${{ runner.os }}-gradle-deps-${{ hashFiles(format('{0}{1}', github.workspace, '/gradle.properties')) }}
|
||||
restore-keys: |
|
||||
${{ runner.os }}-gradle-deps
|
||||
- name: Download Gradle
|
||||
if: steps.gradle-wrapper-cache.outputs.cache-hit != 'true'
|
||||
shell: bash
|
||||
run: |
|
||||
./gradlew --version
|
||||
- name: Download Dependencies
|
||||
if: steps.gradle-dependency-cache.outputs.cache-hit != 'true'
|
||||
shell: bash
|
||||
run: |
|
||||
./gradlew dependencies
|
|
@ -0,0 +1,80 @@
|
|||
name: Build
|
||||
|
||||
on:
|
||||
workflow_dispatch:
|
||||
push:
|
||||
branches:
|
||||
- master
|
||||
paths-ignore:
|
||||
- '.github/ISSUE_TEMPLATE/*'
|
||||
- '.github/PULL_REQUEST_TEMPLATE.md'
|
||||
- 'LICENSE'
|
||||
- 'README.md'
|
||||
- 'docs/**'
|
||||
|
||||
concurrency:
|
||||
group: ${{ github.workflow }}-${{ github.ref }}
|
||||
cancel-in-progress: true
|
||||
|
||||
jobs:
|
||||
validate_gradle_wrapper:
|
||||
runs-on: ubuntu-latest
|
||||
permissions:
|
||||
contents: read
|
||||
steps:
|
||||
- name: Checkout
|
||||
timeout-minutes: 1
|
||||
uses: actions/checkout@a12a3943b4bdde767164f792f33f40b04645d846
|
||||
# Gradle Wrapper validation can be flaky
|
||||
# https://github.com/gradle/wrapper-validation-action/issues/40
|
||||
- name: Gradle Wrapper Validation
|
||||
timeout-minutes: 1
|
||||
uses: gradle/wrapper-validation-action@e6e38bacfdf1a337459f332974bb2327a31aaf4b
|
||||
|
||||
prime_cache:
|
||||
needs: validate_gradle_wrapper
|
||||
runs-on: ubuntu-latest
|
||||
permissions:
|
||||
contents: read
|
||||
steps:
|
||||
- name: Checkout
|
||||
timeout-minutes: 1
|
||||
uses: actions/checkout@a12a3943b4bdde767164f792f33f40b04645d846
|
||||
- name: Setup
|
||||
id: setup
|
||||
timeout-minutes: 12
|
||||
uses: ./.github/actions/setup
|
||||
|
||||
release_build:
|
||||
needs: prime_cache
|
||||
runs-on: ubuntu-latest
|
||||
permissions:
|
||||
contents: read
|
||||
steps:
|
||||
- name: Checkout
|
||||
timeout-minutes: 1
|
||||
uses: actions/checkout@a12a3943b4bdde767164f792f33f40b04645d846
|
||||
- name: Setup
|
||||
id: setup
|
||||
timeout-minutes: 5
|
||||
uses: ./.github/actions/setup
|
||||
- name: Build
|
||||
timeout-minutes: 20
|
||||
run: |
|
||||
./gradlew :app:assemble
|
||||
- name: Collect Artifacts
|
||||
timeout-minutes: 1
|
||||
env:
|
||||
ARTIFACTS_DIR_PATH: ${{ format('{0}/artifacts', env.home) }}
|
||||
BINARIES_ZIP_PATH: ${{ format('{0}/artifacts/binaries.zip', env.home) }}
|
||||
MAPPINGS_ZIP_PATH: ${{ format('{0}/artifacts/mappings.zip', env.home) }}
|
||||
run: |
|
||||
mkdir ${ARTIFACTS_DIR_PATH}
|
||||
zip -r ${BINARIES_ZIP_PATH} . -i app/build/outputs/apk/\*/\*.apk app/build/outputs/universal_apk/\*/\*.apk app/build/outputs/bundle/\*/\*.aab
|
||||
zip -r ${MAPPINGS_ZIP_PATH} . -i *app/build/outputs/mapping/*/mapping.txt
|
||||
- name: Upload Artifacts
|
||||
uses: actions/upload-artifact@6673cd052c4cd6fcf4b4e6e60ea986c889389535
|
||||
timeout-minutes: 1
|
||||
with:
|
||||
name: Release binaries
|
||||
path: ~/artifacts
|
Loading…
Reference in New Issue