@@ -93,27 +93,74 @@ jobs:
9393 test -n "${VERSION_NAME}"
9494 test "v${VERSION_NAME}" = "${GITHUB_REF_NAME}"
9595
96+ - name : Select APK variant and artifact identity
97+ id : apk
98+ shell : bash
99+ env :
100+ PR_NUMBER : ${{ github.event.pull_request.number }}
101+ PR_HEAD_SHA : ${{ github.event.pull_request.head.sha }}
102+ run : |
103+ if [[ "${GITHUB_REF}" == refs/tags/v* ]]; then
104+ VARIANT="release"
105+ LINT_TASK="lintRelease"
106+ ASSEMBLE_TASK="assembleRelease"
107+ APK_PATH="app/build/outputs/apk/release/app-release.apk"
108+ ARTIFACT_NAME="udroid-${GITHUB_REF_NAME}-prerelease"
109+ elif [[ "${GITHUB_EVENT_NAME}" == "pull_request" ]]; then
110+ test -n "${PR_NUMBER}"
111+ test -n "${PR_HEAD_SHA}"
112+ VARIANT="dev"
113+ LINT_TASK="lintDev"
114+ ASSEMBLE_TASK="assembleDev"
115+ APK_PATH="app/build/outputs/apk/dev/app-dev.apk"
116+ ARTIFACT_NAME="udroid-pr-${PR_NUMBER}-${PR_HEAD_SHA:0:7}-dev"
117+ else
118+ VARIANT="dev"
119+ LINT_TASK="lintDev"
120+ ASSEMBLE_TASK="assembleDev"
121+ APK_PATH="app/build/outputs/apk/dev/app-dev.apk"
122+ ARTIFACT_NAME="udroid-${GITHUB_REF_NAME//\//-}-${GITHUB_SHA:0:7}-dev"
123+ fi
124+
125+ if [[ ! "${ARTIFACT_NAME}" =~ ^[A-Za-z0-9._-]+$ ]]; then
126+ echo "Unsafe artifact name: ${ARTIFACT_NAME}" >&2
127+ exit 1
128+ fi
129+
130+ echo "variant=${VARIANT}" >> "${GITHUB_OUTPUT}"
131+ echo "lint_task=${LINT_TASK}" >> "${GITHUB_OUTPUT}"
132+ echo "assemble_task=${ASSEMBLE_TASK}" >> "${GITHUB_OUTPUT}"
133+ echo "apk_path=${APK_PATH}" >> "${GITHUB_OUTPUT}"
134+ echo "artifact_name=${ARTIFACT_NAME}" >> "${GITHUB_OUTPUT}"
135+ echo "asset_name=${ARTIFACT_NAME}.apk" >> "${GITHUB_OUTPUT}"
136+
96137 - name : Test, lint, and assemble optimized APK
97- run : ./gradlew --no-daemon testDebugUnitTest lintDebug assembleRelease
138+ run : >-
139+ ./gradlew --no-daemon
140+ testDebugUnitTest
141+ ${{ steps.apk.outputs.lint_task }}
142+ ${{ steps.apk.outputs.assemble_task }}
98143
99144 - name : Verify embedded X11 release JNI contract
100- run : tools/verify-release-jni-contract.sh app/build/outputs/apk/release/app-release .apk
145+ run : tools/verify-release-jni-contract.sh "${{ steps .apk.outputs.apk_path }}"
101146
102147 - name : Package release assets
103148 shell : bash
149+ env :
150+ APK_PATH : ${{ steps.apk.outputs.apk_path }}
151+ ASSET_NAME : ${{ steps.apk.outputs.asset_name }}
104152 run : |
105153 mkdir -p release-assets
106- cp app/build/outputs/apk/release/app-release.apk \
107- "release-assets/udroid-${GITHUB_REF_NAME}-prerelease.apk"
154+ cp "${APK_PATH}" "release-assets/${ASSET_NAME}"
108155 (
109156 cd release-assets
110- sha256sum "udroid-${GITHUB_REF_NAME}-prerelease.apk " > SHA256SUMS
157+ sha256sum "${ASSET_NAME} " > SHA256SUMS
111158 )
112159
113160 - name : Upload APK artifact
114161 uses : actions/upload-artifact@v7
115162 with :
116- name : udroid- ${{ github.ref_name }}-prerelease
163+ name : ${{ steps.apk.outputs.artifact_name }}
117164 path : release-assets/*
118165 if-no-files-found : error
119166 retention-days : 30
0 commit comments