Skip to content

Commit 281debd

Browse files
committed
Add initial setup for Flet build test application with CI configuration
1 parent cbb6ae6 commit 281debd

File tree

3 files changed

+320
-0
lines changed

3 files changed

+320
-0
lines changed

.github/workflows/build.yml

Lines changed: 255 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,255 @@
1+
name: All Builds (Linux, macOS, Windows, IPA, APK, AAB, Web)
2+
3+
on:
4+
push:
5+
workflow_dispatch:
6+
schedule:
7+
- cron: "0 12 * * *" # auto-runs every day at 12:00 noon UTC
8+
9+
env:
10+
# https://flet.dev/docs/publish#versioning
11+
BUILD_NUMBER: 1
12+
BUILD_VERSION: 1.0.0
13+
UV_PYTHON: 3.12
14+
UV_PRERELEASE: "allow"
15+
PYTHONUTF8: 1
16+
FLET_CLI_NO_RICH_OUTPUT: 1
17+
18+
jobs:
19+
build-linux:
20+
runs-on: ubuntu-latest
21+
22+
steps:
23+
- name: Checkout repository
24+
uses: actions/checkout@v4
25+
26+
- name: Setup uv
27+
uses: astral-sh/setup-uv@v6
28+
29+
- name: Install Python dependencies
30+
run: |
31+
uv venv
32+
uv pip install "flet[cli] >=0.70.0.dev0"
33+
34+
- name: Install Linux dependencies
35+
shell: bash
36+
run: |
37+
sudo apt update --allow-releaseinfo-change
38+
sudo apt-get install -y --no-install-recommends \
39+
clang \
40+
ninja-build \
41+
libgtk-3-dev \
42+
libasound2-dev \
43+
libmpv-dev \
44+
mpv \
45+
libgstreamer1.0-dev \
46+
libgstreamer-plugins-base1.0-dev \
47+
libgstreamer-plugins-bad1.0-dev \
48+
gstreamer1.0-plugins-base \
49+
gstreamer1.0-plugins-good \
50+
gstreamer1.0-plugins-bad \
51+
gstreamer1.0-plugins-ugly \
52+
gstreamer1.0-libav \
53+
gstreamer1.0-tools \
54+
gstreamer1.0-x \
55+
gstreamer1.0-alsa \
56+
gstreamer1.0-gl \
57+
gstreamer1.0-gtk3 \
58+
gstreamer1.0-qt5 \
59+
gstreamer1.0-pulseaudio
60+
61+
sudo apt-get clean
62+
63+
- name: Flet Build Linux
64+
run: |
65+
uv run flet build linux --yes --verbose --build-number=$BUILD_NUMBER --build-version=$BUILD_VERSION
66+
67+
- name: Upload Linux Artifact
68+
uses: actions/[email protected]
69+
with:
70+
name: linux-build-artifact
71+
path: build/linux
72+
if-no-files-found: warn
73+
overwrite: false
74+
75+
build-macos:
76+
runs-on: macos-latest
77+
78+
steps:
79+
- name: Checkout code
80+
uses: actions/checkout@v4
81+
82+
- name: Setup uv
83+
uses: astral-sh/setup-uv@v6
84+
85+
- name: Install dependencies
86+
run: |
87+
uv venv
88+
uv pip install "flet[cli] >=0.70.0.dev0"
89+
90+
- name: Flet Build macOS
91+
run: |
92+
uv run flet build macos --yes --verbose --build-number=$BUILD_NUMBER --build-version=$BUILD_VERSION
93+
94+
- name: Upload macOS Artifact
95+
uses: actions/[email protected]
96+
with:
97+
name: macos-build-artifact
98+
path: build/macos
99+
if-no-files-found: warn
100+
overwrite: false
101+
102+
build-windows:
103+
runs-on: windows-latest
104+
105+
steps:
106+
- name: Checkout code
107+
uses: actions/checkout@v4
108+
109+
- name: Setup uv
110+
uses: astral-sh/setup-uv@v6
111+
112+
- name: Install dependencies
113+
shell: bash
114+
run: |
115+
uv venv
116+
uv pip install "flet[cli] >=0.70.0.dev0"
117+
118+
- name: Flet Build Windows
119+
shell: bash
120+
run: |
121+
uv run flet build windows --yes --verbose --no-rich-output --build-number=$BUILD_NUMBER --build-version=$BUILD_VERSION
122+
123+
- name: Upload Windows Artifact
124+
uses: actions/[email protected]
125+
with:
126+
name: windows-build-artifact
127+
path: build/windows
128+
if-no-files-found: warn
129+
overwrite: false
130+
131+
build-aab:
132+
strategy:
133+
fail-fast: false
134+
matrix:
135+
os: [ ubuntu, macos, windows ]
136+
runs-on: ${{ matrix.os }}-latest
137+
138+
steps:
139+
- name: Checkout code
140+
uses: actions/checkout@v4
141+
142+
- name: Setup uv
143+
uses: astral-sh/setup-uv@v6
144+
145+
- name: Install dependencies
146+
shell: bash
147+
run: |
148+
uv venv
149+
uv pip install "flet[cli] >=0.70.0.dev0"
150+
151+
- name: Flet Build AAB
152+
shell: bash
153+
run: |
154+
uv run flet build aab --yes --verbose --build-number=$BUILD_NUMBER --build-version=$BUILD_VERSION
155+
156+
- name: Upload AAB Artifact
157+
uses: actions/[email protected]
158+
with:
159+
name: aab-build-${{ matrix.os }}-artifact
160+
path: build/aab
161+
if-no-files-found: warn
162+
overwrite: false
163+
164+
build-apk:
165+
strategy:
166+
fail-fast: false
167+
matrix:
168+
os: [ ubuntu, macos, windows ]
169+
runs-on: ${{ matrix.os }}-latest
170+
171+
steps:
172+
- name: Checkout code
173+
uses: actions/checkout@v4
174+
175+
- name: Setup uv
176+
uses: astral-sh/setup-uv@v6
177+
178+
- name: Install dependencies
179+
shell: bash
180+
run: |
181+
uv venv
182+
uv pip install "flet[cli] >=0.70.0.dev0"
183+
184+
- name: Flet Build APK
185+
shell: bash
186+
run: |
187+
uv run flet build apk --yes --verbose --build-number=$BUILD_NUMBER --build-version=$BUILD_VERSION
188+
189+
- name: Upload APK Artifact
190+
uses: actions/[email protected]
191+
with:
192+
name: apk-build-${{ matrix.os }}-artifact
193+
path: build/apk
194+
if-no-files-found: warn
195+
overwrite: false
196+
197+
build-ipa:
198+
runs-on: macos-latest
199+
200+
steps:
201+
- name: Checkout code
202+
uses: actions/checkout@v4
203+
204+
- name: Setup uv
205+
uses: astral-sh/setup-uv@v6
206+
207+
- name: Install dependencies
208+
run: |
209+
uv venv
210+
uv pip install "flet[cli] >=0.70.0.dev0"
211+
212+
- name: Flet Build IPA
213+
run: |
214+
uv run flet build ipa --yes --verbose --build-number=$BUILD_NUMBER --build-version=$BUILD_VERSION
215+
216+
- name: Upload IPA Artifact
217+
uses: actions/[email protected]
218+
with:
219+
name: ipa-build-artifact
220+
path: build/ipa
221+
if-no-files-found: warn
222+
overwrite: false
223+
224+
build-web:
225+
strategy:
226+
fail-fast: false
227+
matrix:
228+
os: [ ubuntu, macos, windows ]
229+
runs-on: ${{ matrix.os }}-latest
230+
231+
steps:
232+
- name: Checkout code
233+
uses: actions/checkout@v4
234+
235+
- name: Setup uv
236+
uses: astral-sh/setup-uv@v6
237+
238+
- name: Install dependencies
239+
shell: bash
240+
run: |
241+
uv venv
242+
uv pip install "flet[cli] >=0.70.0.dev0"
243+
244+
- name: Flet Build Web
245+
shell: bash
246+
run: |
247+
uv run flet build web --yes --verbose
248+
249+
- name: Upload Web Artifact
250+
uses: actions/[email protected]
251+
with:
252+
name: web-build-${{ matrix.os }}-artifact
253+
path: build/web
254+
if-no-files-found: warn
255+
overwrite: false

pyproject.toml

Lines changed: 37 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,37 @@
1+
[project]
2+
name = "flet-build-test"
3+
version = "0.1.0"
4+
description = "App to test flet build."
5+
requires-python = ">=3.10"
6+
authors = [{ name = "Appveyor Systems Inc.", email = "[email protected]" }]
7+
8+
dependencies = [
9+
"flet >=0.70.0.dev0",
10+
# extensions
11+
"flet-ads >=0.70.0.dev0",
12+
"flet-audio >=0.70.0.dev0",
13+
"flet-audio-recorder >=0.70.0.dev0",
14+
"flet-charts >=0.70.0.dev0",
15+
"flet-datatable2 >=0.70.0.dev0",
16+
"flet-flashlight >=0.70.0.dev0",
17+
"flet-geolocator >=0.70.0.dev0",
18+
"flet-lottie >=0.70.0.dev0",
19+
"flet-map >=0.70.0.dev0",
20+
"flet-permission-handler >=0.70.0.dev0",
21+
"flet-rive >=0.70.0.dev0",
22+
"flet-video >=0.70.0.dev0",
23+
"flet-webview >=0.70.0.dev0",
24+
]
25+
26+
[tool.uv]
27+
prerelease = "allow"
28+
29+
# Docs: https://docs.flet.dev/publish/
30+
[tool.flet]
31+
org = "com.flet"
32+
product = "flet-build-test"
33+
company = "Flet"
34+
copyright = "Copyright (C) 2025 by Flet"
35+
36+
[tool.flet.app]
37+
path = "src"

src/main.py

Lines changed: 28 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,28 @@
1+
import flet as ft
2+
import flet_ads # noqa: F401
3+
import flet_audio # noqa: F401
4+
import flet_audio_recorder # noqa: F401
5+
import flet_charts # noqa: F401
6+
import flet_datatable2 # noqa: F401
7+
import flet_flashlight # noqa: F401
8+
import flet_geolocator # noqa: F401
9+
import flet_lottie # noqa: F401
10+
import flet_map # noqa: F401
11+
import flet_permission_handler # noqa: F401
12+
import flet_rive # noqa: F401
13+
import flet_video # noqa: F401
14+
import flet_webview # noqa: F401
15+
16+
17+
def main(page: ft.Page):
18+
page.appbar = ft.AppBar(title=ft.Text("Flet Build Test"))
19+
page.horizontal_alignment = page.vertical_alignment = "center"
20+
21+
page.add(
22+
ft.SafeArea(
23+
content=ft.Text("Hello, world!", weight=ft.FontWeight.BOLD),
24+
)
25+
)
26+
27+
28+
ft.run(main)

0 commit comments

Comments
 (0)