From 0137253c0aa8ab21f34d9073e81277b97a2ac79c Mon Sep 17 00:00:00 2001 From: Cursor Agent Date: Fri, 18 Sep 2026 08:16:18 +0000 Subject: [PATCH 1/3] Publish self-host Docker image to ghcr.io//executor Retarget the fork release path so published images land at ghcr.io/marcelruhf/executor (owner-relative name `executor`) and drop the default rhyssullivan GHCR legacy mirror. Co-authored-by: Marcel Ruhf --- .github/workflows/publish-selfhost-docker.yml | 56 +------------------ RELEASING.md | 3 +- apps/docs/hosted/docker.mdx | 4 +- apps/docs/hosted/tracing.mdx | 4 +- apps/host-selfhost/README.md | 2 +- e2e/setup/selfhost-docker.globalsetup.ts | 2 +- 6 files changed, 9 insertions(+), 62 deletions(-) diff --git a/.github/workflows/publish-selfhost-docker.yml b/.github/workflows/publish-selfhost-docker.yml index a70192b13b..8586c97add 100644 --- a/.github/workflows/publish-selfhost-docker.yml +++ b/.github/workflows/publish-selfhost-docker.yml @@ -37,7 +37,6 @@ jobs: release_tag: ${{ steps.validate.outputs.tag }} image: ${{ steps.image.outputs.image }} tags: ${{ steps.image.outputs.tags }} - legacy_tags: ${{ steps.image.outputs.legacy_tags }} labels: ${{ steps.image.outputs.labels }} steps: @@ -74,8 +73,7 @@ jobs: version="${RELEASE_TAG#v}" owner="$(printf '%s' "$GITHUB_REPOSITORY_OWNER" | tr '[:upper:]' '[:lower:]')" - image="ghcr.io/${owner}/executor-selfhost" - legacy_image="ghcr.io/rhyssullivan/executor-selfhost" + image="ghcr.io/${owner}/executor" revision="$(git rev-parse HEAD)" if [[ "$version" == *-* ]]; then @@ -93,11 +91,6 @@ jobs: echo "${image}:${version}" echo "${image}:${channel}" echo "TAGS" - echo "legacy_tags</executor` + (on this fork: `ghcr.io/marcelruhf/executor`) for `linux/amd64` and `linux/arm64`: - stable releases get `vX.Y.Z`, `X.Y.Z`, and `latest` - prereleases get `vX.Y.Z-...`, `X.Y.Z-...`, and `beta` diff --git a/apps/docs/hosted/docker.mdx b/apps/docs/hosted/docker.mdx index a5e544cdab..662c938eaf 100644 --- a/apps/docs/hosted/docker.mdx +++ b/apps/docs/hosted/docker.mdx @@ -17,7 +17,7 @@ docker run -d \ --name executor-selfhost \ -p 4788:4788 \ -v executor-data:/data \ - ghcr.io/usefulsoftwareco/executor-selfhost:latest + ghcr.io/marcelruhf/executor:latest ``` Or build from a clone of the [repo](https://github.com/UsefulSoftwareCo/executor), @@ -86,7 +86,7 @@ docker run -d \ -p 4788:4788 \ -v executor-data:/data \ -e EXECUTOR_WEB_BASE_URL=https://executor.example.com \ - ghcr.io/usefulsoftwareco/executor-selfhost:latest + ghcr.io/marcelruhf/executor:latest ``` For a headless deploy (CI or infra-as-code), set `EXECUTOR_BOOTSTRAP_ADMIN_EMAIL` diff --git a/apps/docs/hosted/tracing.mdx b/apps/docs/hosted/tracing.mdx index 09a49db274..538d0108d8 100644 --- a/apps/docs/hosted/tracing.mdx +++ b/apps/docs/hosted/tracing.mdx @@ -20,7 +20,7 @@ docker run -d \ -p 4788:4788 \ -v executor-data:/data \ -e OTEL_EXPORTER_OTLP_ENDPOINT=http://collector.local:4318 \ - ghcr.io/usefulsoftwareco/executor-selfhost:latest + ghcr.io/marcelruhf/executor:latest ``` Traces are sent as OTLP over HTTP with a JSON payload, which every collector @@ -79,7 +79,7 @@ docker run -d \ -v executor-data:/data \ --add-host host.docker.internal:host-gateway \ -e OTEL_EXPORTER_OTLP_ENDPOINT=http://host.docker.internal:27686 \ - ghcr.io/usefulsoftwareco/executor-selfhost:latest + ghcr.io/marcelruhf/executor:latest ``` diff --git a/apps/host-selfhost/README.md b/apps/host-selfhost/README.md index 1e83cab917..3c9903cdd0 100644 --- a/apps/host-selfhost/README.md +++ b/apps/host-selfhost/README.md @@ -14,7 +14,7 @@ docker run -d \ --name executor-selfhost \ -p 4788:4788 \ -v executor-data:/data \ - ghcr.io/usefulsoftwareco/executor-selfhost:latest + ghcr.io/marcelruhf/executor:latest ``` Or build from a repository clone: diff --git a/e2e/setup/selfhost-docker.globalsetup.ts b/e2e/setup/selfhost-docker.globalsetup.ts index 47a8c89baf..be63ab4d88 100644 --- a/e2e/setup/selfhost-docker.globalsetup.ts +++ b/e2e/setup/selfhost-docker.globalsetup.ts @@ -1,7 +1,7 @@ // Boot the selfhost-docker target: claim a port, then build + run the // production image (selfhost-docker.boot.ts). Set E2E_SELFHOST_DOCKER_URL to // attach to a running instance, or E2E_SELFHOST_DOCKER_IMAGE to test a -// published image (e.g. ghcr.io//executor-selfhost:latest) instead of +// published image (e.g. ghcr.io//executor:latest) instead of // building from this checkout. import { resolve } from "node:path"; import { fileURLToPath } from "node:url"; From dc639fbb17af3007fb2fbb08a0addd3d501866db Mon Sep 17 00:00:00 2001 From: Cursor Agent Date: Fri, 18 Sep 2026 08:57:33 +0000 Subject: [PATCH 2/3] Keep publishing the self-host image as executor-selfhost Restore the GHCR image name to executor-selfhost so this fork publishes ghcr.io/marcelruhf/executor-selfhost. Owner stays dynamic; the rhyssullivan legacy mirror stays removed. Co-authored-by: Marcel Ruhf --- .github/workflows/publish-selfhost-docker.yml | 2 +- RELEASING.md | 4 ++-- apps/docs/hosted/docker.mdx | 4 ++-- apps/docs/hosted/tracing.mdx | 4 ++-- apps/host-selfhost/README.md | 2 +- e2e/setup/selfhost-docker.globalsetup.ts | 2 +- 6 files changed, 9 insertions(+), 9 deletions(-) diff --git a/.github/workflows/publish-selfhost-docker.yml b/.github/workflows/publish-selfhost-docker.yml index 8586c97add..8eef47d677 100644 --- a/.github/workflows/publish-selfhost-docker.yml +++ b/.github/workflows/publish-selfhost-docker.yml @@ -73,7 +73,7 @@ jobs: version="${RELEASE_TAG#v}" owner="$(printf '%s' "$GITHUB_REPOSITORY_OWNER" | tr '[:upper:]' '[:lower:]')" - image="ghcr.io/${owner}/executor" + image="ghcr.io/${owner}/executor-selfhost" revision="$(git rev-parse HEAD)" if [[ "$version" == *-* ]]; then diff --git a/RELEASING.md b/RELEASING.md index 6150edb5d8..1a1701a260 100644 --- a/RELEASING.md +++ b/RELEASING.md @@ -24,8 +24,8 @@ the self-host Docker image. - creates or updates the GitHub release with build artifacts - dispatches `.github/workflows/publish-desktop.yml` - dispatches `.github/workflows/publish-selfhost-docker.yml` -6. The self-host Docker workflow publishes `ghcr.io//executor` - (on this fork: `ghcr.io/marcelruhf/executor`) +6. The self-host Docker workflow publishes `ghcr.io//executor-selfhost` + (on this fork: `ghcr.io/marcelruhf/executor-selfhost`) for `linux/amd64` and `linux/arm64`: - stable releases get `vX.Y.Z`, `X.Y.Z`, and `latest` - prereleases get `vX.Y.Z-...`, `X.Y.Z-...`, and `beta` diff --git a/apps/docs/hosted/docker.mdx b/apps/docs/hosted/docker.mdx index 662c938eaf..810348f827 100644 --- a/apps/docs/hosted/docker.mdx +++ b/apps/docs/hosted/docker.mdx @@ -17,7 +17,7 @@ docker run -d \ --name executor-selfhost \ -p 4788:4788 \ -v executor-data:/data \ - ghcr.io/marcelruhf/executor:latest + ghcr.io/marcelruhf/executor-selfhost:latest ``` Or build from a clone of the [repo](https://github.com/UsefulSoftwareCo/executor), @@ -86,7 +86,7 @@ docker run -d \ -p 4788:4788 \ -v executor-data:/data \ -e EXECUTOR_WEB_BASE_URL=https://executor.example.com \ - ghcr.io/marcelruhf/executor:latest + ghcr.io/marcelruhf/executor-selfhost:latest ``` For a headless deploy (CI or infra-as-code), set `EXECUTOR_BOOTSTRAP_ADMIN_EMAIL` diff --git a/apps/docs/hosted/tracing.mdx b/apps/docs/hosted/tracing.mdx index 538d0108d8..8d2f600a9f 100644 --- a/apps/docs/hosted/tracing.mdx +++ b/apps/docs/hosted/tracing.mdx @@ -20,7 +20,7 @@ docker run -d \ -p 4788:4788 \ -v executor-data:/data \ -e OTEL_EXPORTER_OTLP_ENDPOINT=http://collector.local:4318 \ - ghcr.io/marcelruhf/executor:latest + ghcr.io/marcelruhf/executor-selfhost:latest ``` Traces are sent as OTLP over HTTP with a JSON payload, which every collector @@ -79,7 +79,7 @@ docker run -d \ -v executor-data:/data \ --add-host host.docker.internal:host-gateway \ -e OTEL_EXPORTER_OTLP_ENDPOINT=http://host.docker.internal:27686 \ - ghcr.io/marcelruhf/executor:latest + ghcr.io/marcelruhf/executor-selfhost:latest ``` diff --git a/apps/host-selfhost/README.md b/apps/host-selfhost/README.md index 3c9903cdd0..b2b64e715f 100644 --- a/apps/host-selfhost/README.md +++ b/apps/host-selfhost/README.md @@ -14,7 +14,7 @@ docker run -d \ --name executor-selfhost \ -p 4788:4788 \ -v executor-data:/data \ - ghcr.io/marcelruhf/executor:latest + ghcr.io/marcelruhf/executor-selfhost:latest ``` Or build from a repository clone: diff --git a/e2e/setup/selfhost-docker.globalsetup.ts b/e2e/setup/selfhost-docker.globalsetup.ts index be63ab4d88..47a8c89baf 100644 --- a/e2e/setup/selfhost-docker.globalsetup.ts +++ b/e2e/setup/selfhost-docker.globalsetup.ts @@ -1,7 +1,7 @@ // Boot the selfhost-docker target: claim a port, then build + run the // production image (selfhost-docker.boot.ts). Set E2E_SELFHOST_DOCKER_URL to // attach to a running instance, or E2E_SELFHOST_DOCKER_IMAGE to test a -// published image (e.g. ghcr.io//executor:latest) instead of +// published image (e.g. ghcr.io//executor-selfhost:latest) instead of // building from this checkout. import { resolve } from "node:path"; import { fileURLToPath } from "node:url"; From 3b9ffe510cc71d0bfabb792f7f80eb1a28b8fbf5 Mon Sep 17 00:00:00 2001 From: Cursor Agent Date: Mon, 21 Sep 2026 04:15:20 +0000 Subject: [PATCH 3/3] Revert fork-specific documentation edits Leave public docs and RELEASING.md on the upstream image path. This fork PR only changes the publish workflow. Co-authored-by: Marcel Ruhf --- RELEASING.md | 3 +-- apps/docs/hosted/docker.mdx | 4 ++-- apps/docs/hosted/tracing.mdx | 4 ++-- apps/host-selfhost/README.md | 2 +- 4 files changed, 6 insertions(+), 7 deletions(-) diff --git a/RELEASING.md b/RELEASING.md index 1a1701a260..2eedd7ab69 100644 --- a/RELEASING.md +++ b/RELEASING.md @@ -24,8 +24,7 @@ the self-host Docker image. - creates or updates the GitHub release with build artifacts - dispatches `.github/workflows/publish-desktop.yml` - dispatches `.github/workflows/publish-selfhost-docker.yml` -6. The self-host Docker workflow publishes `ghcr.io//executor-selfhost` - (on this fork: `ghcr.io/marcelruhf/executor-selfhost`) +6. The self-host Docker workflow publishes `ghcr.io/usefulsoftwareco/executor-selfhost` for `linux/amd64` and `linux/arm64`: - stable releases get `vX.Y.Z`, `X.Y.Z`, and `latest` - prereleases get `vX.Y.Z-...`, `X.Y.Z-...`, and `beta` diff --git a/apps/docs/hosted/docker.mdx b/apps/docs/hosted/docker.mdx index 810348f827..a5e544cdab 100644 --- a/apps/docs/hosted/docker.mdx +++ b/apps/docs/hosted/docker.mdx @@ -17,7 +17,7 @@ docker run -d \ --name executor-selfhost \ -p 4788:4788 \ -v executor-data:/data \ - ghcr.io/marcelruhf/executor-selfhost:latest + ghcr.io/usefulsoftwareco/executor-selfhost:latest ``` Or build from a clone of the [repo](https://github.com/UsefulSoftwareCo/executor), @@ -86,7 +86,7 @@ docker run -d \ -p 4788:4788 \ -v executor-data:/data \ -e EXECUTOR_WEB_BASE_URL=https://executor.example.com \ - ghcr.io/marcelruhf/executor-selfhost:latest + ghcr.io/usefulsoftwareco/executor-selfhost:latest ``` For a headless deploy (CI or infra-as-code), set `EXECUTOR_BOOTSTRAP_ADMIN_EMAIL` diff --git a/apps/docs/hosted/tracing.mdx b/apps/docs/hosted/tracing.mdx index 8d2f600a9f..09a49db274 100644 --- a/apps/docs/hosted/tracing.mdx +++ b/apps/docs/hosted/tracing.mdx @@ -20,7 +20,7 @@ docker run -d \ -p 4788:4788 \ -v executor-data:/data \ -e OTEL_EXPORTER_OTLP_ENDPOINT=http://collector.local:4318 \ - ghcr.io/marcelruhf/executor-selfhost:latest + ghcr.io/usefulsoftwareco/executor-selfhost:latest ``` Traces are sent as OTLP over HTTP with a JSON payload, which every collector @@ -79,7 +79,7 @@ docker run -d \ -v executor-data:/data \ --add-host host.docker.internal:host-gateway \ -e OTEL_EXPORTER_OTLP_ENDPOINT=http://host.docker.internal:27686 \ - ghcr.io/marcelruhf/executor-selfhost:latest + ghcr.io/usefulsoftwareco/executor-selfhost:latest ``` diff --git a/apps/host-selfhost/README.md b/apps/host-selfhost/README.md index b2b64e715f..1e83cab917 100644 --- a/apps/host-selfhost/README.md +++ b/apps/host-selfhost/README.md @@ -14,7 +14,7 @@ docker run -d \ --name executor-selfhost \ -p 4788:4788 \ -v executor-data:/data \ - ghcr.io/marcelruhf/executor-selfhost:latest + ghcr.io/usefulsoftwareco/executor-selfhost:latest ``` Or build from a repository clone: