Build and Release APK / Build APK and publish release (push) Canceled after 0s
The repo was renamed from PilgrimsOfKatan to ProLibertateGames on the Gitea instance. Update every reference so nothing points at the old name: - OTA updater: the repo constant and the User-Agent - publish-release.sh: the default repo, the asset name, the release title - CI/release workflows: the artifact names and the staged APK name - settings.gradle.kts: the Gradle project name - Protocol.kt / LanTransport.kt: the mDNS service label and the Wi-Fi lock tag - docs (README, CLAUDE.md, docs/CI.md) and the update-policy test fixtures The installed applicationId is left unchanged in this commit. Co-Authored-By: Paperclip <[email protected]>
89 lines
3.1 KiB
YAML
89 lines
3.1 KiB
YAML
name: Build and Release APK
|
|
|
|
# Production-channel build. Runs on a push to main, or by hand
|
|
# (workflow_dispatch), and publishes to this Gitea instance's releases — which
|
|
# is the channel the in-app updater reads. See docs/CI.md.
|
|
#
|
|
# Publishing goes through Gitea's REST API rather than the `gh` CLI, which a
|
|
# runner image need not carry.
|
|
on:
|
|
push:
|
|
branches: [ main ]
|
|
workflow_dispatch:
|
|
|
|
# Needed by the job token to create the release and attach the APK.
|
|
permissions:
|
|
contents: write
|
|
|
|
# Don't let two pushes to main race on the same release.
|
|
concurrency:
|
|
group: release-${{ github.ref }}
|
|
cancel-in-progress: false
|
|
|
|
jobs:
|
|
build:
|
|
name: Build APK and publish release
|
|
# workflow_dispatch can be aimed at any branch from the Actions UI. The
|
|
# production stamp belongs to main alone — anything else is a no-op rather
|
|
# than shipping unreviewed code to everybody.
|
|
if: github.ref == 'refs/heads/main'
|
|
runs-on: ubuntu-latest
|
|
env:
|
|
# Stamps the APK as a production-channel build.
|
|
PLG_CHANNEL: production
|
|
steps:
|
|
- name: Checkout
|
|
uses: actions/checkout@v4
|
|
|
|
- name: Set up JDK 17
|
|
uses: actions/setup-java@v4
|
|
with:
|
|
distribution: temurin
|
|
java-version: '17'
|
|
cache: gradle
|
|
|
|
- name: Set up Android SDK
|
|
uses: android-actions/setup-android@v4
|
|
|
|
- name: Build production APK
|
|
run: ./gradlew assembleDebug --no-daemon --stacktrace
|
|
|
|
- name: Stage APK
|
|
id: stage
|
|
run: |
|
|
set -euo pipefail
|
|
# The series and the offset come from gradle.properties, which is
|
|
# the same file the build read when it stamped the APK — so the tag
|
|
# and what is inside it cannot name different versions. The number
|
|
# is run number + offset, exactly the arithmetic build.gradle.kts
|
|
# did for versionCode.
|
|
series="$(sed -n 's/^plgVersionSeries=//p' gradle.properties)"
|
|
offset="$(sed -n 's/^plgVersionRunOffset=//p' gradle.properties)"
|
|
test -n "$series"
|
|
test -n "$offset"
|
|
stamp="$(( ${{ github.run_number }} + offset ))"
|
|
version="v${series}.${stamp}"
|
|
src="app/build/outputs/apk/debug/app-debug.apk"
|
|
dest="ProLibertateGames-${version}.apk"
|
|
cp "$src" "$dest"
|
|
echo "version=$version" >> "$GITHUB_OUTPUT"
|
|
echo "apk=$dest" >> "$GITHUB_OUTPUT"
|
|
|
|
- name: Upload APK as workflow artifact
|
|
uses: actions/upload-artifact@v4
|
|
with:
|
|
name: ProLibertateGames-apk
|
|
path: ${{ steps.stage.outputs.apk }}
|
|
if-no-files-found: error
|
|
|
|
- name: Publish production release
|
|
env:
|
|
# The job's built-in token: contents: write is declared above.
|
|
GITEA_TOKEN: ${{ secrets.GITEA_TOKEN }}
|
|
RELEASE_TAG: ${{ steps.stage.outputs.version }}
|
|
RELEASE_APK: ${{ steps.stage.outputs.apk }}
|
|
RELEASE_KIND: release
|
|
RELEASE_TARGET: ${{ github.sha }}
|
|
# One script, also runnable by hand — see docs/CI.md.
|
|
run: ./scripts/publish-release.sh
|