-
Notifications
You must be signed in to change notification settings - Fork 0
134 lines (125 loc) · 3.66 KB
/
Copy pathci.yaml
File metadata and controls
134 lines (125 loc) · 3.66 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
name: CI
on:
push:
branches: [master]
pull_request:
branches: [master]
workflow_dispatch:
concurrency:
group: ${{ github.workflow }}-${{ github.ref }}
cancel-in-progress: true
jobs:
format:
name: Format
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v6
- uses: subosito/flutter-action@v2
with:
channel: stable
cache: true
- run: flutter pub get
- run: dart format --output=none --set-exit-if-changed .
analyze:
name: Analyze
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v6
- name: Check podspec version matches pubspec
run: |
pubspec_version=$(grep -m1 '^version:' pubspec.yaml | sed 's/version:[[:space:]]*//')
status=0
found=0
while IFS= read -r podspec; do
found=$((found+1))
podspec_version=$(grep -m1 "s\.version" "$podspec" | sed -E "s/.*s\.version[[:space:]]*=[[:space:]]*'([^']+)'.*/\1/")
if [ "$podspec_version" != "$pubspec_version" ]; then
echo "::error file=$podspec::podspec version ($podspec_version) does not match pubspec.yaml version ($pubspec_version)"
status=1
fi
done < <(find . -name '*.podspec' -not -path './example/*' -not -path './build/*')
if [ "$found" -eq 0 ]; then
echo "::error::no podspec found — guard is vacuous, update the find paths"
status=1
fi
exit $status
- uses: subosito/flutter-action@v2
with:
channel: stable
cache: true
- run: flutter pub get
- run: flutter analyze --fatal-infos --fatal-warnings
test:
name: Test (Flutter ${{ matrix.flutter }})
runs-on: ubuntu-latest
strategy:
fail-fast: false
matrix:
flutter: [stable, beta]
steps:
- uses: actions/checkout@v6
- uses: subosito/flutter-action@v2
with:
channel: ${{ matrix.flutter }}
cache: true
- run: flutter pub get
- run: flutter test --coverage
- name: Upload coverage
if: matrix.flutter == 'stable'
uses: actions/upload-artifact@v4
with:
name: coverage
path: coverage/lcov.info
pana:
name: Pana score
runs-on: ubuntu-latest
continue-on-error: true
steps:
- uses: actions/checkout@v6
- uses: subosito/flutter-action@v2
with:
channel: stable
cache: true
- run: flutter pub get
- run: dart pub global activate pana
- run: pana --no-warning
example:
name: Example analyze
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v6
- uses: subosito/flutter-action@v2
with:
channel: stable
cache: true
- run: flutter pub get
working-directory: example
- run: flutter analyze
working-directory: example
build-example:
name: Example iOS build
runs-on: macos-15
steps:
- uses: actions/checkout@v6
- uses: subosito/flutter-action@v2
with:
channel: stable
cache: true
- run: flutter pub get
working-directory: example
- run: flutter build ios --release --no-codesign
working-directory: example
build-example-macos:
name: Example macOS build
runs-on: macos-15
steps:
- uses: actions/checkout@v6
- uses: subosito/flutter-action@v2
with:
channel: stable
cache: true
- run: flutter config --enable-macos-desktop
- run: flutter pub get
working-directory: example
- run: flutter build macos --debug
working-directory: example