Skip to content

Commit ffb8d70

Browse files
committed
updat actions
1 parent 6a1ae9b commit ffb8d70

File tree

3 files changed

+148
-89
lines changed

3 files changed

+148
-89
lines changed
Lines changed: 148 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,148 @@
1+
# 定义工作流名称
2+
name: build many lvgl_micropython
3+
4+
# 触发条件:仅手动触发
5+
on:
6+
workflow_dispatch: # 仅手动触发
7+
8+
jobs:
9+
build_esp32:
10+
runs-on: ubuntu-latest
11+
strategy:
12+
fail-fast: false
13+
matrix:
14+
include:
15+
- board: ESP32_GENERIC_S3
16+
variant: SPIRAM_OCT
17+
flash_size: 16
18+
display: ili9341
19+
indev: gt911
20+
- board: ESP32_GENERIC_C3
21+
variant: ""
22+
flash_size: 8
23+
display: st7789
24+
indev: ft6x36
25+
- board: ESP32_GENERIC
26+
variant: SPIRAM
27+
flash_size: 4
28+
display: st7735
29+
indev: ""
30+
- board: ESP32_GENERIC
31+
variant: SPIRAM
32+
flash_size: 4
33+
display: ili9341
34+
indev: xpt2046
35+
36+
steps:
37+
# 1. 检出源码
38+
- name: 1.检出 lvgl_micropython 主仓库(含全部子模块)
39+
uses: actions/checkout@v4
40+
with:
41+
submodules: recursive # 递归拉取所有子模块
42+
fetch-depth: 0 # 拉取完整历史,便于后续版本识别
43+
44+
# 2. 安装系统依赖
45+
- name: 2.安装 Ubuntu 系统级编译依赖
46+
run: |
47+
sudo apt-get update # 更新软件包索引
48+
sudo apt-get install -y build-essential pkg-config \ # 编译工具链
49+
cmake ninja-build ccache # 构建&缓存工具
50+
51+
# 3. 设置 Python
52+
- name: 3.配置 Python 3.11 运行环境
53+
uses: actions/setup-python@v5
54+
with:
55+
python-version: '3.11' # ESP-IDF 与 MicroPython 均推荐 3.11
56+
57+
# 4. 初始化子模块(项目依赖)
58+
- name: 4.按需浅克隆关键子模块(加速下载)
59+
run: |
60+
# 仅拉取编译必需的子模块,深度=1 减少体积
61+
git submodule update --init --depth 1 -- lib/pycparser
62+
git submodule update --init --depth 1 --jobs 4 -- lib/micropython
63+
git submodule update --init --depth 1 --jobs 4 -- lib/lvgl
64+
65+
# 5. 缓存 ESP-IDF
66+
- name: 5.加载或创建 ESP-IDF 缓存
67+
id: cache-deps
68+
uses: actions/cache@v4
69+
with:
70+
path: |
71+
lib/esp-idf # ESP-IDF 主目录
72+
~/.espressif # 工具链、Python 虚拟环境
73+
key: ${{ runner.os }}-v4-deps # 缓存键,可随版本调整
74+
75+
# 6. 若缓存未命中,拉取 ESP-IDF
76+
- name: 6.缓存未命中时完整拉取 ESP-IDF 及其子模块
77+
if: steps.cache-deps.outputs.cache-hit != 'true'
78+
run: |
79+
# 拉取 ESP-IDF 主仓库
80+
git submodule update --init --depth 1 --jobs 4 -- lib/esp-idf
81+
cd lib/esp-idf
82+
# 按需浅克隆 ESP-IDF 自身需要的子模块
83+
git submodule update --init --depth 1 --jobs 4 -- \
84+
components/bt/host/nimble/nimble \
85+
components/esp_wifi \
86+
components/esptool_py/esptool \
87+
components/lwip/lwip \
88+
components/mbedtls/mbedtls \
89+
components/bt/controller/lib_esp32 \
90+
components/bt/controller/lib_esp32c3_family
91+
cd ../..
92+
# 安装 ESP-IDF 全部工具链(all 代表支持所有芯片)
93+
export "IDF_PATH=$GITHUB_WORKSPACE/lib/esp-idf"
94+
./lib/esp-idf/install.sh all
95+
96+
# 7. 设置 ESP-IDF 环境
97+
- name: 7.激活 ESP-IDF 环境变量(每个 step 都需重新执行)
98+
run: |
99+
export "IDF_PATH=$GITHUB_WORKSPACE/lib/esp-idf"
100+
. ./lib/esp-idf/export.sh # source export.sh,使 idf.py 可用
101+
env:
102+
IDF_PATH: ${{ github.workspace }}/lib/esp-idf
103+
104+
# 8. 构建固件
105+
- name: 8.使用 make.py 编译指定板型/Flash/显示/触摸配置
106+
run: |
107+
# 组装 make.py 参数数组
108+
opts=()
109+
[[ -n "${{ matrix.variant }}" ]] && opts+=("BOARD_VARIANT=${{ matrix.variant }}")
110+
opts+=("BOARD=${{ matrix.board }}")
111+
opts+=("--flash-size=${{ matrix.flash_size }}")
112+
opts+=("DISPLAY=${{ matrix.display }}")
113+
[[ -n "${{ matrix.indev }}" ]] && opts+=("INDEV=${{ matrix.indev }}")
114+
# 调用 make.py 进行编译
115+
python3 make.py esp32 "${opts[@]}"
116+
117+
# 9. 收集固件到统一目录
118+
- name: 9.重命名并收集所有固件到 ~/artifacts
119+
run: |
120+
# 定义最终存放固件的目录,固定放到 $HOME/artifacts
121+
ARTIFACTS_DIR="$HOME/artifacts"
122+
mkdir -p "$ARTIFACTS_DIR" # 如果目录不存在则自动创建
123+
# 拼出 ESP-IDF 实际编译输出目录的前缀
124+
BUILD_DIR="${{ github.workspace }}/lib/micropython/ports/esp32"
125+
# 拼出构建目录名:board 与可选 variant 用 “-” 连接
126+
BOARD_NAME="${{ matrix.board }}"
127+
[[ -n "${{ matrix.variant }}" ]] && BOARD_NAME+="-${{ matrix.variant }}"
128+
# 计算固件真正所在路径
129+
FW_PATH="${BUILD_DIR}/build-${BOARD_NAME}/firmware.bin"
130+
131+
# 组合最终文件名:板型_可选variant_FlashMB_显示_触摸.bin
132+
OUT_NAME="lvgl_mpy_${{ matrix.board }}${{ matrix.variant && format('_{0}', matrix.variant) || '' }}_${{ matrix.flash_size }}MB${{ matrix.display && format('_{0}', matrix.display) || '' }}${{ matrix.indev && format('_{0}', matrix.indev) || '' }}.bin"
133+
134+
# 如果固件存在则复制并重命名;不存在则报错退出
135+
if [[ -f "$FW_PATH" ]]; then
136+
cp "$FW_PATH" "$ARTIFACTS_DIR/$OUT_NAME"
137+
else
138+
echo "Firmware not found at $FW_PATH"
139+
exit 1
140+
fi
141+
142+
# 10. 上传构建产物
143+
- name: 10.上传重命名后的固件到 GitHub Actions 产物区
144+
uses: actions/upload-artifact@v4
145+
with:
146+
# 产物名与文件名保持一致,便于识别
147+
name: lvgl_mpy_${{ matrix.board }}${{ matrix.variant && format('_{0}', matrix.variant) || '' }}_${{ matrix.flash_size }}MB${{ matrix.display && format('_{0}', matrix.display) || '' }}${{ matrix.indev && format('_{0}', matrix.indev) || '' }}
148+
path: ~/artifacts/*.bin
File renamed without changes.

.github/workflows/build lvgl_mpy1.yml

Lines changed: 0 additions & 89 deletions
This file was deleted.

0 commit comments

Comments
 (0)