Simplify Gitea Android workflow
Some checks failed
Gitea Smoke / smoke (push) Successful in 0s
Gitea Android APK / build (push) Has been cancelled

This commit is contained in:
Codex 2026-07-05 17:10:54 +00:00
parent 85469dae4b
commit e47c8c15d4

View File

@ -1,47 +1,19 @@
name: Android APK name: Gitea Android APK
on: on: [push]
push:
branches:
- main
tags:
- "v*"
pull_request:
workflow_dispatch:
inputs:
publish_release:
description: "Create or update a GitHub Release"
required: true
default: "false"
type: choice
options:
- "false"
- "true"
permissions:
contents: write
jobs: jobs:
build: build:
runs-on: ubuntu-latest runs-on: ubuntu-latest
env:
PUBLISH_RELEASE: ${{ github.event_name == 'push' && startsWith(github.ref, 'refs/tags/v') || inputs.publish_release == 'true' }}
steps: steps:
- name: Checkout - name: Checkout
uses: actions/checkout@v4 uses: actions/checkout@v4
- name: Set version - name: Show runner environment
shell: bash
run: | run: |
if [[ "${GITHUB_REF}" == refs/tags/v* ]]; then pwd
VERSION_NAME="${GITHUB_REF_NAME#v}" java -version || true
else ls -la
VERSION_NAME="0.1.${GITHUB_RUN_NUMBER}"
fi
VERSION_CODE=$((1000 + GITHUB_RUN_NUMBER))
echo "VERSION_NAME=${VERSION_NAME}" >> "${GITHUB_ENV}"
echo "VERSION_CODE=${VERSION_CODE}" >> "${GITHUB_ENV}"
- name: Set up JDK - name: Set up JDK
uses: actions/setup-java@v4 uses: actions/setup-java@v4
@ -52,109 +24,37 @@ jobs:
- name: Set up Android SDK - name: Set up Android SDK
uses: android-actions/setup-android@v3 uses: android-actions/setup-android@v3
- name: Install Android packages
shell: bash
run: sdkmanager "platforms;android-35" "build-tools;35.0.0" "platform-tools"
- name: Set up Gradle - name: Set up Gradle
uses: gradle/actions/setup-gradle@v4 uses: gradle/actions/setup-gradle@v4
with: with:
gradle-version: "8.10.2" gradle-version: "8.10.2"
- name: Configure signing - name: Install Android packages
id: signing run: sdkmanager "platforms;android-35" "build-tools;35.0.0" "platform-tools"
shell: bash
env: - name: Set version
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: | run: |
if [[ -z "${ANDROID_KEYSTORE_BASE64}" ]]; then VERSION_NAME="0.1.${GITHUB_RUN_NUMBER:-0}"
echo "signed=false" >> "${GITHUB_OUTPUT}" VERSION_CODE=$((2000 + ${GITHUB_RUN_NUMBER:-0}))
exit 0 echo "VERSION_NAME=${VERSION_NAME}" >> "${GITHUB_ENV}"
fi echo "VERSION_CODE=${VERSION_CODE}" >> "${GITHUB_ENV}"
echo "${ANDROID_KEYSTORE_BASE64}" | base64 -d > release.jks
{
echo "storeFile=release.jks"
echo "storePassword=${ANDROID_KEYSTORE_PASSWORD}"
echo "keyAlias=${ANDROID_KEY_ALIAS}"
echo "keyPassword=${ANDROID_KEY_PASSWORD}"
} > signing.properties
echo "signed=true" >> "${GITHUB_OUTPUT}"
- name: Build APK - name: Build APK
shell: bash
run: | run: |
if [[ "${{ steps.signing.outputs.signed }}" == "true" ]]; then gradle :app:assembleDebug \
BUILD_TASK=":app:assembleRelease"
else
BUILD_TASK=":app:assembleDebug"
fi
gradle "${BUILD_TASK}" \
-PversionCode="${VERSION_CODE}" \ -PversionCode="${VERSION_CODE}" \
-PversionName="${VERSION_NAME}" \ -PversionName="${VERSION_NAME}" \
-PrepoSlug="${GITHUB_REPOSITORY}" -PrepoSlug="neatstudio/tmux-browser-android"
- name: Prepare artifacts - name: Prepare artifact
shell: bash
run: | run: |
mkdir -p release mkdir -p release
APK_PATH="$(find app/build/outputs/apk -name '*.apk' | sort | tail -n 1)" APK_PATH="$(find app/build/outputs/apk -name '*.apk' | sort | tail -n 1)"
cp "${APK_PATH}" "release/tmux-android.apk" cp "${APK_PATH}" release/tmux-android-gitea.apk
cp "${APK_PATH}" "release/tmux-android-${VERSION_NAME}.apk" sha256sum release/tmux-android-gitea.apk
SHA256="$(sha256sum release/tmux-android.apk | awk '{print $1}')"
APK_URL="https://github.com/${GITHUB_REPOSITORY}/releases/latest/download/tmux-android.apk"
RELEASE_PAGE_URL="https://github.com/${GITHUB_REPOSITORY}/releases/latest"
cat > release/latest.json << JSON
{
"versionCode": ${VERSION_CODE},
"versionName": "${VERSION_NAME}",
"apkUrl": "${APK_URL}",
"sha256": "${SHA256}",
"releasePageUrl": "${RELEASE_PAGE_URL}",
"minSdk": 26
}
JSON
- name: Upload workflow artifact - name: Upload artifact
uses: actions/upload-artifact@v4 uses: actions/upload-artifact@v4
with: with:
name: tmux-android-${{ env.VERSION_NAME }} name: tmux-android-gitea
path: | path: release/tmux-android-gitea.apk
release/tmux-android.apk
release/tmux-android-${{ env.VERSION_NAME }}.apk
release/latest.json
- name: Require signing for release publishing
if: env.PUBLISH_RELEASE == 'true' && steps.signing.outputs.signed != 'true'
shell: bash
run: |
echo "Release publishing requires ANDROID_KEYSTORE_BASE64 and signing secrets." >&2
exit 1
- name: Publish GitHub Release
if: env.PUBLISH_RELEASE == 'true'
shell: bash
env:
GH_TOKEN: ${{ github.token }}
run: |
if [[ "${GITHUB_REF}" == refs/tags/v* ]]; then
TAG="${GITHUB_REF_NAME}"
else
TAG="v${VERSION_NAME}"
git config user.name "github-actions[bot]"
git config user.email "41898282+github-actions[bot]@users.noreply.github.com"
git tag -f "${TAG}"
git push -f origin "${TAG}"
fi
if gh release view "${TAG}" >/dev/null 2>&1; then
gh release upload "${TAG}" release/tmux-android.apk release/latest.json --clobber
else
gh release create "${TAG}" release/tmux-android.apk release/latest.json \
--latest \
--title "tmux Android ${VERSION_NAME}" \
--notes "Android APK for tmux-ui remote testing."
fi