Skip to content

Commit 102bc03

Browse files
Update script
1 parent 78c493a commit 102bc03

File tree

1 file changed

+15
-15
lines changed

1 file changed

+15
-15
lines changed

.github/workflows/android-build-release.yml

Lines changed: 15 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -57,8 +57,8 @@ jobs:
5757
set -euo pipefail
5858
if [ -n "${RELEASE_KEYSTORE_BASE64:-}" ]; then
5959
mkdir -p app/release
60-
echo "$RELEASE_KEYSTORE_BASE64" | base64 --decode > app/release/release-keystore.jks
61-
ls -l app/release/release-keystore.jks
60+
echo "$RELEASE_KEYSTORE_BASE64" | base64 --decode > "$PWD/app/release/release-keystore.jks"
61+
ls -l "$PWD/app/release/release-keystore.jks"
6262
else
6363
echo "RELEASE_KEYSTORE_BASE64 not set; skipping keystore decode"
6464
fi
@@ -74,16 +74,17 @@ jobs:
7474
GRADLE_OPTS="-Xmx3g"
7575
7676
# If keystore secret is present but file missing, decode it now (defensive)
77-
if [ -n "${RELEASE_KEYSTORE_BASE64:-}" ] && [ ! -f app/release/release-keystore.jks ]; then
77+
if [ -n "${RELEASE_KEYSTORE_BASE64:-}" ] && [ ! -f "$PWD/app/release/release-keystore.jks" ]; then
7878
mkdir -p app/release
79-
echo "$RELEASE_KEYSTORE_BASE64" | base64 --decode > app/release/release-keystore.jks
80-
chmod 600 app/release/release-keystore.jks
79+
echo "$RELEASE_KEYSTORE_BASE64" | base64 --decode > "$PWD/app/release/release-keystore.jks"
80+
chmod 600 "$PWD/app/release/release-keystore.jks"
8181
fi
8282
8383
# Build with signing properties if keystore exists and passwords provided
84-
if [ -f app/release/release-keystore.jks ] && [ -n "${RELEASE_KEYSTORE_KEY:-}" ] && [ -n "${RELEASE_KEYSTORE_SUBKEY:-}" ]; then
84+
STORE_FILE="$PWD/app/release/release-keystore.jks"
85+
if [ -f "$STORE_FILE" ] && [ -n "${RELEASE_KEYSTORE_KEY:-}" ] && [ -n "${RELEASE_KEYSTORE_SUBKEY:-}" ]; then
8586
echo "Keystore found — building signed release APK"
86-
./gradlew assembleRelease -Pandroid.injected.signing.store.file=app/release/release-keystore.jks -Pandroid.injected.signing.store.password="${RELEASE_KEYSTORE_KEY}" -Pandroid.injected.signing.key.password="${RELEASE_KEYSTORE_SUBKEY}" -Pandroid.injected.signing.key.alias=release
87+
./gradlew assembleRelease -Pandroid.injected.signing.store.file="$STORE_FILE" -Pandroid.injected.signing.store.password="${RELEASE_KEYSTORE_KEY}" -Pandroid.injected.signing.key.password="${RELEASE_KEYSTORE_SUBKEY}" -Pandroid.injected.signing.key.alias=release
8788
else
8889
echo "No keystore/passwords provided — building release APK without injected signing properties"
8990
./gradlew assembleRelease
@@ -96,8 +97,6 @@ jobs:
9697
# Standard apk paths
9798
DEBUG_APK=app/build/outputs/apk/debug/app-debug.apk
9899
RELEASE_APK=app/build/outputs/apk/release/app-release.apk
99-
RELEASE_APK_UNSIGN=app/build/outputs/apk/release/app-release-unsigned.apk
100-
101100
102101
COPIED=0
103102
if [ -f "$DEBUG_APK" ]; then
@@ -112,12 +111,6 @@ jobs:
112111
COPIED=$((COPIED+1))
113112
else
114113
echo "Release APK not found at $RELEASE_APK"
115-
if [ -f "$RELEASE_APK" ]; then
116-
cp "$RELEASE_APK_UNSIGN" release_artifacts/app-release.apk
117-
COPIED=$((COPIED+1))
118-
else
119-
echo "Release APK not found at $RELEASE_APK_UNSIGN"
120-
fi
121114
fi
122115
123116
if [ $COPIED -ne 2 ]; then
@@ -132,6 +125,7 @@ jobs:
132125
run: |
133126
set -euo pipefail
134127
128+
# 1) 获取版本号(优先:app/build.gradle -> app/build.gradle.kts -> gradle.properties)
135129
VERSION=""
136130
if [ -f app/build.gradle ]; then
137131
VERSION=$(grep -m1 "versionName" app/build.gradle | sed -E "s/.*versionName[[:space:]]+['\"]([^'\"]+)['\"].*/\1/" || true)
@@ -144,25 +138,31 @@ jobs:
144138
fi
145139
VERSION=${VERSION:-"build-${GITHUB_RUN_ID}"}
146140
141+
# 2) commit id(短 sha)和 commit history 作为 body
147142
COMMIT_ID=$(git rev-parse --short HEAD)
148143
BODY=$(git log --pretty=format:"%h %ad - %s (%an)" --date=short --no-merges -n 200)
149144
145+
# 3) 构造 JSON payload(使用 jq 确保正确的 JSON 转义)
150146
if ! command -v jq >/dev/null 2>&1; then
151147
echo "jq is required but not installed in runner. Exiting."
152148
exit 1
153149
fi
154150
PAYLOAD=$(jq -n --arg tag "${COMMIT_ID}" --arg name "${VERSION}" --arg body "${BODY}" \
155151
'{ tag_name: $tag, name: $name, body: $body, draft: false, prerelease: false }')
156152
153+
# 4) 调用 GitHub Releases API 创建 release(创建时为最新)
157154
RESPONSE=$(curl -s -X POST \
158155
-H "Authorization: token ${GITHUB_TOKEN}" \
159156
-H "Accept: application/vnd.github+json" \
160157
-H "Content-Type: application/json" \
161158
-d "${PAYLOAD}" \
162159
"https://api.github.com/repos/${GITHUB_REPOSITORY}/releases")
160+
161+
# 输出响应以便日志可见
163162
echo "GitHub release response:"
164163
echo "${RESPONSE}" | jq .
165164
165+
# 5) 从响应中取 upload_url 并导出为步骤输出,供后续 upload-release-asset 使用
166166
UPLOAD_URL=$(echo "${RESPONSE}" | jq -r '.upload_url // empty')
167167
if [ -z "$UPLOAD_URL" ] || [ "$UPLOAD_URL" = "null" ]; then
168168
echo "Failed to create release or upload_url missing. Full response above."

0 commit comments

Comments
 (0)