Repository navigation
v1.2.0-rc.1
Pre-releaseHephaestus v1.2.0-rc.1
Release candidate of v1.2.0. The GitHub Action no longer compiles
Hephaestus: it installs the release binary that belongs to the commit you
pinned, verified by its checksum and its provenance attestation, and leaves
your toolchain alone. This release also brings hephaestus publish, and the
fixes prepared for v1.1.1 (never released).
The Action runs the verified release binary
- uses: magicdrive/hephaestus@<full commit SHA of v1.2.0> # v1.2.0Before your build runs, the Action:
- reads the release named in
action/VERSIONof the pinned commit; the
release workflow refuses a tag that this file does not name; - downloads
hephaestus_<version>_<os>_<arch>.tar.gz(.zipon Windows)
andhephaestus_checksums.txt, from that release only; - checks the archive's SHA-256;
- verifies the archive's provenance attestation (
gh attestation verify).
It must have been signed bymagicdrive/hephaestus'srelease.ymlon a
GitHub-hosted runner, for the release tag and, when pinned by SHA, for
exactly the pinned commit; - extracts only the regular file
hephaestus[.exe]at the archive root,
and checks that it reports the expected version.
Any failure stops the Action. It never falls back to building from source.
As a result:
- No toolchain is involved. Nothing is compiled, no Go is downloaded or
set up, and nothing is written to$GITHUB_PATHor$GITHUB_ENV. Your
build commands use the toolchain your workflow set up. A runner without Go
can run the Action for a project in any language. - The binary is bound to your pin. The attestation proves that the
binary was built by Hephaestus's release workflow from the commit you
pinned. - Supported platforms are unchanged: Linux, macOS and Windows, on x64
and ARM64. A runner needsbash,curl,tarandgh, which
GitHub-hosted runners have.
Reference the Action by a release. Use the full SHA of a release tag's
commit (recommended) or the tag itself. A branch such as @main now fails,
because no release binary belongs to it.
hephaestus publish
The tool that releases Hephaestus is now a command for any project:
make publish vX.Y.Z that runs hephaestus publish. In order, it:
- checks that the release can be made: branch, clean worktree, in sync
with origin, the tag unused, CI green on the commit, rulesets, the
release environment, the tap, and the generic preflight; - asks for confirmation;
- pushes an annotated tag;
- follows the release workflow;
- verifies the release: assets, checksums, attestations and the tap pull
request.
See docs/publish.md.
The Action gains command: plan, with the outputs prerelease and tap.
The steps that use the tap token can then run only when the tap is
published. A prerelease never even receives the token.
Fixes (prepared for v1.1.1)
- The Action no longer changes your Go toolchain. v1.1.0 put its own Go
first onPATHand exportedGOTOOLCHAIN=local, so your Go modules were
built with Go 1.26.0, or failed to build. PWDis no longer redacted as a credential. Paths under the current
directory are no longer printed as***. A value matched only by its
variable's name is not redacted when it is the path of an existing file or
directory. Known tokens are always redacted.--freshremoves the previous run's outputs (archives, checksum files
and formulae) fromdist, if they are unchanged and Hephaestus wrote them.
Compatibility
- Unchanged: configuration, CLI flags, Action inputs and outputs, JSON
fields and check IDs. New: thepublishcommand, and the Action'splancommand with the outputsprereleaseandtap. - The Action: it must be referenced by a release tag or that tag's
commit, and it no longer provides Go. Set up your own Go, as the examples
always did. - Template variables:
{{ .Env.PWD }}and{{ .Env.OLDPWD }}are now
visible to templates.
Known limitations
- Homebrew 4.6 parses the version of archive URLs such as
tool_1.2.3_darwin_arm64.tar.gzas64; Homebrew 7.0 parses it
correctly.brew updateupdates Homebrew itself. hephaestus checkshows the tap pull request branch as a template;
hephaestus preflight --tagrenders it.
Full Changelog: v1.1.0...v1.2.0-rc.1