Skip to content

Commit a36a2d5

Browse files
widgetiiDmitry Ilyin
andauthored
ci: always rebuild on schedule (drop builder-HEAD-only dedupe) (#98)
The preflight gate skipped scheduled runs whenever this repo's HEAD matched the SHA recorded in the previous nightly release body. That key ignores every upstream input the build actually depends on: OpenIPC/firmware HEAD, the toolchain release, the kernel tarball, the vendor osdrv packages, and individual buildroot package upstreams. builder.sh re-clones OpenIPC/firmware fresh on every run, so those inputs do move between nightlies even when this repo is quiet. The concrete failure mode this caused: on 2026-05-26 OpenIPC/firmware bumped its hisilicon-opensdk pin to b958db4, which contains the V4 mipi_rx vsync IRQ fix (openhisilicon PR #195, closes #194 — torn frames / 'Timeout from venc channel 0' on hi3516ev200, gk7205v200, gk7205v210, gk7205v300, hi3516ev300 hardware). The next builder nightly (2026-05-27 07:00 UTC) ran with this repo unchanged since 2026-05-25, so preflight skipped the entire Firmware matrix. Field cameras (verified: gk7205v210_lite_vixand-ivg-g4h at IP redacted, running BUILD_ID nightly-20260526-ee40da8, srcversion 8EF923DF907C1F7F3C6898E — the pre-fix open_mipi_rx fingerprint from PR #195's verification table) kept pulling the stale 'latest' release asset and kept showing the regression after sysupgrade. A cross-input dedupe key would be possible (firmware HEAD + toolchain URL hash + ...) but enumerates every upstream this build pulls. Simpler and correct: scheduled nightlies always build. workflow_dispatch is unaffected — that path was already unconditional. Co-authored-by: Dmitry Ilyin <zekccsripfwrocp-15689@yn.furvionx.com>
1 parent ee40da8 commit a36a2d5

1 file changed

Lines changed: 10 additions & 9 deletions

File tree

.github/workflows/master.yml

Lines changed: 10 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -28,15 +28,16 @@ jobs:
2828
SHORT=$(git rev-parse --short HEAD)
2929
BUILD_ID="nightly-$(date -u +%Y%m%d)-${SHORT}"
3030
BUILT_AT=$(date -u +%Y-%m-%dT%H:%M:%SZ)
31-
PREV=$(gh release view nightly --json body -q .body 2>/dev/null \
32-
| sed -n 's/^sha=//p' | head -1 || true)
33-
if [ "${{ github.event_name }}" = "schedule" ] && [ "$PREV" = "$HEAD" ]; then
34-
echo "Skip: HEAD ($HEAD) already published as the latest nightly."
35-
echo "should_build=false" >> "$GITHUB_OUTPUT"
36-
else
37-
echo "Build: $BUILD_ID (event=${{ github.event_name }}, prev=$PREV)"
38-
echo "should_build=true" >> "$GITHUB_OUTPUT"
39-
fi
31+
# Nightly rebuilds unconditionally on schedule. builder.sh re-clones
32+
# OpenIPC/firmware at HEAD on every run, so the relevant inputs are
33+
# mostly outside this repo (firmware HEAD, toolchain release, kernel
34+
# tarball, vendor osdrv, individual package upstreams). The previous
35+
# gate skipped when only this repo's HEAD matched the last published
36+
# nightly, which made upstream fixes (e.g. an openhisilicon mipi_rx
37+
# regression fix that lands in firmware) invisible to users until
38+
# something here happened to change. Always build on schedule.
39+
echo "Build: $BUILD_ID (event=${{ github.event_name }})"
40+
echo "should_build=true" >> "$GITHUB_OUTPUT"
4041
echo "head_sha=$HEAD" >> "$GITHUB_OUTPUT"
4142
echo "short_sha=$SHORT" >> "$GITHUB_OUTPUT"
4243
echo "build_id=$BUILD_ID" >> "$GITHUB_OUTPUT"

0 commit comments

Comments
 (0)