Repository navigation
133 lines (118 loc) · 3.91 KB
/
Copy pathmobile-package.yml
File metadata and controls
133 lines (118 loc) · 3.91 KB
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
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
name: Mobile Package
on:
push:
tags:
- 'mobile-v*'
workflow_dispatch:
inputs:
tag_name:
description: 'Mobile release tag (for example mobile-v1.0.0).'
required: true
type: string
permissions:
contents: write
concurrency:
group: mobile-package-${{ github.event.release.tag_name || inputs.tag_name || github.ref_name }}
cancel-in-progress: false
jobs:
prepare:
name: Prepare mobile release
runs-on: ubuntu-latest
outputs:
tag_name: ${{ steps.meta.outputs.tag_name }}
version: ${{ steps.meta.outputs.version }}
prerelease: ${{ steps.meta.outputs.prerelease }}
steps:
- uses: actions/checkout@v5
with:
ref: ${{ inputs.tag_name || github.ref_name }}
fetch-depth: 1
- name: Resolve mobile version
id: meta
shell: bash
env:
INPUT_TAG_NAME: ${{ inputs.tag_name }}
REF_NAME: ${{ github.ref_name }}
run: |
set -euo pipefail
TAG="${INPUT_TAG_NAME:-${REF_NAME}}"
case "$TAG" in
mobile-v*) ;;
*) echo "Expected a mobile-v* tag, got $TAG" >&2; exit 1 ;;
esac
VERSION="${TAG#mobile-v}"
node scripts/verify-release-version-sync.mjs --mobile-version "$VERSION"
if [[ "$VERSION" == *-* ]]; then
PRERELEASE=true
else
PRERELEASE=false
fi
printf 'tag_name=%s\nversion=%s\nprerelease=%s\n' \
"$TAG" "$VERSION" "$PRERELEASE" >> "$GITHUB_OUTPUT"
android:
name: Android package
needs: prepare
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v5
with:
ref: ${{ needs.prepare.outputs.tag_name }}
- uses: actions/setup-java@v5
with:
distribution: temurin
java-version: '21'
- uses: gradle/actions/setup-gradle@v4
- name: Configure Android release signing
shell: bash
run: |
set -euo pipefail
echo "Using the runner-generated Android debug keystore for this mobile prerelease."
- name: Build signed Android package
working-directory: src/apps/mobile/android
run: ./gradlew :app:assembleRelease --no-daemon
- name: Stage Android release assets
shell: bash
env:
VERSION: ${{ needs.prepare.outputs.version }}
run: |
set -euo pipefail
mkdir -p mobile-release-assets
suffix='-debug'
cp src/apps/mobile/android/app/build/outputs/apk/release/app-release.apk \
"mobile-release-assets/OpenBitFun-Mobile-${VERSION}-android${suffix}.apk"
(cd mobile-release-assets && sha256sum ./*.apk > SHA256SUMS)
- uses: actions/upload-artifact@v6
with:
name: openbitfun-mobile-${{ needs.prepare.outputs.tag_name }}-android
path: mobile-release-assets/*
if-no-files-found: error
retention-days: 7
publish:
name: Publish mobile release
needs: [prepare, android]
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v5
with:
ref: ${{ needs.prepare.outputs.tag_name }}
- uses: actions/download-artifact@v7
with:
name: openbitfun-mobile-${{ needs.prepare.outputs.tag_name }}-android
path: mobile-release-assets
- name: Create mobile release
env:
GH_TOKEN: ${{ github.token }}
TAG_NAME: ${{ needs.prepare.outputs.tag_name }}
VERSION: ${{ needs.prepare.outputs.version }}
PRERELEASE: true
shell: bash
run: |
set -euo pipefail
VERSION="$VERSION (debug signing)"
gh release create "$TAG_NAME" \
--repo "$GITHUB_REPOSITORY" \
--verify-tag \
--title "OpenBitFun Mobile $VERSION" \
--generate-notes \
--prerelease="$PRERELEASE" \
mobile-release-assets/*