Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion .claude/rules/git-workflow.md
Original file line number Diff line number Diff line change
Expand Up @@ -92,7 +92,7 @@ script/release-dash v1.0.0.0 # validates tag grammar, runs make test, tags,

- **NEVER** `git push --tags` — single-tag pushes only, `git push origin tag v1.0.0.0`
- **NEVER** hand-craft the tag — let `script/release-dash` validate the grammar and run the tests first
- Release the proxy image **before** the gem — the `dash` gem's `MINIMUM_VERSION` must name an already-published `ghcr.io/mhenrixon/kamal-proxy` tag. See `../kamal/CLAUDE.md` for gem-side ordering.
- Release the proxy image **before** the gem — the `dash` gem's `MINIMUM_VERSION` must name an already-published `ghcr.io/zoolutions/kamal-proxy` tag. See `../kamal/CLAUDE.md` for gem-side ordering.

Sync mechanics (fetching upstream, merging into feature branches, the conflict playbook) live entirely in `.claude/rules/upstream-sync.md` — don't duplicate them here.

Expand Down
4 changes: 2 additions & 2 deletions .claude/rules/upstream-sync.md
Original file line number Diff line number Diff line change
Expand Up @@ -39,8 +39,8 @@ git push origin dash
```bash
git checkout dash
script/release-dash v1.0.0.0 # validates vX.Y.Z.N grammar, make test, tags, pushes the tag
# CI publishes ghcr.io/mhenrixon/kamal-proxy:v1.0.0.0 (+ :latest)
docker buildx imagetools inspect ghcr.io/mhenrixon/kamal-proxy:v1.0.0.0 # verify amd64+arm64
# CI publishes ghcr.io/zoolutions/kamal-proxy:v1.0.0.0 (+ :latest)
docker buildx imagetools inspect ghcr.io/zoolutions/kamal-proxy:v1.0.0.0 # verify amd64+arm64
```

Pick the next number yourself — it reflects what shipped here, not what basecamp happened to tag. Then update `MINIMUM_VERSION` in the `dash` gem and release it (see that repo's `.claude/rules/upstream-sync.md`); the proxy image must be published first, because `MINIMUM_VERSION` has to name a tag that exists.
Expand Down
4 changes: 2 additions & 2 deletions .github/workflows/docker-publish.yml
Original file line number Diff line number Diff line change
Expand Up @@ -61,5 +61,5 @@ jobs:
labels: |
org.opencontainers.image.title=kamal-proxy
tags: |
ghcr.io/mhenrixon/kamal-proxy:latest
ghcr.io/mhenrixon/kamal-proxy:${{ steps.version-tag.outputs.value }}
ghcr.io/zoolutions/kamal-proxy:latest
ghcr.io/zoolutions/kamal-proxy:${{ steps.version-tag.outputs.value }}
8 changes: 4 additions & 4 deletions CLAUDE.md
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
# kamal-proxy (mhenrixon fork)
# kamal-proxy (zoolutions fork)

**dash-proxy.** Started as a fork of [basecamp/kamal-proxy](https://github.com/basecamp/kamal-proxy) and still merges their fixes forward via `main`, but the product is ours — their conventions are not constraints on ours. Carries the cert features they don't ship: SAN certificate batching and wildcard certs via DNS-01. Published as `ghcr.io/mhenrixon/kamal-proxy`; the Go module, binary, RPC service, and socket all stay `kamal-proxy` on purpose. Consumed by the `dash` gem fork in `../kamal`.
**dash-proxy.** Started as a fork of [basecamp/kamal-proxy](https://github.com/basecamp/kamal-proxy) and still merges their fixes forward via `main`, but the product is ours — their conventions are not constraints on ours. Carries the cert features they don't ship: SAN certificate batching and wildcard certs via DNS-01. Published as `ghcr.io/zoolutions/kamal-proxy`; the Go module, binary, RPC service, and socket all stay `kamal-proxy` on purpose. Consumed by the `dash` gem fork in `../kamal`.

## Tech Stack

Expand Down Expand Up @@ -34,7 +34,7 @@ make build # Build bin/kamal-proxy
make test # go test ./...
make docker # Local image build (smoke test)
script/release-dash v1.0.0.0 # Tag + push; CI publishes to ghcr
docker buildx imagetools inspect ghcr.io/mhenrixon/kamal-proxy:v1.0.0.0 # Verify multi-arch
docker buildx imagetools inspect ghcr.io/zoolutions/kamal-proxy:v1.0.0.0 # Verify multi-arch
git fetch upstream --tags --prune # Start of every sync
```

Expand Down Expand Up @@ -71,7 +71,7 @@ The two cert branches deliberately overlap in run.go/config.go/router.go — the

## Release & image

Tag push (`vX.Y.Z.N`) → `.github/workflows/docker-publish.yml` → multi-arch build → `ghcr.io/mhenrixon/kamal-proxy:vX.Y.Z.N` + `:latest`. `GITHUB_TOKEN` authenticates; the ghcr package must stay PUBLIC (kamal deploys and integration tests pull anonymously). The kamal fork's `MINIMUM_VERSION` must always name a published tag — release here FIRST, then the gem.
Tag push (`vX.Y.Z.N`) → `.github/workflows/docker-publish.yml` → multi-arch build → `ghcr.io/zoolutions/kamal-proxy:vX.Y.Z.N` + `:latest`. `GITHUB_TOKEN` authenticates; the ghcr package must stay PUBLIC (kamal deploys and integration tests pull anonymously). The kamal fork's `MINIMUM_VERSION` must always name a published tag — release here FIRST, then the gem.

## Testing

Expand Down
6 changes: 3 additions & 3 deletions script/release-dash
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
#!/bin/bash

# Release dash-proxy as ghcr.io/mhenrixon/kamal-proxy.
# Release dash-proxy as ghcr.io/zoolutions/kamal-proxy.
#
# Tags are four-segment: vX.Y.Z.N, e.g. v1.0.0.0.
#
Expand Down Expand Up @@ -47,5 +47,5 @@ make test
git tag -a "${TAG}" -m "dash-proxy ${TAG}"
git push origin "tag" "${TAG}"

echo "Tag ${TAG} pushed. CI will publish ghcr.io/mhenrixon/kamal-proxy:${TAG}"
echo "Verify with: docker buildx imagetools inspect ghcr.io/mhenrixon/kamal-proxy:${TAG}"
echo "Tag ${TAG} pushed. CI will publish ghcr.io/zoolutions/kamal-proxy:${TAG}"
echo "Verify with: docker buildx imagetools inspect ghcr.io/zoolutions/kamal-proxy:${TAG}"
Loading