Skip to content

Commit af958b1

Browse files
committed
0711
1 parent 92a34f4 commit af958b1

File tree

2 files changed

+153
-1
lines changed

2 files changed

+153
-1
lines changed

.github/workflows/build lvgl_mpy1.yml

Lines changed: 32 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,30 +1,43 @@
1+
# 定义工作流名称
12
name: build lvgl_micropython
23

4+
# 触发条件:仅手动触发
35
on:
46
workflow_dispatch: # 仅手动触发
57

68
jobs:
79
build_esp32:
10+
# 条件判断:确保不是通过 pull request 触发的构建,或者当前仓库不是 pull request 的源仓库
811
if: ${{ github.event_name != 'pull_request' || github.repository != github.event.pull_request.head.repo.full_name }}
12+
# 指定运行环境为最新版的 Ubuntu
913
runs-on: ubuntu-latest
1014
steps:
15+
# 第一步:检出代码
1116
- uses: actions/checkout@v4
17+
# 使用 GitHub 官方的 checkout 动作,版本为 v4,用于将代码仓库克隆到工作区
1218

19+
# 第二步:安装系统依赖
1320
- name: Install system dependencies
1421
run: |
1522
sudo apt-get update
1623
sudo apt-get install -y build-essential pkg-config cmake ninja-build ccache
24+
# 使用 apt-get 安装编译所需的系统级依赖工具,包括编译工具链、包配置工具、CMake 构建工具等
1725

26+
# 第三步:设置 Python 环境
1827
- uses: actions/setup-python@v5
1928
with:
2029
python-version: '3.11'
30+
# 使用 GitHub 官方的 setup-python 动作,版本为 v5,设置 Python 环境为 3.11
2131

32+
# 第四步:安装项目依赖
2233
- name: Install Deps
2334
run: |
2435
git submodule update --init --depth 1 -- lib/pycparser
2536
git submodule update --init --depth 1 --jobs 4 -- lib/micropython
2637
git submodule update --init --depth 1 --jobs 4 -- lib/lvgl
38+
# 初始化并更新 Git 子模块,深度为 1,用于获取项目依赖的子模块(如 pycparser、micropython 和 lvgl)
2739

40+
# 第五步:缓存依赖
2841
- name: Cached Deps
2942
id: cache-deps
3043
uses: actions/cache@v4
@@ -33,7 +46,9 @@ jobs:
3346
lib/esp-idf
3447
~/.espressif
3548
key: ${{ runner.os }}-v4-deps
49+
# 使用 GitHub 官方的 cache 动作,版本为 v4,缓存 ESP-IDF 和 espressif 相关目录,以加速后续构建
3650

51+
# 第六步:获取构建依赖(如果缓存未命中)
3752
- name: Get Build Deps
3853
if: steps.cache-deps.outputs.cache-hit != 'true'
3954
run: |
@@ -43,19 +58,35 @@ jobs:
4358
cd ../..
4459
export "IDF_PATH=${GITHUB_WORKSPACE}/lib/esp-idf"
4560
./lib/esp-idf/install.sh all
61+
# 如果缓存未命中,则重新初始化 ESP-IDF 子模块,并安装 ESP-IDF 的所有依赖
4662

63+
# 第七步:设置 ESP-IDF 环境
4764
- name: Setup ESP-IDF
4865
run: |
4966
export "IDF_PATH=${GITHUB_WORKSPACE}/lib/esp-idf"
5067
. ./lib/esp-idf/export.sh
5168
env:
5269
IDF_PATH: ${{ github.workspace }}/lib/esp-idf
70+
# 设置 ESP-IDF 的环境变量,并加载其导出脚本,以便在后续步骤中使用 ESP-IDF
5371

72+
# 第八步:构建 ESP32 项目
5473
- name: Build ESP32_GENERIC_S3 SPIRAM_OCT 16
5574
run: python3 make.py esp32 BOARD=ESP32_GENERIC_S3 BOARD_VARIANT=SPIRAM_OCT --flash-size=16 DISPLAY=st7789 INDEV=xpt2046
75+
# 使用 Python 脚本 make.py 构建 ESP32 项目,指定目标板为 ESP32_GENERIC_S3,变体为 SPIRAM_OCT,闪存大小为 16MB,显示设备为 st7789,输入设备为 xpt2046
5676

77+
# 第九步:检查构建结果
78+
- name: Check build result
79+
run: |
80+
if [ ! -f "${{ github.workspace }}/build/**/*.bin" ]; then
81+
echo "No .bin files found in build directory. Compilation failed."
82+
exit 1
83+
fi
84+
# 检查构建目录中是否存在 .bin 文件,如果没有找到,则输出错误信息并终止工作流
85+
86+
# 第十步:上传构建产物
5787
- uses: actions/upload-artifact@v4
5888
with:
5989
name: lvgl_micropy_ESP32
6090
path: ${{ github.workspace }}/build/**/*.bin
61-
if-no-files-found: ignore
91+
if-no-files-found: ignore
92+
# 使用 GitHub 官方的 upload-artifact 动作,版本为 v4,将构建生成的 .bin 文件上传为工作流的产物,名称为 lvgl_micropy_ESP32
Lines changed: 121 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,121 @@
1+
# 定义工作流名称
2+
name: build lvgl_micropython
3+
4+
# 触发条件:仅手动触发
5+
on:
6+
workflow_dispatch: # 仅手动触发
7+
8+
jobs:
9+
build_esp32:
10+
# 指定运行环境为最新版的 Ubuntu
11+
runs-on: ubuntu-latest
12+
steps:
13+
# 第一步:检出代码
14+
- uses: actions/checkout@v4
15+
# 使用 GitHub 官方的 checkout 动作,版本为 v4,用于将代码仓库克隆到工作区
16+
17+
# 第二步:安装系统依赖
18+
- name: Install system dependencies
19+
run: |
20+
sudo apt-get update
21+
sudo apt-get install -y build-essential pkg-config cmake ninja-build ccache
22+
# 使用 apt-get 安装编译所需的系统级依赖工具,包括编译工具链、包配置工具、CMake 构建工具等
23+
24+
# 第三步:设置 Python 环境
25+
- uses: actions/setup-python@v5
26+
with:
27+
python-version: '3.11'
28+
# 使用 GitHub 官方的 setup-python 动作,版本为 v5,设置 Python 环境为 3.11
29+
30+
# 第四步:安装项目依赖
31+
- name: Install Deps
32+
run: |
33+
git submodule update --init --depth 1 -- lib/pycparser
34+
git submodule update --init --depth 1 --jobs 4 -- lib/micropython
35+
git submodule update --init --depth 1 --jobs 4 -- lib/lvgl
36+
# 初始化并更新 Git 子模块,深度为 1,用于获取项目依赖的子模块(如 pycparser、micropython 和 lvgl)
37+
38+
# 第五步:缓存依赖
39+
- name: Cached Deps
40+
id: cache-deps
41+
uses: actions/cache@v4
42+
with:
43+
path: |
44+
lib/esp-idf
45+
~/.espressif
46+
key: ${{ runner.os }}-v4-deps
47+
# 使用 GitHub 官方的 cache 动作,版本为 v4,缓存 ESP-IDF 和 espressif 相关目录,以加速后续构建
48+
49+
# 第六步:获取构建依赖(如果缓存未命中)
50+
- name: Get Build Deps
51+
if: steps.cache-deps.outputs.cache-hit != 'true'
52+
run: |
53+
git submodule update --init --depth 1 --jobs 4 -- lib/esp-idf
54+
cd lib/esp-idf
55+
git submodule update --init --depth 1 --jobs 4 -- components/bt/host/nimble/nimble components/esp_wifi components/esptool_py/esptool components/lwip/lwip components/mbedtls/mbedtls components/bt/controller/lib_esp32 components/bt/controller/lib_esp32c3_family
56+
cd ../..
57+
export "IDF_PATH=${GITHUB_WORKSPACE}/lib/esp-idf"
58+
./lib/esp-idf/install.sh all
59+
# 如果缓存未命中,则重新初始化 ESP-IDF 子模块,并安装 ESP-IDF 的所有依赖
60+
61+
# 第七步:设置 ESP-IDF 环境
62+
- name: Setup ESP-IDF
63+
run: |
64+
export "IDF_PATH=${GITHUB_WORKSPACE}/lib/esp-idf"
65+
. ./lib/esp-idf/export.sh
66+
env:
67+
IDF_PATH: ${{ github.workspace }}/lib/esp-idf
68+
# 设置 ESP-IDF 的环境变量,并加载其导出脚本,以便在后续步骤中使用 ESP-IDF
69+
70+
# 第八步:构建 ESP32 项目(矩阵策略)
71+
- name: Build ESP32
72+
run: |
73+
python3 make.py esp32 BOARD=${{ matrix.board }} BOARD_VARIANT=${{ matrix.variant }} --flash-size=${{ matrix.flash_size }} DISPLAY=${{ matrix.display }} INDEV=${{ matrix.indev }}
74+
# 使用 Python 脚本 make.py 构建 ESP32 项目,参数通过矩阵策略动态传入
75+
strategy:
76+
fail-fast: false # 如果一个矩阵任务失败,不会立即停止其他任务
77+
matrix:
78+
include:
79+
- board: ESP32_GENERIC_S3
80+
variant: SPIRAM_OCT
81+
flash_size: 16
82+
display: ili9341
83+
indev: gt911
84+
- board: ESP32_GENERIC_C3
85+
variant: ""
86+
flash_size: 8
87+
display: st7789
88+
indev: ft6x36
89+
- board: ESP32_GENERIC
90+
variant: SPIRAM
91+
flash_size: 4
92+
display: st7735
93+
indev: ""
94+
- board: ESP32_GENERIC
95+
variant: SPIRAM
96+
flash_size: 4
97+
display: ili9341
98+
indev: xpt2046
99+
100+
# 第九步:检查构建结果
101+
- name: Check build result
102+
id: check_build_result
103+
run: |
104+
if [ -f "${{ github.workspace }}/build/**/*.bin" ]; then
105+
echo "Build successful. .bin files found."
106+
echo "build_success=true" >> $GITHUB_ENV
107+
else
108+
echo "No .bin files found in build directory. Compilation failed. Skipping subsequent steps."
109+
echo "build_success=false" >> $GITHUB_ENV
110+
fi
111+
# 检查构建目录中是否存在 .bin 文件,如果没有找到,则设置环境变量 build_success 为 false
112+
113+
# 第十步:上传构建产物
114+
- name: Upload build artifact
115+
uses: actions/upload-artifact@v4
116+
if: ${{ env.build_success == 'true' }}
117+
with:
118+
name: lvgl_micropy_ESP32
119+
path: ${{ github.workspace }}/build/**/*.bin
120+
if-no-files-found: ignore
121+
# 仅当 build_success 为 true 时,上传构建生成的 .bin 文件

0 commit comments

Comments
 (0)