Skip to content

Commit 20bd6ec

Browse files
authored
重构发版流程 (#286)
重构ci与发版流程
1 parent 46826cf commit 20bd6ec

6 files changed

Lines changed: 307 additions & 152 deletions

File tree

.github/workflows/alpha.yml

Lines changed: 53 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,53 @@
1+
name: Publish Alpha
2+
3+
on:
4+
workflow_call:
5+
6+
jobs:
7+
alpha:
8+
runs-on: ubuntu-latest
9+
permissions:
10+
contents: write
11+
12+
steps:
13+
- uses: actions/download-artifact@v4
14+
with:
15+
name: outputs
16+
path: ${{ github.workspace }}/outputs/
17+
18+
- name: Extract Version Info
19+
id: version-info
20+
shell: bash
21+
run: |
22+
APP_VERSION_CODE=$(cat $GITHUB_WORKSPACE/outputs/version-code)
23+
APP_VERSION_NAME=$(cat $GITHUB_WORKSPACE/outputs/version-name)
24+
{
25+
echo "CHANGELOG<<BSEOF"
26+
cat $GITHUB_WORKSPACE/outputs/changelog
27+
echo "BSEOF"
28+
} >> "$GITHUB_OUTPUT"
29+
APK_FILENAME="FzuHelper_${APP_VERSION_NAME}(${APP_VERSION_CODE}).apk"
30+
echo "apk_filename=$APK_FILENAME" >> "$GITHUB_OUTPUT"
31+
mv $GITHUB_WORKSPACE/outputs/apk/release/app-arm64-v8a-release.apk $APK_FILENAME
32+
33+
- name: Delete alpha using GitHub CLI
34+
run: |
35+
gh release delete alpha --yes >/dev/null 2>&1 || echo "No alpha release exists."
36+
gh api -X DELETE repos/${GITHUB_REPOSITORY}/git/refs/tags/alpha >/dev/null 2>&1 || echo "No alpha tag exists."
37+
env:
38+
GITHUB_TOKEN: ${{ github.token }}
39+
40+
- name: Create GitHub Pre-Release
41+
uses: softprops/action-gh-release@v1
42+
with:
43+
tag_name: alpha
44+
name: 'Alpha'
45+
body: |
46+
${{ steps.version-info.outputs.CHANGELOG }}
47+
48+
此版本为新架构测试版,请提前加入内测群 1020036141 了解详情
49+
prerelease: true
50+
files: |
51+
${{ steps.version-info.outputs.apk_filename }}
52+
env:
53+
GITHUB_TOKEN: ${{ github.token }}

.github/workflows/beta.yml

Lines changed: 75 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,75 @@
1+
name: Publish Beta
2+
3+
on:
4+
workflow_call:
5+
6+
jobs:
7+
beta:
8+
runs-on: ubuntu-latest
9+
environment: beta
10+
11+
steps:
12+
- uses: actions/download-artifact@v4
13+
with:
14+
name: outputs
15+
path: ${{ github.workspace }}/outputs/
16+
17+
- name: Extract Version Info
18+
id: version-info
19+
shell: bash
20+
run: |
21+
echo "APP_VERSION_CODE=$(cat $GITHUB_WORKSPACE/outputs/version-code)" >> "$GITHUB_OUTPUT"
22+
echo "APP_VERSION_NAME=$(cat $GITHUB_WORKSPACE/outputs/version-name)" >> "$GITHUB_OUTPUT"
23+
{
24+
echo "CHANGELOG<<BSEOF"
25+
cat $GITHUB_WORKSPACE/outputs/changelog
26+
echo "BSEOF"
27+
} >> "$GITHUB_OUTPUT"
28+
29+
- name: Get Upload Params
30+
id: upload-params
31+
run: |
32+
RESPONSE=$(curl --location --request POST 'https://fzuhelper.west2.online/api/v2/url/upload-params' \
33+
--form "password=$ANDROID_UPDATE_PWD")
34+
echo "UPYUN_POLICY=$(echo $RESPONSE | jq -r .policy)" >> "$GITHUB_OUTPUT"
35+
echo "UPYUN_AUTH=$(echo $RESPONSE | jq -r .authorization)" >> "$GITHUB_OUTPUT"
36+
env:
37+
ANDROID_UPDATE_PWD: ${{ secrets.ANDROID_UPDATE_PWD }}
38+
39+
- name: Upload to UPYUN
40+
id: upload-apk
41+
run: |
42+
cd $GITHUB_WORKSPACE/outputs/apk/release
43+
mv app-arm64-v8a-release.apk $APK_FILENAME
44+
RESPONSE=$(curl -X POST "https://v0.api.upyun.com/fzuhelper-filedown" \
45+
-F "file=@$APK_FILENAME" \
46+
-F "policy=$UPYUN_POLICY" \
47+
-F "authorization=$UPYUN_AUTH")
48+
49+
DOWNLOAD_URL="https://download.w2fzu.com$(echo $RESPONSE | jq -r .url)"
50+
51+
echo "DOWNLOAD_URL=$DOWNLOAD_URL" >> "$GITHUB_OUTPUT"
52+
env:
53+
APK_FILENAME: FzuHelper_${{ steps.version-info.outputs.APP_VERSION_NAME }}(${{ steps.version-info.outputs.APP_VERSION_CODE }}).apk
54+
UPYUN_POLICY: ${{ steps.upload-params.outputs.UPYUN_POLICY }}
55+
UPYUN_AUTH: ${{ steps.upload-params.outputs.UPYUN_AUTH }}
56+
57+
- name: Submit Version Info
58+
run: |
59+
FEATURE="$CHANGELOG"$'\n\n'"此版本为新架构测试版,请提前加入内测群 1020036141 了解详情"
60+
curl --location --request POST 'https://fzuhelper.west2.online/api/v2/url/upload' \
61+
--form "version=$APP_VERSION_NAME" \
62+
--form "code=$APP_VERSION_CODE" \
63+
--form "url=$DOWNLOAD_URL" \
64+
--form "feature=$FEATURE" \
65+
--form "type=$CHANNEL" \
66+
--form "password=$ANDROID_UPDATE_PWD" \
67+
--form "force=$FORCE"
68+
env:
69+
CHANNEL: beta
70+
FORCE: true
71+
ANDROID_UPDATE_PWD: ${{ secrets.ANDROID_UPDATE_PWD }}
72+
APP_VERSION_NAME: ${{ steps.version-info.outputs.APP_VERSION_NAME }}
73+
APP_VERSION_CODE: ${{ steps.version-info.outputs.APP_VERSION_CODE }}
74+
CHANGELOG: ${{ steps.version-info.outputs.CHANGELOG }}
75+
DOWNLOAD_URL: ${{ steps.upload-apk.outputs.DOWNLOAD_URL }}

.github/workflows/build.yml

Lines changed: 5 additions & 152 deletions
Original file line numberDiff line numberDiff line change
@@ -1,19 +1,12 @@
11
name: Build APK
22

33
on:
4-
push:
5-
branches:
6-
- master
7-
workflow_dispatch:
8-
9-
concurrency:
10-
group: build
11-
cancel-in-progress: true
4+
workflow_call:
125

136
jobs:
147
build:
158
runs-on: ubuntu-latest
16-
timeout-minutes: 30
9+
timeout-minutes: 60
1710

1811
steps:
1912
- name: Checkout source code
@@ -39,7 +32,7 @@ jobs:
3932

4033
- uses: actions/setup-java@v4
4134
with:
42-
distribution: microsoft
35+
distribution: temurin
4336
java-version: 17
4437

4538
- name: Setup Gradle
@@ -55,8 +48,8 @@ jobs:
5548
run: |
5649
cd android
5750
echo "$SIGN_KEYSTORE_BASE64" | base64 -d > "./app/$KEYSTORE_PATH"
58-
./gradlew app:packageRelease --daemon --build-cache --parallel --configure-on-demand --max-workers=1024 \
59-
-D org.gradle.jvmargs="-Xmx12g -Xms12g -XX:MetaspaceSize=12g -XX:+HeapDumpOnOutOfMemoryError -Dfile.encoding=UTF-8 -XX:+UseG1GC"
51+
./gradlew app:packageRelease --build-cache --parallel --configure-on-demand --max-workers=$(nproc) \
52+
-D org.gradle.jvmargs="-Xmx4g -Xms1g -XX:MetaspaceSize=1g -XX:+HeapDumpOnOutOfMemoryError -Dfile.encoding=UTF-8 -XX:+UseG1GC"
6053
env:
6154
KEYSTORE_PATH: 'keystore.jks'
6255
KEYSTORE_PASSWORD: ${{ secrets.SIGN_KEYSTORE_PASSWORD }}
@@ -77,143 +70,3 @@ jobs:
7770
name: outputs
7871
path: android/app/build/outputs
7972
retention-days: 0
80-
81-
publish:
82-
runs-on: ubuntu-latest
83-
environment: beta
84-
needs:
85-
- build
86-
87-
steps:
88-
- uses: actions/download-artifact@v4
89-
with:
90-
name: outputs
91-
path: ${{ github.workspace }}/outputs/
92-
93-
- name: Extract Version Info
94-
id: version-info
95-
shell: bash
96-
run: |
97-
echo "APP_VERSION_CODE=$(cat $GITHUB_WORKSPACE/outputs/version-code)" >> "$GITHUB_OUTPUT"
98-
echo "APP_VERSION_NAME=$(cat $GITHUB_WORKSPACE/outputs/version-name)" >> "$GITHUB_OUTPUT"
99-
{
100-
echo "CHANGELOG<<BSEOF"
101-
cat $GITHUB_WORKSPACE/outputs/changelog
102-
echo "BSEOF"
103-
} >> "$GITHUB_OUTPUT"
104-
105-
- name: Get Upload Params
106-
id: upload-params
107-
run: |
108-
RESPONSE=$(curl --location --request POST 'https://fzuhelper.west2.online/api/v2/url/upload-params' \
109-
--form "password=$ANDROID_UPDATE_PWD")
110-
echo "UPYUN_POLICY=$(echo $RESPONSE | jq -r .policy)" >> "$GITHUB_OUTPUT"
111-
echo "UPYUN_AUTH=$(echo $RESPONSE | jq -r .authorization)" >> "$GITHUB_OUTPUT"
112-
env:
113-
ANDROID_UPDATE_PWD: ${{ secrets.ANDROID_UPDATE_PWD }}
114-
115-
- name: Upload to UPYUN
116-
id: upload-apk
117-
run: |
118-
cd $GITHUB_WORKSPACE/outputs/apk/release
119-
mv app-arm64-v8a-release.apk $APK_FILENAME
120-
RESPONSE=$(curl -X POST "https://v0.api.upyun.com/fzuhelper-filedown" \
121-
-F "file=@$APK_FILENAME" \
122-
-F "policy=$UPYUN_POLICY" \
123-
-F "authorization=$UPYUN_AUTH")
124-
125-
DOWNLOAD_URL="https://download.w2fzu.com$(echo $RESPONSE | jq -r .url)"
126-
127-
echo "DOWNLOAD_URL=$DOWNLOAD_URL" >> "$GITHUB_OUTPUT"
128-
env:
129-
APK_FILENAME: FzuHelper_${{ steps.version-info.outputs.APP_VERSION_NAME }}(${{ steps.version-info.outputs.APP_VERSION_CODE }}).apk
130-
UPYUN_POLICY: ${{ steps.upload-params.outputs.UPYUN_POLICY }}
131-
UPYUN_AUTH: ${{ steps.upload-params.outputs.UPYUN_AUTH }}
132-
133-
- name: Submit Version Info
134-
run: |
135-
FEATURE="$CHANGELOG"$'\n\n'"此版本为新架构测试版,请提前加入内测群 1020036141 了解详情"
136-
curl --location --request POST 'https://fzuhelper.west2.online/api/v2/url/upload' \
137-
--form "version=$APP_VERSION_NAME" \
138-
--form "code=$APP_VERSION_CODE" \
139-
--form "url=$DOWNLOAD_URL" \
140-
--form "feature=$FEATURE" \
141-
--form "type=$CHANNEL" \
142-
--form "password=$ANDROID_UPDATE_PWD" \
143-
--form "force=$FORCE"
144-
env:
145-
CHANNEL: beta
146-
FORCE: true
147-
ANDROID_UPDATE_PWD: ${{ secrets.ANDROID_UPDATE_PWD }}
148-
APP_VERSION_NAME: ${{ steps.version-info.outputs.APP_VERSION_NAME }}
149-
APP_VERSION_CODE: ${{ steps.version-info.outputs.APP_VERSION_CODE }}
150-
CHANGELOG: ${{ steps.version-info.outputs.CHANGELOG }}
151-
DOWNLOAD_URL: ${{ steps.upload-apk.outputs.DOWNLOAD_URL }}
152-
153-
publish-alpha:
154-
runs-on: ubuntu-latest
155-
environment: alpha
156-
needs:
157-
- build
158-
permissions:
159-
contents: write
160-
161-
steps:
162-
- name: Checkout source code
163-
uses: actions/checkout@v4
164-
165-
- uses: actions/download-artifact@v4
166-
with:
167-
name: outputs
168-
path: ${{ github.workspace }}/outputs/
169-
170-
- name: Extract Version Info
171-
id: version-info
172-
shell: bash
173-
run: |
174-
echo "APP_VERSION_CODE=$(cat $GITHUB_WORKSPACE/outputs/version-code)" >> "$GITHUB_OUTPUT"
175-
echo "APP_VERSION_NAME=$(cat $GITHUB_WORKSPACE/outputs/version-name)" >> "$GITHUB_OUTPUT"
176-
{
177-
echo "CHANGELOG<<BSEOF"
178-
cat $GITHUB_WORKSPACE/outputs/changelog
179-
echo "BSEOF"
180-
} >> "$GITHUB_OUTPUT"
181-
182-
- name: Get APK Filename
183-
id: get-apk-filename
184-
run: |
185-
echo "APK_FILENAME=FzuHelper_${APP_VERSION_NAME}(${APP_VERSION_CODE}).apk" >> "$GITHUB_OUTPUT"
186-
env:
187-
APP_VERSION_NAME: ${{ steps.version-info.outputs.APP_VERSION_NAME }}
188-
APP_VERSION_CODE: ${{ steps.version-info.outputs.APP_VERSION_CODE }}
189-
190-
- name: Delete alpha release using GitHub CLI
191-
run: |
192-
if gh release view alpha; then
193-
gh release delete alpha --yes
194-
else
195-
echo "No alpha release exists."
196-
fi
197-
env:
198-
GITHUB_TOKEN: ${{ github.token }}
199-
200-
- name: Move APK File
201-
run: |
202-
mv $GITHUB_WORKSPACE/outputs/apk/release/app-arm64-v8a-release.apk $APK_FILENAME
203-
env:
204-
APK_FILENAME: ${{ steps.get-apk-filename.outputs.apk_filename }}
205-
206-
- name: Create GitHub Pre-Release
207-
uses: softprops/action-gh-release@v1
208-
with:
209-
tag_name: alpha
210-
name: 'Alpha'
211-
body: |
212-
${{ steps.version-info.outputs.CHANGELOG }}
213-
214-
此版本为新架构测试版,请提前加入内测群 1020036141 了解详情
215-
prerelease: true
216-
files: |
217-
${{ steps.get-apk-filename.outputs.apk_filename }}
218-
env:
219-
GITHUB_TOKEN: ${{ github.token }}

.github/workflows/main.yml

Lines changed: 33 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,33 @@
1+
name: Main Action
2+
3+
on:
4+
push:
5+
branches:
6+
- master
7+
tags:
8+
- "[0-9]+.[0-9]+.[0-9]+"
9+
workflow_dispatch:
10+
11+
jobs:
12+
build:
13+
uses: ./.github/workflows/build.yml
14+
15+
alpha:
16+
if: github.ref == 'refs/heads/master'
17+
needs: build
18+
uses: ./.github/workflows/alpha.yml
19+
20+
beta:
21+
if: github.event_name == 'workflow_dispatch'
22+
needs: build
23+
uses: ./.github/workflows/beta.yml
24+
25+
release:
26+
if: startsWith(github.ref, 'refs/tags/')
27+
needs: build
28+
uses: ./.github/workflows/release.yml
29+
30+
version:
31+
if: startsWith(github.ref, 'refs/tags/')
32+
needs: release
33+
uses: ./.github/workflows/version.yml

0 commit comments

Comments
 (0)