From e35a10c9b7b759786d34d5c4bb3192ed73eace95 Mon Sep 17 00:00:00 2001 From: Luiz Gustavo Abou Hatem de Liz Date: Fri, 3 Jul 2026 18:36:47 -0300 Subject: [PATCH 1/3] fix(packaging): align ghcr image name to ghcr.io/nullislabs/shepherd docker-compose.yml and docs referenced the old ghcr.io/bleu/nullis-shepherd name while the publish workflow pushes to ghcr.io/nullislabs/shepherd (github.repository). Fresh-server docker compose pull was fetching the wrong image or failing. Closes #125 --- .github/workflows/docker.yml | 2 +- docker-compose.yml | 4 ++-- docs/deployment/docker.md | 10 +++++----- 3 files changed, 8 insertions(+), 8 deletions(-) diff --git a/.github/workflows/docker.yml b/.github/workflows/docker.yml index d03d87ff..9011442b 100644 --- a/.github/workflows/docker.yml +++ b/.github/workflows/docker.yml @@ -6,7 +6,7 @@ # - workflow_dispatch (manual) → publish `manual-` # - pull_request to `main` → build only, no push (CI smoke) # -# Image: ghcr.io//nullis-shepherd +# Image: ghcr.io/nullislabs/shepherd # Auth: GITHUB_TOKEN (scoped to packages:write below). # # Pinned action SHAs match the style of `.github/workflows/ci.yml`. diff --git a/docker-compose.yml b/docker-compose.yml index 3f432658..7753f19e 100644 --- a/docker-compose.yml +++ b/docker-compose.yml @@ -10,7 +10,7 @@ # The image either builds from the repo's Dockerfile (`docker compose # build`) or pulls the published ghcr.io artefact when the # `SHEPHERD_IMAGE` env var is set (CI publishes -# `ghcr.io/bleu/nullis-shepherd:` and `:latest` on main). +# `ghcr.io/nullislabs/shepherd:` and `:latest` on main). # # Required mounts: # - ./engine.toml -> /etc/shepherd/engine.toml (operator-supplied) @@ -19,7 +19,7 @@ services: shepherd: - image: ${SHEPHERD_IMAGE:-ghcr.io/bleu/nullis-shepherd:latest} + image: ${SHEPHERD_IMAGE:-ghcr.io/nullislabs/shepherd:latest} # Comment out `build` if you `docker compose pull` instead of # building from source. Leaving it lets `docker compose up # --build` re-build from the local checkout when the image diff --git a/docs/deployment/docker.md b/docs/deployment/docker.md index a01c4a4e..7a72cda4 100644 --- a/docs/deployment/docker.md +++ b/docs/deployment/docker.md @@ -9,9 +9,9 @@ The image is published on every push to `main` and on every `v*` tag: ``` -ghcr.io/bleu/nullis-shepherd:latest # main branch HEAD -ghcr.io/bleu/nullis-shepherd:sha- # exact-build pin -ghcr.io/bleu/nullis-shepherd:v0.2.0 # tag +ghcr.io/nullislabs/shepherd:latest # main branch HEAD +ghcr.io/nullislabs/shepherd:sha- # exact-build pin +ghcr.io/nullislabs/shepherd:v0.2.0 # tag ``` `linux/amd64` only for now (the soak VM is x86_64; add `arm64` once @@ -126,12 +126,12 @@ docker compose up -d # picks up the new image; graceful # before the new container takes over. # Roll back to a specific build. -export SHEPHERD_IMAGE=ghcr.io/bleu/nullis-shepherd:sha-abc1234 +export SHEPHERD_IMAGE=ghcr.io/nullislabs/shepherd:sha-abc1234 docker compose up -d # Cold roll: stop, prune image, pull fresh. docker compose down -docker image rm ghcr.io/bleu/nullis-shepherd:latest +docker image rm ghcr.io/nullislabs/shepherd:latest docker compose pull && docker compose up -d ``` From 8f266203e34c2558961e428133dd02b99ecc229f Mon Sep 17 00:00:00 2001 From: Luiz Gustavo Abou Hatem de Liz Date: Tue, 7 Jul 2026 21:33:33 -0300 Subject: [PATCH 2/3] fix(docs): update remaining old repo URLs to nullislabs/shepherd The git clone and systemd Documentation= URLs in deployment docs still pointed to the old github.com/bleu/nullis-shepherd location. Fix them to match the canonical nullislabs/shepherd repo used everywhere else. Historical references in m2/m3 runbooks and ADRs are left unchanged. --- docs/deployment/docker.md | 2 +- docs/production.md | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/docs/deployment/docker.md b/docs/deployment/docker.md index 7a72cda4..8112beb0 100644 --- a/docs/deployment/docker.md +++ b/docs/deployment/docker.md @@ -23,7 +23,7 @@ an operator surfaces a real need). ```bash # On the VM: -git clone https://github.com/bleu/nullis-shepherd /opt/shepherd +git clone https://github.com/nullislabs/shepherd /opt/shepherd cd /opt/shepherd # Operator-supplied RPC URLs. `.env` is gitignored; the template diff --git a/docs/production.md b/docs/production.md index 3296cf99..2bb33ef1 100644 --- a/docs/production.md +++ b/docs/production.md @@ -56,7 +56,7 @@ Before launching: ```ini [Unit] Description=Shepherd (nexum) - CoW Protocol off-chain automation runtime -Documentation=https://github.com/bleu/nullis-shepherd +Documentation=https://github.com/nullislabs/shepherd After=network-online.target Wants=network-online.target From 0e8660df5ef5178b3c9c861ec38ef222f2c090f8 Mon Sep 17 00:00:00 2001 From: Luiz Gustavo Abou Hatem de Liz Date: Fri, 10 Jul 2026 16:09:01 -0300 Subject: [PATCH 3/3] fix(packaging): last functional bleu/nullis-shepherd reference in .env.example Review catch: the docker.md runbook has fresh-server operators cp .env.example .env, and anyone uncommenting SHEPHERD_IMAGE to pin a build pulled the foreign-org image - exactly the failure mode #125 describes. Remaining old-name hits are historical PR pointers in ADR-0009 and the M2/M3 runbooks, left intentionally. Also corrects the docker.yml header: tag pushes publish v + sha-; `latest` only moves on default-branch pushes per the metadata-action is_default_branch gate. --- .env.example | 2 +- .github/workflows/docker.yml | 4 +++- 2 files changed, 4 insertions(+), 2 deletions(-) diff --git a/.env.example b/.env.example index 809e711e..dfda2baf 100644 --- a/.env.example +++ b/.env.example @@ -22,4 +22,4 @@ BASE_RPC_URL=wss://base-mainnet.g.alchemy.com/v2/REPLACE_ME # Optional: override the published image with a locally-built or # pinned-by-SHA tag. Leave unset to pull `:latest` from ghcr.io. -# SHEPHERD_IMAGE=ghcr.io/bleu/nullis-shepherd:sha-abc1234 +# SHEPHERD_IMAGE=ghcr.io/nullislabs/shepherd:sha-abc1234 diff --git a/.github/workflows/docker.yml b/.github/workflows/docker.yml index 9011442b..1d6fe67c 100644 --- a/.github/workflows/docker.yml +++ b/.github/workflows/docker.yml @@ -2,7 +2,9 @@ # # Triggers: # - push to `main` → publish `latest` + `sha-` -# - tag push `v*` → publish `v` + `latest` +# - tag push `v*` → publish `v` + `sha-` +# (`latest` only moves on default-branch pushes, per the +# metadata-action `is_default_branch` gate below) # - workflow_dispatch (manual) → publish `manual-` # - pull_request to `main` → build only, no push (CI smoke) #