Skip to content

ci: source pinned ffmpeg from immutable GitHub release (durable fix)#137

Merged
massive-value merged 1 commit into
mainfrom
ci/ffmpeg-immutable-github-source
Jul 5, 2026
Merged

ci: source pinned ffmpeg from immutable GitHub release (durable fix)#137
massive-value merged 1 commit into
mainfrom
ci/ffmpeg-immutable-github-source

Conversation

@massive-value

Copy link
Copy Markdown
Owner

Why

The Download ffmpeg (pinned) step in ci.yml (bundle-smoke) and release.yml pulled from gyan.dev/ffmpeg/builds/packages/, which only hosts the single latest version-pinned build. When gyan.dev bumps its latest, the previous version-pinned URL starts returning a 404 HTML page (which fails Invoke-WebRequest), silently breaking bundle-smoke and the release build. This is exactly what happened when 8.1.1 → 8.1.2 rotated (2026-07), and it would recur on every future gyan.dev bump.

What

Repoint both workflows to GyanD/codexffmpeg GitHub releases — the same author's identical "essentials" builds, but published as immutable, permanently-retained GitHub release assets.

  • Byte-identical binary: the pinned zip has the same SHA-256 (db580001…) gyan.dev publishes, so nothing about the shipped ffmpeg changes — only the download host. Kept the existing SHA-256 pin.
  • No more spontaneous rot: GitHub release assets are immutable and every version tag is retained, so the URL never disappears on its own. The pin changes only when we deliberately bump it.

Infra-only change (two workflow files). No source or shipped-bundle change, no version bump, no release needed.

Validation

Ran the exact step logic on real Windows PowerShell: Invoke-WebRequest (302 → GitHub asset CDN) downloads, SHA-256 matches, Expand-Archive yields bin/ffmpeg.exe, and ffmpeg -version reports 8.1.2-essentials_build-www.gyan.dev. The bundle-smoke check on this PR exercises the new path end-to-end.

🤖 Generated with Claude Code

The "Download ffmpeg (pinned)" step in ci.yml (bundle-smoke) and release.yml
pulled from gyan.dev/ffmpeg/builds/packages/, which only hosts the single
latest version-pinned build. When gyan.dev bumped its latest, the old
version-pinned URL 404'd — silently returning an HTML error page that failed
Invoke-WebRequest — breaking bundle-smoke and the release build (this happened
with 8.1.1 -> 8.1.2 in 2026-07).

Switch the source to GyanD/codexffmpeg GitHub releases, which publishes the
identical "essentials" builds gyan.dev serves but keeps every version tag as
immutable release assets. The pinned zip is byte-identical (verified: same
SHA-256 db580001... that gyan.dev publishes), so nothing about the shipped
ffmpeg binary changes — only the download host. The URL now never disappears
on its own; the pin changes only when we deliberately bump it.

Validated on real Windows PowerShell: Invoke-WebRequest (302 -> GitHub asset
CDN) downloads, SHA-256 matches, Expand-Archive yields bin/ffmpeg.exe, and
`ffmpeg -version` reports 8.1.2-essentials_build-www.gyan.dev.

Infra-only (workflow files); no code or shipped-bundle change, no version bump.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
@massive-value massive-value merged commit 8afdcd0 into main Jul 5, 2026
14 checks passed
@massive-value massive-value deleted the ci/ffmpeg-immutable-github-source branch July 5, 2026 04:53
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant