You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
-[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