Skip to content

Commit 8f33615

Browse files
authored
Merge pull request #8 from bbrowning/add-contributing-md
Add CONTRIBUTING.md with test and release instructions
2 parents 0846e2a + aa8bab1 commit 8f33615

1 file changed

Lines changed: 48 additions & 0 deletions

File tree

CONTRIBUTING.md

Lines changed: 48 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,48 @@
1+
# Contributing
2+
3+
## Prerequisites
4+
5+
- Go 1.23+
6+
- [pre-commit](https://pre-commit.com/) (optional, but recommended)
7+
8+
## Setup
9+
10+
```bash
11+
go mod tidy
12+
make install-hooks # sets up pre-commit (gofmt, go vet, golangci-lint)
13+
```
14+
15+
## Running Tests
16+
17+
```bash
18+
make test # all tests
19+
make unit-test # unit tests only (-short -race)
20+
make integration-test # integration tests only (-race)
21+
```
22+
23+
## Other Checks
24+
25+
```bash
26+
make lint # go vet
27+
make fmt-check # verify gofmt formatting
28+
make build # build binary to bin/paude-proxy
29+
make docker # build container image with podman
30+
```
31+
32+
## Cutting a Release
33+
34+
Releases are fully automated via GitHub Actions. Push a semver tag to trigger the pipeline:
35+
36+
```bash
37+
git tag v1.2.3
38+
git push origin v1.2.3
39+
```
40+
41+
The [release workflow](.github/workflows/release.yml) will:
42+
43+
1. Lint and run all tests
44+
2. Build binaries for linux/amd64, linux/arm64, darwin/amd64, darwin/arm64
45+
3. Build and push multi-arch container images to `quay.io/bbrowning/paude-proxy`
46+
4. Create a GitHub Release with auto-generated notes and the binaries attached
47+
48+
**Stable vs pre-release:** Tags matching `vX.Y.Z` exactly (e.g. `v1.2.3`) are treated as stable releases and update the `latest` container tag. Anything else (e.g. `v1.2.3-rc1`) is marked as a pre-release and does not update `latest`.

0 commit comments

Comments
 (0)