Release Process
This guide defines the MVP release flow for pre-built macOS artifacts. It is intentionally local and manually invoked. Artifact upload is still a maintainer step outside the repository automation.
For crate versioning and GitHub Release tag/title rules, see
docs/developer-guide/versioning-and-release-metadata.md.
1. Scope
The MVP release bundle contains these top-level files:
Chromium.applibcbf_bridge.dylibCBF_LICENSE.txtTHIRD_PARTY_LICENSES.txtSOURCE_INFO.txt
The default archive name is:
cbf-chrome-macos-<git-tag>.tar.gz
The archive is written under dist/release/.
2. Release build requirements
Release packaging always reads Chromium outputs from:
chromium/src/out/Release
The out/Release/args.gn file must exist and must contain these values:
is_debug = false
dcheck_always_on = false
is_component_build = false
is_official_build = true
For the MVP OSS browser distribution, the release helper also expects the architecture and codec policy to be pinned explicitly:
# Pin the release architecture explicitly for deterministic packaging.
target_cpu = "arm64" # or "x64"
# Keep the MVP distribution within the Chromium codec/license surface.
proprietary_codecs = false
ffmpeg_branding = "Chromium"
Recommended complete out/Release/args.gn example for the MVP stage:
is_debug = false
dcheck_always_on = false
is_component_build = false
is_official_build = true
target_cpu = "arm64" # or "x64"
proprietary_codecs = false
ffmpeg_branding = "Chromium"
Notes:
dcheck_always_on = falseis required for release stability; do not reuse the development-onlyout/Defaultsetting here.proprietary_codecs = falsekeeps the MVP bundle out of the additional proprietary codec licensing path.ffmpeg_branding = "Chromium"makes that policy explicit even though it is already the default for non-Chrome-branded builds.
target_os is recorded in SOURCE_INFO.txt when present. target_cpu,
proprietary_codecs, and ffmpeg_branding are always captured by the release
helper.
3. Required tools
The local release flow expects:
uv- Python 3
tarshasumorsha256sumchromium/src./depot_tools
By default, the runtime release bundle identifier is taken from the single git
tag that points at HEAD. Use the canonical runtime bundle tag format defined
in docs/developer-guide/versioning-and-release-metadata.md.
If HEAD is untagged, the release flow fails.
If a maintainer needs to package a different tagged revision or HEAD has
multiple release-related tags, pass --tag <tag> to select the release tag
explicitly.
4. Task entrypoints
The root Taskfile.yml is the entrypoint for the release flow.
Validate prerequisites:
task release:check
Explicit tag:
task release:check TAG=cbf-chrome-runtime-v0.1.0+chromium-146.0.7632.160-r1
Build release artifacts:
task release:build
Generate license files:
task release:licenses
Generate source metadata:
task release:source-info
Assemble the release archive:
task release:package
Run the full flow:
task release
If a maintainer intentionally needs to package a dirty tree for investigation,
they can pass ALLOW_DIRTY=true to the task invocation. Normal releases should
keep both the repository root and chromium/src clean.
5. Generated files
The release helper writes generated files under:
dist/release/<git-tag>/
Generated outputs:
CBF_LICENSE.txtTHIRD_PARTY_LICENSES.txtSOURCE_INFO.txt
The final release archive is written to:
dist/release/cbf-chrome-macos-<git-tag>.tar.gz
6. Manual upload
Artifact publication remains manual for the MVP stage.
After task release completes:
- Inspect the generated files under
dist/release/<git-tag>/. - Inspect
SOURCE_INFO.txtand confirm the recorded revisions and GN args. - Upload
dist/release/cbf-chrome-macos-<git-tag>.tar.gzto the matching runtime bundle GitHub Release.
7. Release legal checklist
Before publishing a binary release, confirm at least the following:
out/Release/args.gnpinsproprietary_codecs = false.out/Release/args.gnpinsffmpeg_branding = "Chromium".task release:licenseswas run from the exact source revision used for the release archive.THIRD_PARTY_LICENSES.txtis included in the final archive and was generated from the exact Chromium revision being distributed.CBF_LICENSE.txtis included in the final archive and matches the repositoryLICENSE.SOURCE_INFO.txtrecords the exact CBF commit, Chromium commit, patch queue state, and selected GN args used for the release.- The release notes or download page state that CBF includes Chromium and other third-party components under their own licenses.
- FFmpeg remains within the Chromium/LGPL distribution path for the shipped build; do not enable GPL or nonfree FFmpeg options for the MVP release.
- If the release changes media/codec policy, packaging terms, or bundled third-party binaries, request legal review before publication.
No GitHub Actions workflow, Jenkins job, or scheduled release automation is part of this MVP process.