Repository navigation
ci: build, sign and release ROneCOne.cls from a pushed tag - #16
Merged
Merged
Conversation
Pushing a vX.Y.Z tag now runs Publish. It refuses a tag that is not the version in the release header of src/ROneCOne.cls, restamps the release headers and fails if that changes a committed module, and writes ROneCOne.cls (with the CRLF line endings every release has shipped) and vX.Y.Z-sha256.txt. Security and Malware scan run on the tagged commit, the security report is written over the built file, and the release is created with both files, their signed provenance and the report. The notes are docs/releases/vX.Y.Z.md. Releases no longer attach the demo workbooks; they stay in demo/, and the docs point there. release-security.yml is gone.
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.
Releases are now built, scanned, signed and created in CI from a pushed
vX.Y.Ztag, by a new.github/workflows/publish.yml. The old flow (files built locally, release created by hand, thenrelease-security.ymlonrelease: published) is removed.What Publish does
build): on a tag, refuses a tag that is not the version in the release header ofsrc/ROneCOne.cls. Runstools/stamp_release_headers.pyandgit diff --exit-code, so the committed modules are exactly what the stamp produces fromCHANGELOG.mdandLICENSE. Fails ifdocs/releases/vX.Y.Z.mdis missing. WritesROneCOne.clsandvX.Y.Z-sha256.txt, and fails if a committeddocs/releases/vX.Y.Z-sha256.txtdisagrees.workflow_call.tools/security_scan.py --reportover the builtROneCOne.cls, asvX.Y.Z-security-report.md. Same tool, title and file name as before.actions/attestonROneCOne.clsandvX.Y.Z-sha256.txt, bundle kept asprovenance.ROneCOne.cls,vX.Y.Z-sha256.txt,vX.Y.Z-security-report.mdandROneCOne-X.Y.Z.sigstore.json, withdocs/releases/vX.Y.Z.mdas the notes and the tag as the title. Started by hand it is a dry run and uploadsrelease-previewinstead.Line endings
Git stores
src/ROneCOne.clswith LF (* text=auto). Every release so far shipped it with CRLF, as a Windows checkout writes it. The build converts LF to CRLF and nothing else. Checked: the CRLF form ofv1.10.3:src/ROneCOne.clshas SHA-256938835...092b, the hash in the v1.10.3 release'sv1.10.3-sha256.txt.Other changes
security.ymlandmalware-scan.yml:workflow_calltrigger. Their concurrency group now includes the event, so a dry run on main and a push run on main do not cancel each other..github/zizmor.yml: turns offself-repositoryandsuperfluous-actions, with the same reasons as xlide_vscode. Nothing else is silenced.gh attestation verify. The Scorecard bullet no longer says releases carry no provenance.demo/, not the release. docs/development.md, docs/README.md and CHANGELOG updated.Validation
python -m unittest discover -s tests/python: 102 tests, OK (3 skipped)..github/workflows: no findings.tools/security_scan.py --reportover the CRLFROneCOne.clsalone: writes the report, matches the baseline.A dry run of Publish is not possible before this merges, because
workflow_dispatchneeds the file on main. After merging:gh workflow run publish.yml --ref main, thengh run download <run-id> -n release-preview.