-
Notifications
You must be signed in to change notification settings - Fork 0
148 lines (115 loc) · 3.46 KB
/
Copy pathci.yml
File metadata and controls
148 lines (115 loc) · 3.46 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
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
# CI pipeline: lint → unit tests → widget tests → build web + Android.
# Runs on GitHub Actions (workflow format is GitHub's); the pipeline itself is
# generic: checkout, install toolchain, deps, lint, test, build. Same sequence
# can be reproduced in GitLab CI, Jenkins, or any CI using the same commands
# (see README and Makefile). All jobs must pass before merge.
name: CI
on:
push:
branches: [main, master]
pull_request:
branches: [main, master]
concurrency:
group: ci-${{ github.ref }}
cancel-in-progress: true
env:
FLUTTER_CHANNEL: stable
jobs:
lint:
name: Lint
runs-on: ubuntu-latest
steps:
- name: Checkout
uses: actions/checkout@v4
- name: Set up Flutter
uses: subosito/flutter-action@v2
with:
channel: ${{ env.FLUTTER_CHANNEL }}
cache: true
- name: Get dependencies
run: flutter pub get
- name: Check no outdated deps message
run: bash script/check_no_outdated_deps.sh
- name: Generate l10n
run: flutter gen-l10n
- name: Analyze
run: flutter analyze lib test
- name: Check format
run: dart format --set-exit-if-changed lib test
test-unit:
name: Unit tests
runs-on: ubuntu-latest
steps:
- name: Checkout
uses: actions/checkout@v4
- name: Set up Flutter
uses: subosito/flutter-action@v2
with:
channel: ${{ env.FLUTTER_CHANNEL }}
cache: true
- name: Get dependencies
run: flutter pub get
- name: Generate l10n
run: flutter gen-l10n
- name: Run unit tests
run: flutter test test/domain test/storage test/router test/l10n test/deps_no_outdated_message_test.dart test/format_check_test.dart
test-widget:
name: Widget tests
runs-on: ubuntu-latest
steps:
- name: Checkout
uses: actions/checkout@v4
- name: Set up Flutter
uses: subosito/flutter-action@v2
with:
channel: ${{ env.FLUTTER_CHANNEL }}
cache: true
- name: Get dependencies
run: flutter pub get
- name: Generate l10n
run: flutter gen-l10n
- name: Run widget tests
run: flutter test test/screens test/helpers
build-web:
name: Build Web
runs-on: ubuntu-latest
needs: [lint, test-unit, test-widget]
steps:
- name: Checkout
uses: actions/checkout@v4
- name: Set up Flutter
uses: subosito/flutter-action@v2
with:
channel: ${{ env.FLUTTER_CHANNEL }}
cache: true
- name: Get dependencies
run: flutter pub get
- name: Generate l10n
run: flutter gen-l10n
- name: Build web
run: flutter build web --release
build-android:
name: Build Android APK
runs-on: ubuntu-latest
needs: [lint, test-unit, test-widget]
steps:
- name: Checkout
uses: actions/checkout@v4
- name: Set up Java
uses: actions/setup-java@v4
with:
distribution: 'temurin'
java-version: '17'
- name: Set up Flutter
uses: subosito/flutter-action@v2
with:
channel: ${{ env.FLUTTER_CHANNEL }}
cache: true
- name: Get dependencies
run: flutter pub get
- name: Generate l10n
run: flutter gen-l10n
- name: Accept Android licenses
run: yes | flutter doctor --android-licenses
- name: Build APK
run: flutter build apk --release