86 lines
2.0 KiB
Markdown
86 lines
2.0 KiB
Markdown
# Distribution
|
|
|
|
`notcrawl` ships through GitHub Releases, Homebrew tap updates, and optional
|
|
Cloudsmith APT/RPM repositories.
|
|
|
|
## Local Checks
|
|
|
|
```bash
|
|
go test ./...
|
|
go build ./cmd/notcrawl
|
|
```
|
|
|
|
Also smoke the crawlkit control and non-interactive TUI surfaces before a tag:
|
|
|
|
```bash
|
|
notcrawl metadata --json
|
|
notcrawl status --json
|
|
notcrawl doctor --json
|
|
notcrawl tui --json --limit 10
|
|
```
|
|
|
|
The CI workflow runs the same control-surface smoke checks, plus dependency
|
|
verification, `gofmt`, `go vet`, tests, a GoReleaser snapshot build, and
|
|
CodeQL.
|
|
|
|
If GoReleaser is installed:
|
|
|
|
```bash
|
|
make release-snapshot
|
|
```
|
|
|
|
That creates local snapshot archives, checksums, `.deb`, and `.rpm` packages
|
|
under `dist/` without publishing.
|
|
|
|
## Release Notes
|
|
|
|
GitHub uses Release Drafter to auto-label PRs and generate release notes from
|
|
merged pull requests. The release workflow publishes the Release Drafter output
|
|
for the pushed tag, then uploads the GoReleaser artifacts to that release.
|
|
|
|
## Tagged Release
|
|
|
|
Create and push a semver tag:
|
|
|
|
```bash
|
|
git tag v0.1.0
|
|
git push origin v0.1.0
|
|
```
|
|
|
|
The release workflow:
|
|
|
|
1. runs tests
|
|
2. builds GoReleaser artifacts
|
|
3. publishes Release Drafter notes for the tag
|
|
4. uploads GitHub release assets
|
|
5. optionally publishes APT/RPM packages to Cloudsmith
|
|
6. updates the Homebrew tap
|
|
|
|
## Required Secrets
|
|
|
|
- `HOMEBREW_TAP_GITHUB_TOKEN`: token that can push to the tap repository
|
|
- `CLOUDSMITH_API_KEY`: optional; enables package publishing
|
|
|
|
## Optional Variables
|
|
|
|
- `HOMEBREW_TAP_REPO`: defaults to `vincentkoc/tap`
|
|
- `CLOUDSMITH_APT_TARGETS`: comma-separated targets like `ubuntu/jammy,debian/trixie`
|
|
- `CLOUDSMITH_DISTRIBUTION` and `CLOUDSMITH_RELEASE`: legacy single APT target
|
|
- `CLOUDSMITH_RPM_DISTRIBUTION`: defaults to `el`
|
|
- `CLOUDSMITH_RPM_RELEASE`: defaults to `9`
|
|
|
|
## Manual Reruns
|
|
|
|
If Cloudsmith publish fails after GitHub release assets exist:
|
|
|
|
```bash
|
|
gh workflow run publish-apt.yml -f tag_name=v0.1.0
|
|
gh workflow run publish-rpm.yml -f tag_name=v0.1.0
|
|
```
|
|
|
|
If the Homebrew tap update fails:
|
|
|
|
```bash
|
|
gh workflow run homebrew-tap.yml -f tag_name=v0.1.0
|
|
```
|