Simplify Gitea Android workflow
This commit is contained in:
parent
85469dae4b
commit
e47c8c15d4
@ -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
|
|
||||||
|
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user