refactor: move vantagectl to vantage-ctl

vantagectl/ becomes the root of gitea.hostxtra.co.uk/vantage/vantage-ctl.
The command keeps the name vantagectl; only the repository and the image
path change, to vantage/vantage-ctl.

chart-release.yml's render checks are repointed at the new image. The
chart itself has no default backup.image and fails loudly without one, so
an existing cluster keeps working until someone changes the value.

go.work stays, now with a single use ./server entry: without it a go.work
further up the developer's filesystem is picked up instead.
This commit is contained in:
2026-09-08 09:07:14 +00:00
parent 44d9036440
commit e0cc3988fc
19 changed files with 67 additions and 1380 deletions
+2 -2
View File
@@ -80,7 +80,7 @@ jobs:
run: |
helm template test "$CHART_DIR" \
--set backup.enabled=true \
--set backup.image=gitea.hostxtra.co.uk/mrhid6/vantage/vantagectl:latest \
--set backup.image=gitea.hostxtra.co.uk/vantage/vantage-ctl:latest \
--set backup.pvcName=vantage-backups > /dev/null
- name: Render against external Redis and MongoDB
@@ -158,7 +158,7 @@ jobs:
--set ingress.grpc.host=agents.example.com
refuses "backup enabled with no pvcName" \
--set backup.enabled=true \
--set backup.image=gitea.hostxtra.co.uk/mrhid6/vantage/vantagectl:latest
--set backup.image=gitea.hostxtra.co.uk/vantage/vantage-ctl:latest
refuses "backup enabled with no image" \
--set backup.enabled=true \
--set backup.pvcName=vantage-backups
-133
View File
@@ -1,133 +0,0 @@
name: vantagectl Release
on:
push:
tags:
- "vantagectl/v*"
jobs:
build:
runs-on: ubuntu-docker
container: node:26
env:
GOPRIVATE: gitea.hostxtra.co.uk/*
steps:
- name: Checkout
uses: actions/checkout@v4
# vantage-shared is a private module, so the Go builds below cannot
# resolve it without a credential.
- name: Write the module fetch credential
run: |
umask 077
printf 'machine gitea.hostxtra.co.uk\nlogin %s\npassword %s\n' \
"${{ secrets.REGISTRY_USER }}" "${{ secrets.RELEASE_TOKEN }}" \
> "$HOME/.netrc"
- name: Set up Go
uses: actions/setup-go@v5
with:
go-version: "1.26"
cache: true
cache-dependency-path: vantagectl/go.sum
- name: Extract version
id: version
run: echo "VERSION=${GITHUB_REF_NAME#vantagectl/}" >> $GITHUB_OUTPUT
- name: Test
working-directory: vantagectl
run: go test ./...
- name: Build
working-directory: vantagectl
env:
VERSION: ${{ steps.version.outputs.VERSION }}
run: |
mkdir -p dist
for target in linux/amd64 linux/arm64 darwin/arm64 windows/amd64; do
goos="${target%/*}"
goarch="${target#*/}"
out="dist/vantagectl-${goos}-${goarch}"
if [ "$goos" = "windows" ]; then out="${out}.exe"; fi
CGO_ENABLED=0 GOOS="$goos" GOARCH="$goarch" go build \
-ldflags="-s -w -X main.Version=${VERSION}" \
-o "$out" .
done
- name: Checksums
working-directory: vantagectl/dist
run: sha256sum vantagectl-* > checksums.txt
- name: Create release
uses: https://gitea.com/actions/gitea-release-action@v1
with:
token: ${{ secrets.RELEASE_TOKEN }}
files: |
vantagectl/dist/vantagectl-linux-amd64
vantagectl/dist/vantagectl-linux-arm64
vantagectl/dist/vantagectl-darwin-arm64
vantagectl/dist/vantagectl-windows-amd64.exe
vantagectl/dist/checksums.txt
# The image is built here rather than in server-deploy.yml on every push to
# main, because vantagectl is a released tool rather than a running service.
# An operator restoring a database should be able to name the version they
# ran; ":latest, rebuilt whenever main moved" cannot be named after the
# fact. It is a separate job from the binaries because it needs a
# docker-capable runner rather than a Go one, and it does not need the
# binaries — the image builds from source in its own stage.
image:
runs-on: ubuntu-docker
container: docker:dind
steps:
- name: Setup
run: apk add --update nodejs npm git
- name: Checkout
uses: actions/checkout@v4
- name: Extract version
id: version
run: |
# v0.1.0 for the binary stamp, 0.1.0 for the image tag: a
# leading v is conventional on a git tag and unconventional on
# a container tag.
VERSION="${GITHUB_REF_NAME#vantagectl/}"
echo "VERSION=${VERSION}" >> $GITHUB_OUTPUT
echo "IMAGE_TAG=${VERSION#v}" >> $GITHUB_OUTPUT
# The image build resolves the private vantage-shared module, so
# it needs a credential of its own — this job does not share the
# build job's filesystem.
- name: Write the module fetch credential
run: |
umask 077
printf 'machine gitea.hostxtra.co.uk\nlogin %s\npassword %s\n' \
"${{ secrets.REGISTRY_USER }}" "${{ secrets.RELEASE_TOKEN }}" \
> "$HOME/.netrc"
- name: Log in to registry
run: |
echo "${{ secrets.RELEASE_TOKEN }}" | \
docker login ${{ vars.DOCKER_HOST }} \
-u "${{ secrets.REGISTRY_USER }}" --password-stdin
- name: Build and push image
env:
VERSION: ${{ steps.version.outputs.VERSION }}
IMAGE_TAG: ${{ steps.version.outputs.IMAGE_TAG }}
run: |
REPO="${{ vars.DOCKER_HOST }}/${{ github.repository_owner }}/vantage/vantagectl"
# VERSION is passed through so `vantagectl --version` inside the
# image reports the tag it was built from rather than "dev".
# The context is vantagectl/ now that shared/ is an external
# module rather than a sibling directory.
docker build \
--build-arg VERSION="${VERSION}" \
--secret id=netrc,src="$HOME/.netrc" \
-t "${REPO}:${IMAGE_TAG}" \
-t "${REPO}:latest" \
-f vantagectl/Dockerfile vantagectl/
docker push "${REPO}:${IMAGE_TAG}"
docker push "${REPO}:latest"