-
Notifications
You must be signed in to change notification settings - Fork 42
242 lines (210 loc) · 7.88 KB
/
ci.yml
File metadata and controls
242 lines (210 loc) · 7.88 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
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
name: CI
on:
push:
branches:
- '**'
tags:
- '*'
pull_request:
workflow_dispatch:
permissions:
contents: write
env:
ROOT: "${{ github.workspace }}"
SCRIPTS: "${{ github.workspace }}/.github/scripts"
SERIOUS_PYTHON_SITE_PACKAGES: "${{ github.workspace }}/site-packages"
UV_PYTHON: "3.12"
jobs:
macos:
name: Test on macOS
runs-on: macos-14
steps:
- name: Checkout repository
uses: actions/checkout@v4
- name: Setup Flutter
uses: kuhnroyal/flutter-fvm-config-action/setup@v3
with:
path: '.fvmrc'
cache: true
- name: Run tests
shell: bash
run: |
export SERIOUS_PYTHON_SITE_PACKAGES=$GITHUB_WORKSPACE/site-packages
cd src/serious_python/example/flet_example
dart run serious_python:main package app/src -p Darwin -r flet -r --pre
flutter test integration_test -d macos
ios:
name: Test on iOS
runs-on: macos-14
steps:
- name: Checkout repository
uses: actions/checkout@v4
- name: Setup Flutter
uses: kuhnroyal/flutter-fvm-config-action/setup@v3
with:
path: '.fvmrc'
cache: true
- name: Build iOS (no codesign)
shell: bash
run: |
export SERIOUS_PYTHON_SITE_PACKAGES=$GITHUB_WORKSPACE/site-packages
cd src/serious_python/example/flet_example
dart run serious_python:main package app/src -p iOS -r flet -r --pre
flutter build ios --no-codesign
# add simulator drive steps later if needed
android:
name: Test on Android
runs-on: ubuntu-22.04
steps:
- name: Checkout repository
uses: actions/checkout@v4
- name: Setup Flutter
uses: kuhnroyal/flutter-fvm-config-action/setup@v3
with:
path: '.fvmrc'
cache: true
- name: Accept SDK licenses
shell: bash
run: |
sudo apt-get update
sudo apt-get install -y unzip
echo "y" | sudo ${ANDROID_HOME}/tools/bin/sdkmanager --licenses || true
- name: Prepare Android emulator + Flutter
shell: bash
env:
API_LEVEL: "33"
TARGET: "google_atd"
ARCH: "x86_64"
DEVICE_NAME: "android_emulator"
DEVICE_TYPE: "pixel_5"
run: |
export PATH=$ANDROID_HOME/platform-tools:$ANDROID_HOME/emulator:$PATH
sdkmanager "platform-tools" "platforms;android-${API_LEVEL}"
sdkmanager --install "system-images;android-${API_LEVEL};${TARGET};${ARCH}"
sdkmanager --update
echo "no" | avdmanager -v create avd --force --name "${DEVICE_NAME}" --package "system-images;android-${API_LEVEL};${TARGET};${ARCH}" --tag "${TARGET}" --sdcard 128M --device "${DEVICE_TYPE}"
${ANDROID_HOME}/emulator/emulator -avd "${DEVICE_NAME}" -memory 2048 -wipe-data -no-boot-anim -noaudio -no-window -accel off -partition-size 8192 &
adb wait-for-device shell 'while [[ -z $(getprop dev.bootcomplete) ]]; do sleep 1; done;'
- name: Run tests
shell: bash
run: |
cd src/serious_python/example/flet_example
dart run serious_python:main package app/src -p Android -r flet -r --pre
flutter test integration_test -d emulator-5554
windows:
name: Test on Windows
runs-on: windows-latest
steps:
- name: Checkout repository
uses: actions/checkout@v4
- name: Setup Flutter
uses: kuhnroyal/flutter-fvm-config-action/setup@v3
with:
path: '.fvmrc'
cache: true
- name: Run tests
shell: pwsh
run: |
cd src/serious_python/example/flet_example
dart run serious_python:main package app/src -p Windows -r flet -r --pre
flutter test integration_test -d windows
linux:
name: Test on Linux
runs-on: ubuntu-22.04
steps:
- name: Checkout repository
uses: actions/checkout@v4
- name: Setup Flutter
uses: kuhnroyal/flutter-fvm-config-action/setup@v3
with:
path: '.fvmrc'
cache: true
- name: Install desktop deps
run: |
sudo apt-get update --allow-releaseinfo-change
sudo apt-get install -y xvfb libgtk-3-dev libgstreamer1.0-dev libgstreamer-plugins-base1.0-dev libgstreamer-plugins-bad1.0-dev gstreamer1.0-plugins-base gstreamer1.0-plugins-good gstreamer1.0-plugins-bad gstreamer1.0-plugins-ugly gstreamer1.0-libav gstreamer1.0-doc gstreamer1.0-tools gstreamer1.0-x gstreamer1.0-alsa gstreamer1.0-gl gstreamer1.0-gtk3 gstreamer1.0-qt5 gstreamer1.0-pulseaudio
- name: Run tests
shell: bash
run: |
cd src/serious_python/example/flet_example
dart run serious_python:main package app/src -p Linux -r flet -r --pre
xvfb-run flutter test integration_test -d linux
linux-arm64:
name: Test on Linux ARM64
runs-on: ubuntu-22.04-arm64 # change if you use self-hosted ARM64
steps:
- name: Checkout repository
uses: actions/checkout@v4
- name: Setup Flutter
uses: kuhnroyal/flutter-fvm-config-action/setup@v3
with:
path: '.fvmrc'
cache: true
- name: Install deps
shell: bash
run: |
sudo sed -i "/#\$nrconf{restart} = 'i';/s/.*/\$nrconf{restart} = 'a';/" /etc/needrestart/needrestart.conf
sudo apt-get update -y --allow-releaseinfo-change
sudo apt-get install -y clang ninja-build xvfb libgtk-3-dev gstreamer1.0-plugins-bad gstreamer1.0-plugins-ugly gstreamer1.0-libav
- name: Run tests
shell: bash
run: |
cd src/serious_python/example/flet_example
dart run serious_python:main package app/src -p Linux -r flet -r --pre
xvfb-run flutter test integration_test -d linux
publish:
name: Publish to pub.dev
needs:
- macos
- ios
- android
- windows
- linux
- linux-arm64
runs-on: ubuntu-22.04
# if: startsWith(github.ref, 'refs/tags/v')
steps:
- name: Checkout repository
uses: actions/checkout@v4
with:
fetch-depth: 0
- name: Setup Flutter
uses: kuhnroyal/flutter-fvm-config-action/setup@v3
with:
path: '.fvmrc'
cache: true
- name: Compute PKG_VER
id: ver
shell: bash
run: |
PKG_VER="${GITHUB_REF_NAME#v}"
echo "PKG_VER=$PKG_VER" | tee -a "$GITHUB_ENV"
sudo apt-get update
- name: Configure pub.dev credentials
# if: ${{ secrets.PUB_DEV_TOKEN != '' }}
env:
PUB_DEV_TOKEN: ${{ secrets.PUB_DEV_TOKEN }}
run: |
mkdir -p $HOME/.config/dart
echo "$PUB_DEV_TOKEN" | base64 --decode > $HOME/.config/dart/pub-credentials.json
- name: Patch pubspec versions
run: |
uv run "$SCRIPTS/patch_pubspec.py" "src/serious_python_platform_interface/pubspec.yaml" "$PKG_VER"
uv run "$SCRIPTS/patch_pubspec.py" "src/serious_python/pubspec.yaml" "$PKG_VER"
uv run "$SCRIPTS/patch_pubspec.py" "src/serious_python_android/pubspec.yaml" "$PKG_VER"
uv run "$SCRIPTS/patch_pubspec.py" "src/serious_python_darwin/pubspec.yaml" "$PKG_VER"
uv run "$SCRIPTS/patch_pubspec.py" "src/serious_python_windows/pubspec.yaml" "$PKG_VER"
uv run "$SCRIPTS/patch_pubspec.py" "src/serious_python_linux/pubspec.yaml" "$PKG_VER"
- name: Publish packages
shell: bash
if: false
run: |
publish_pkg () { pushd "$1" >/dev/null; dart pub publish --force; popd >/dev/null; }
publish_pkg src/serious_python_platform_interface
sleep 600
publish_pkg src/serious_python_android
publish_pkg src/serious_python_darwin
publish_pkg src/serious_python_windows
publish_pkg src/serious_python_linux
sleep 600
publish_pkg src/serious_python