-
Notifications
You must be signed in to change notification settings - Fork 2
140 lines (117 loc) Β· 3.97 KB
/
build-android.yml
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
134
135
136
137
138
139
140
name: Build Android
# Controls when the workflow will run
on:
# Triggers the workflow on push events but only for the "main" branch
# push:
# branches: [ "main" ]
# pull_request:
# branches: [ "main" ]
# Allows you to run this workflow manually from the Actions tab
workflow_dispatch:
jobs:
build-android:
name: Build Android
runs-on: macOS-latest
steps:
- name: ποΈ Setup c-breez repository
uses: actions/checkout@v4
with:
path: 'cbreez'
- name: Install rust
run: |
rustup set auto-self-update disable
rustup toolchain install stable --profile minimal
- name: ποΈ Setup Java
uses: actions/setup-java@v4
with:
distribution: 'zulu'
java-version: '17'
- name: ποΈ Setup Flutter
uses: subosito/flutter-action@v2
with:
channel: 'stable'
cache: true
- name: ποΈ Android cache
id: android-cache
uses: actions/cache@v3
with:
path: ~/.android/debug.keystore
key: debug.keystore
- name: ποΈ Copy Firebase configuration file
working-directory: cbreez
env:
GOOGLE_SERVICES: ${{secrets.GOOGLE_SERVICES}}
run: echo "$GOOGLE_SERVICES" > android/app/google-services.json
- name: ποΈ Setup breez-sdk repository
uses: actions/checkout@v4
with:
repository: 'breez/breez-sdk'
ssh-key: ${{secrets.REPO_SSH_KEY}}
path: 'breez-sdk'
- name: ποΈ Rust cache
uses: Swatinem/rust-cache@v2
with:
workspaces: breez-sdk/libs
cache-all-crates: true
- name: π¦ Install Breez SDK dependencies
run: |
cargo install cargo-ndk
brew install protobuf
cd breez-sdk/libs/sdk-flutter
make init
cd ../sdk-core
make init
- name: π Install SSH Key
env:
SSH_PRIVATE_KEY: ${{secrets.REPO_SSH_KEY}}
run: |
mkdir -p ~/.ssh
echo "$SSH_PRIVATE_KEY" > ~/.ssh/id_rsa
sudo chmod 600 ~/.ssh/id_rsa
ssh-add ~/.ssh/id_rsa
- name: π¨ Build Breez SDK
working-directory: breez-sdk/libs/sdk-flutter
run: |
rm -rf ../target
cargo check
make android
- name: ποΈ Populate Flutter tool's cache of binary artifacts.
working-directory: cbreez
run: flutter precache
- name: π¦ Install Flutter dependencies
working-directory: cbreez
run: flutter pub get
- name: π Perform static analysis
working-directory: cbreez
run: dart analyze --fatal-infos
- name: π οΈ Run tests
working-directory: cbreez
run: flutter test
- name: βοΈ Setup compile-time variables
env:
CONFIG_FILE: ${{secrets.CONFIG_FILE}}
run: echo "$CONFIG_FILE" > ./cbreez/config.json
- name: π Build Release apk
working-directory: cbreez
run: flutter build apk --release --split-debug-info=./obsfucated/debug --obfuscate --no-pub --split-per-abi --dart-define-from-file=config.json
- name: ποΈ Compress build folder (APK)
if: github.event_name == 'release'
uses: TheDoctor0/zip-release@master
with:
filename: build.zip
directory: cbreez/build/app/outputs/flutter-apk
type: zip
- name: π€ Upload asset (APK)
if: github.event_name == 'release'
uses: svenstaro/upload-release-action@v2
with:
asset_name: Android-APK.zip
file: cbreez/build/app/outputs/flutter-apk/build.zip
overwrite: true
repo_token: ${{ secrets.GITHUB_TOKEN }}
- name: π€ Upload artifact (APK)
if: github.event_name != 'release'
uses: actions/upload-artifact@v3
with:
name: Android-APK
path: cbreez/build/app/outputs/flutter-apk/app-*.apk