Skip to content

Commit 732a8c7

Browse files
authored
ci(validate): tools/ 改动不再强制全量 workspace 构建 (#112)
tools/ 下是离线的描述符生成与发布辅助(tools/compat-*/、tools/gtc/、 publish_mcpp_index.sh),不参与任何包的构建。它们真正影响到某个包时, 生成出的 pkgs/*.lua 会一并变化,而 pkgs 规则已经能精确选中相关成员, 因此 tools/ 单独改动按 docs 处理、不选任何成员。 同时更新 workspace job 的 timeout 说明:compat.opencv 退役后,冷构建的 三个 OpenCV 变体来自 opencv-module{,-dnn,-unifont} 三个成员。
1 parent e83ed49 commit 732a8c7

1 file changed

Lines changed: 20 additions & 15 deletions

File tree

.github/workflows/validate.yml

Lines changed: 20 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -159,17 +159,14 @@ jobs:
159159
# The ~/.mcpp/registry cache carries the built compat packages (xpkgs) across
160160
# runs, so repeat builds are fast.
161161
#
162-
# timeout-minutes is sized for the COLD build, not the cached path. compat.opencv
163-
# is now a from-source OpenCV 5 build, and each feature variant re-keys the
164-
# store into a full recompile, so a full run (forced whenever this workflow file
165-
# changes — e.g. a version bump) serially builds several OpenCV variants on one
166-
# runner: compat.opencv base + `unifont` + `dnn` feature members, plus the
167-
# transition-window compat.opencv5 pulled by the opencv-module member (opencv-m
168-
# still deps compat.opencv5 until its v0.0.3). That transition double-build goes
169-
# away once opencv-m switches to compat.opencv and compat.opencv5 is retired;
170-
# steady state is base+unifont+dnn, and the registry cache (restore-keys prefix
171-
# below) amortizes even those across subsequent runs. 150 covers the one-time
172-
# cold full build with headroom; it is a ceiling, not a target.
162+
# timeout-minutes is sized for the COLD build, not the cached path. The opencv
163+
# module package carries a from-source OpenCV 5 build, and each feature variant
164+
# re-keys the store into a full recompile, so a full run (forced whenever this
165+
# workflow file changes — e.g. a version bump) serially builds three OpenCV
166+
# variants on one runner: the opencv-module base member plus the `unifont` and
167+
# `dnn` feature members. The registry cache (restore-keys prefix below)
168+
# amortizes those across subsequent runs. 150 covers the one-time cold full
169+
# build with headroom; it is a ceiling, not a target.
173170
workspace:
174171
name: workspace (${{ matrix.platform }})
175172
runs-on: ${{ matrix.os }}
@@ -259,8 +256,9 @@ jobs:
259256
# Run the FULL workspace when the change can affect everything:
260257
# non-PR events (push to main, the nightly cron, dispatch), this
261258
# workflow file (it carries the mcpp version pins, so a version bump
262-
# always re-validates every package), the workspace manifest, or
263-
# shared test scripts. Docs-only changes select nothing.
259+
# always re-validates every package), a non-member edit to the
260+
# workspace manifest, or shared test scripts. Docs-only and tools/-only
261+
# changes select nothing.
264262
# Note: bash 3.2 on macOS runners — no associative arrays here.
265263
- name: Select affected workspace members
266264
shell: bash
@@ -275,7 +273,7 @@ jobs:
275273
while IFS= read -r f; do
276274
[ -n "$f" ] || continue
277275
case "$f" in
278-
.github/workflows/validate.yml|tests/*.sh|tools/*) full "$f" ;;
276+
.github/workflows/validate.yml|tests/*.sh) full "$f" ;;
279277
mcpp.toml)
280278
# Workspace manifest. Every new-package PR appends to the
281279
# members list, so that alone must NOT force a full run:
@@ -301,7 +299,14 @@ jobs:
301299
if grep -q "$lib" "$mt"; then add "$(basename "$(dirname "$mt")")"; hit=1; fi
302300
done
303301
[ "$hit" = 1 ] || echo "note: no workspace member exercises $f" ;;
304-
*.md|docs/*|.agents/*|.github/*) : ;;
302+
# tools/ holds OFFLINE descriptor-generation and publishing
303+
# helpers (tools/compat-*/, tools/gtc/, publish_mcpp_index.sh).
304+
# Nothing under it is consumed by a package build: when one of
305+
# them actually changes a package, the generated pkgs/*.lua
306+
# changes with it and the rule above selects the right members.
307+
# So a tools/ edit alone selects nothing rather than forcing a
308+
# full workspace rebuild.
309+
*.md|docs/*|.agents/*|.github/*|tools/*) : ;;
305310
*) full "unclassified change: $f" ;;
306311
esac
307312
done <<EOF

0 commit comments

Comments
 (0)