Github Action 编译和发布APK

本文最后更新于:2022年3月13日 晚上

release

使用 Github 的 Action 来自动编译并且发布软件到 Release

如下代码分为两个部分,

  • Build 生产 APK
  • 发布 APK 到 release 页面

github

代码如下:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
name: Build and Release

on:
push:
branches:
- master
- "feature/*"
tags:
- "v*.*.*"
pull_request:
branches:
- master
- "feature/*"

jobs:
apk:
name: Generate APK
runs-on: ubuntu-latest
steps:
- name: Checkout
uses: actions/checkout@v2.4.0
- name: Branch name
run: echo running on branch ${GITHUB_REF##*/}
- name: Setup JDK
uses: actions/setup-java@v2.5.0
with:
distribution: temurin
java-version: "11"
- name: Set execution flag for gradlew
run: chmod +x gradlew
- name: Build APK
run: bash ./gradlew assembleDebug --stacktrace
- name: Upload APK
uses: actions/upload-artifact@v1
with:
name: apk
path: app/build/outputs/apk/debug/app-debug.apk

release:
name: Release APK
needs: apk
runs-on: ubuntu-latest
steps:
- name: Get branch name
id: branch-name
uses: tj-actions/branch-names@v5.1
- name: Print branch
run: |
echo "Running on default: ${{ steps.branch-name.outputs.current_branch }}"

- name: Download APK from build
uses: actions/download-artifact@v1
with:
name: apk
- name: Create Release
id: create_release
uses: actions/create-release@v1
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
with:
tag_name: ${{ github.run_number }}
release_name: ${{ github.event.repository.name }} ${{ steps.branch-name.outputs.current_branch }} v${{ github.run_number }}.${{ github.run_attempt }}
- name: Upload Release APK
id: upload_release_asset
uses: actions/upload-release-asset@v1.0.1
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
with:
upload_url: ${{ steps.create_release.outputs.upload_url }}
asset_path: apk/app-debug.apk
asset_name: ${{ github.event.repository.name }} ${{ steps.branch-name.outputs.current_branch }} v${{ github.run_number }}.${{ github.run_attempt }}.apk
asset_content_type: application/zip

本博客所有文章除特别声明外,均采用 CC BY-SA 4.0 协议 ,转载请注明出处!