Repository navigation
Conversation
The oven-sh organization only allows actions that are pinned to a full-length commit SHA. The workflows use tag refs, so every job on this repository fails at "Set up job" in about 2 seconds: The actions actions/checkout@v4, dtolnay/rust-toolchain@stable, and actions/cache@v4 are not allowed in oven-sh/lol-html because all actions must be pinned to a full-length commit SHA. Pin each `uses:` in bun.yml, ci.yml and semgrep.yml to the commit that its tag points to today. The versions do not change. dtolnay/rust-toolchain is the exception. Its README requires a pinned commit to be in the history of `master`, because other commits get garbage-collected. The `stable` rev is one commit off `master` that only makes `stable` the default of the `toolchain` input. So pin the `v1` tag, which is on `master`, and pass `toolchain: stable`. Compared with the `stable` rev, `v1` also passes `--force-non-host` to rustup. That flag has no effect on a host toolchain. Co-authored-by: SUZUKI Sosuke <sosuke@bun.com>
Upstream 776b44a (v3.0.0) renamed the Cargo feature `integration_test` to `_integration_test`. bun.yml still passes the old name, so the test step stops before it compiles anything: error: the package 'lol_html' does not contain this feature: integration_test help: there is a similarly named feature: _integration_test Pass the new name. scripts/test.sh and ci.yml already use it.
Collaborator
Author
|
Status
|
This was referenced Sep 22, 2026
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Problem
bunhas no CI signal. Example: run 35174531529. The annotation:The actions actions/checkout@v4, dtolnay/rust-toolchain@stable, and actions/cache@v4 are not allowed in oven-sh/lol-html because all actions must be pinned to a full-length commit SHA.bun.ymlrunscargo test --features=integration_test. Upstream 776b44a (v3.0.0) renamed the feature to_integration_test. On the v3.0.1 base, cargo stops witherror: the package 'lol_html' does not contain this feature: integration_test.Fix
uses:inbun.yml,ci.ymlandsemgrep.ymlto the commit that its tag points to today, with the version in a comment. This is the commit of ci: pin workflow actions to full commit SHAs #7 on the new base, so this PR replaces ci: pin workflow actions to full commit SHAs #7.dtolnay/rust-toolchainto itsv1tag and passtoolchain: stable. Its README requires a pinned commit to be onmaster. The commit behind@stableis not.--features=_integration_testinbun.yml, asscripts/test.shandci.ymlalready do.cargo test(thebunworkflow) passes: 207 + 3 + 38 + 2 tests on stable 1.98.1.semgrep-osspasses.TestandClippy and formatfail on defects already onbun(Notes).Background
lol_htmlcrate from a commit on thebunbranch of this fork. A workflow-only commit needs no pin bump there.bun.ymlis the workflow of the fork.ci.ymlandsemgrep.ymlcome from upstream and also run on every pull request here.Notes
Pins
actions/checkout(bun.yml,ci.yml)11d5960a326750d5838078e36cf38b85af677262v4points to)actions/cache(bun.yml,ci.yml)0057852bfaa89a56745cba8c7296529d2fc39830v4points to)actions/setup-node49933ea5288caeca8642d1e84afbd3f7d6820020v4points to)obi1kenobi/cargo-semver-checks-action6b69fcf40e9b5fb17adeb57e4b6ecd020649a239v2points to)dtolnay/rust-toolchain02cb101ec7c40f2c49e1d9714d64511d8e1b74detoolchain: stableactions/checkout(semgrep.yml)fbc6f3992d24b796d5a048ff273f7fcc4a7b6c09v5points to)actions/cache(semgrep.yml)caa296126883cff596d87d8935842f9db880ef25v5points to)Check of each
uses: owner/repo@sha # tagline againstrepos/<repo>/git/ref/tags/<tag>(2026-09-22):No
uses:line without a full SHA remains in.github/workflows/. No pinned action pulls in a second action: six are JavaScript actions, anddtolnay/rust-toolchainis a composite action withrun:steps only.Differences from #7
#7 was opened on the v2.7.2 lineage of
bun. After the rebase onto v3.0.1 it shows 30 changed files and does not merge. The first commit here is the commit of #7 (2151cac) cherry-picked onto e1a306d, with the credit to @sosukesuzuki kept. Two things differ:semgrep.yml: upstream rewrote the file. It now usesactions/checkout@v5andactions/cache@v5. The commit keeps the upstream file and pins those two lines.dtolnay/rust-toolchain: thev1tag moved from6c977a6cto02cb101e(2026-09-12) after ci: pin workflow actions to full commit SHAs #7 was opened. The new commit ismasterHEAD. Compared with the commit behind@stable, it passes--force-non-hosttorustup toolchain installandrustup default. That flag only allows a toolchain for another host, so it changes nothing forstableon the runner. The toolchain step passes in all three Rust jobs of this PR.dtolnay/rust-toolchain
@stableis6bed0761d98439e5a578e2877258200ad565ba87today. It is one commit on top ofmastercommitd1031067. That commit only changesaction.yml:toolchaingetsrequired: falseanddefault: stable.compare/master...stablereportsdiverged.The feature name
cargo test --features=integration_test --no-runon e1a306d:cargo test --features=_integration_test --target-dir=targeton this branch: 207 + 3 + 38 + 2 tests pass, locally and in run 35728372731.What the upstream jobs report after the pin
ci.ymlsetsRUSTFLAGS=-Dwarnings. In run 35728372762,Testfails inRun Rust testsandClippy and formatfails inRun clippy, on the same errors. They come from 230e863 (content-handler suspension), which is onbuntoday. This PR does not change them:error: unused import: Cellatsrc/rewriter/mod.rs:2089:25.error: hidden lifetime parameters in types are deprecatedatsrc/rewriter/settings.rs:531:49, from thetext!macro.c-apidoes not compile:error[E0277]: *mut libc::c_void cannot be sent between threads safelyin 4 places.cargo clippy --all-targets --manifest-path=c-api/Cargo.tomlshows it locally.#8 fixes these defects, but on the old lineage. I checked its commits on top of this branch, locally, with stable 1.98.1 and the environment of
ci.yml:src/selectors_vm/mod.rsis dropped. The new base has that code from upstream, already formatted. 9a16a33 applies cleanly.cargo fmt -- --check, the fourcargo clippysteps,cargo docandscripts/test.shpass (207 + 3 + 38 + 2 library tests, 8 C API tests). I did not run the wasm-pack JS tests.Check semveron the fork) is not needed on the new base.RewritingErroris#[non_exhaustive]since v3.0.0, so theSuspendedvariant is not a breaking change.cargo semver-checks check-release --package lol_html --default-features(0.50.0) reports223 pass, 31 skipandno semver update required.semgrep-osson the forkUpstream replaced
semgrep ciwithsemgrep scan --config=auto, which needs no token. In run 35728372722 it ran 259 rules on 502 files and printed 523 findings. The step exits 0 with findings, so the job is green.Scope
This PR changes
.github/workflows/only. It coversbun. Themainbranch of the fork mirrors upstream and keeps the tag refs, so a run onmainstill fails at "Set up job".Rebase cost
At the next
git rebase --onto <new-tag>, the pin commit conflicts where upstream changed auses:line or the lines next to it. Take the upstream file and pin itsuses:lines. The header ofbun.ymlstates the rule.