Publish every build to someones.computer's download channels #13
No reviewers
Labels
No labels
⏳in-progress
No milestone
No project
No assignees
1 participant
Notifications
Total time spent: 4 minutes 24 seconds
Due date
geusebio
4 minutes 24 seconds
No due date set.
Dependencies
No dependencies set
Reference
Grey.ooo/someones.computer_agent!13
Loading…
Reference in a new issue
No description provided.
Delete branch "feature/s3-binary-distribution"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
This repo is private, so its Forgejo release assets are unreachable to exactly the people who need
sc. goreleaser now mirrors what it builds into the platform's object store, and the platform hands it out from its own domain — see the companion PR onsomeones.computer.Two channels, one pipeline
main--snapshotdev0.0.1-snapshot-<sha>v*tagrelease --cleanstableNo rolling
devgit tag. A snapshot version already names the commit it came from, so a moving tag would add nothing and force-push something.The mirror
scripts/publish-s3.sh— six PUTs signed withcurl --aws-sigv4, rather than installing an AWS CLI into a runner that otherwise needs nothing but Go. It writes the archives and goreleaser'schecksums.txtunderreleases/<version>/, then moveschannels/<channel>last, so a half-finished upload leaves the channel on the previous version instead of on a set of 404s.checksums.txtdoubles as the manifest the platform reads: the set of downloadable files is exactly the set somebody can verify, with no second hand-written index to disagree with the bytes.Its own bucket
sc-builderis this pipeline's alone and the key can reach nothing else on that object store; the platform's own keys have read on it and nothing more. Garage grants permissions per bucket and no finer, so sharing the platform's data bucket would have handed this repo's CI write access to every stored build context — which the build worker feeds to kaniko by object key.Five settings, already configured on this repo (
SC_S3_ENDPOINT,SC_S3_REGION,SC_S3_BUCKETas variables;SC_S3_ACCESS_KEY/SC_S3_SECRET_KEYas secrets).SC_S3_REGIONisus-east-1, notgarage— s3.grey.ooo reports the former and SigV4 rejects the wrong region outright. Missing credentials warn rather than fail: a release that reached Forgejo has done this repo's job, and a fork should still be able to cut one.Verified
goreleaser release --snapshotlocally, thenpublish-s3.shinto a dev Garage — six archives + checksums + pointer, keys exactly as above.sc-builderon s3.grey.ooo: PUT 200, GET returns the body, DELETE 204, follow-up GET 404.wget/sha256sum/tar);sc --helpruns in both.shellcheckclean;actionlintclean.The first
devpublish happens on the merge commit itself.WIP: Publish every build to someones.computer's download channelsto Publish every build to someones.computer's download channels