CI has been red for 6 weeks because act_runner cannot reach github.com (30s timeout on actions/checkout clone). Replace actions/checkout and actions/cache with gitea.com official mirrors; replace dtolnay/rust-toolchain with inline rustup (act_runner image has rustup pre-installed).
If gitea.com is also unreachable, will need proxy or local mirrors as next step.
CI has been red for 6 weeks because act_runner cannot reach github.com (30s timeout on actions/checkout clone). Replace actions/checkout and actions/cache with gitea.com official mirrors; replace dtolnay/rust-toolchain with inline rustup (act_runner image has rustup pre-installed).
If gitea.com is also unreachable, will need proxy or local mirrors as next step.
The self-hosted act_runner cannot reach github.com (network timeout
on actions/checkout clone). Replace:
- actions/checkout@v4 -> https://gitea.com/actions/checkout@v4 (3 sites)
- actions/cache@v4 -> https://gitea.com/actions/cache@v4
- dtolnay/rust-toolchain@stable -> rustup toolchain install (inline run)
gitea.com maintains official mirrors of the actions/* org. dtolnay's
rust-toolchain is third-party (no gitea.com mirror), so replaced with
a direct rustup invocation — the act_runner ubuntu image has rustup
pre-installed.
This unblocks CI which has been red since the original PR #26 was
opened 6 weeks ago. No code changes.
The act_runner network also blocks crates.io index access (both sparse
and git protocols). Previous workaround used git protocol to github.com,
which is also blocked. Replace with rsproxy.cn sparse mirror, accessible
from China networks.
Added to both build-test and audit jobs. Config is written to
~/.cargo/config.toml at runtime (CI-only; does not affect local dev).
The actions/cache@v4 clone from gitea.com has been hanging for 12+
minutes in run 17. The actions/checkout clone took 2.5 min (slow but
completed), but actions/cache is stuck indefinitely.
Removing the cache step entirely. Trade-off: CI recompiles from scratch
each run (slower), but actually progresses past the action-clone phase.
Can re-add once gitea.com access is faster or actions are pre-cached
on the runner.
The catthehacker/ubuntu:act-latest image does not have rustup in PATH
('rustup: command not found', exit 127). Replace the direct rustup
invocation with the official install script from sh.rustup.rs, which
installs rustup + the stable toolchain in one step.
Also adds ~/.cargo/bin to GITHUB_PATH so subsequent steps (cargo clippy,
cargo build, cargo test, cargo audit) can find cargo/rustc.
rustup components (~60MB) from static.rust-lang.org are slow even
through proxy. Switch to rsproxy.cn/rustup mirror (domestic, direct
connection via NO_PROXY).
rsproxy.cn/rustup returns 404 for /dist/x86_64-unknown-linux-gnu/
rustup-init — different path structure from static.rust-lang.org.
Switch to mirrors.ustc.edu.cn/rust-static which is a full mirror with
identical path structure.
Network testing revealed:
- static.rust-lang.org: direct 200/0.24s (fast, no proxy needed)
- sh.rustup.rs: direct 200/0.11s (fast)
- gitea.com: direct 303/0.68s (fast)
- mirrors.ustc.edu.cn: UNREACHABLE (5s timeout)
- rsproxy.cn: UNREACHABLE (5s timeout)
The machine has good direct internet access to official Rust/crates servers.
Domestic mirrors are the ones that are blocked. Remove all mirror config and
use defaults.
act_runner does not support container.env in config.yaml — job containers
get NO proxy env vars. Set HTTP_PROXY/HTTPS_PROXY/NO_PROXY directly in
the workflow's job-level env block.
NO_PROXY includes gitea.com (actions checkout goes direct, faster) and
gitea.dailz.cn (self-hosted Gitea, internal).
apt-get ignores HTTP_PROXY/HTTPS_PROXY env vars and tries to connect
directly to archive.ubuntu.com. Clash DNS returns fake-ip (198.18.x.x)
which only works through TUN (disabled). Fix: write apt proxy config to
/etc/apt/apt.conf.d/99proxy before apt-get update.
packages.microsoft.com fails through proxy after 5 retries. --error-on=any
causes the whole update to fail. Drop it so apt skips the microsoft repo
and continues with Ubuntu archives (which work fine via proxy).
CI progressed to cargo build for the first time, revealing that
libavdevice.pc was missing. The original yaml never installed
libavdevice-dev — this was never caught because CI always failed
at actions/checkout before reaching compilation.
dailz
merged commit 4cf95ac521 into master2026-07-14 21:51:50 +08:00
Blocking a user prevents them from interacting with repositories, such as opening or commenting on pull requests or issues. Learn more about blocking a user.
CI has been red for 6 weeks because act_runner cannot reach github.com (30s timeout on actions/checkout clone). Replace actions/checkout and actions/cache with gitea.com official mirrors; replace dtolnay/rust-toolchain with inline rustup (act_runner image has rustup pre-installed).
If gitea.com is also unreachable, will need proxy or local mirrors as next step.
The catthehacker/ubuntu:act-latest image does not have rustup in PATH ('rustup: command not found', exit 127). Replace the direct rustup invocation with the official install script from sh.rustup.rs, which installs rustup + the stable toolchain in one step. Also adds ~/.cargo/bin to GITHUB_PATH so subsequent steps (cargo clippy, cargo build, cargo test, cargo audit) can find cargo/rustc.