Skip to content

Publish releases within the organization only - #2

Merged
ru-sh merged 2 commits into
mainfrom
ci/internal-publishing
Sep 18, 2026
Merged

ru-sh merged 2 commits into
mainfrom
ci/internal-publishing

Conversation

@ru-sh

@ru-sh ru-sh commented Sep 18, 2026

Copy link
Copy Markdown

CI still published this fork to upstream's channels, and the release jobs built
from upstream's artifacts. This keeps everything inside the organization.

Removed

  • npm — published to registry.npmjs.org as the unscoped code-server
    with NPM_TOKEN.
  • AUR — force-pushed cdrci/code-server-aur and opened a PR on
    coder/code-server-aur.
  • Docker Hub — pushed docker.io/codercom/code-server alongside
    ghcr.io/coder/code-server.
  • codecov — uploaded coverage to a third party; .github/codecov.yml goes
    with it.
  • Helm-chart and Code-update PRs opened against coder/code-server; the
    cdrci / opensource@coder.com identity; the announcement discussion in the
    release workflow, which is an upstream convention and fails where Discussions
    are not enabled.
  • publish:npm, which pointed at a ci/steps/publish-npm.sh that does not
    exist.

Worth a look

Both publish jobs downloaded their release assets from coder/code-server
rather than this repository, so publishing would have shipped upstream's build
under this organization's name, without the patches this fork carries. They now
read this repository's own release.

Added

  • The image is published to ghcr.io/motuslabs/code-server, derived from
    $GITHUB_REPOSITORY so it follows the repo rather than being hardcoded.
    DOCKER_REGISTRY now defaults to empty in docker-bake.hcl, and gen_tags
    generates nothing for an empty registry, so a Docker Hub tag cannot be
    produced by accident.
  • install.sh takes its source repository from a single REPO variable
    defaulting to MotusLabs/code-server, the Docker build reads this
    repository's release, and the Helm chart points at the GHCR image. Package
    metadata in the published .deb/.rpm and the built app's reportIssueUrl
    name this organization.
  • The nightly Trivy scan now scans the image this organization publishes
    instead of upstream's Docker Hub image.
  • docs/MAINTAINING.md, docs/install.md and docs/helm.md updated, including
    the docker login ghcr.io step consumers need.

Follow-ups not in this PR

  • src/node/routes/index.ts:62 still checks
    api.github.com/repos/coder/code-server/releases/latest for updates, so
    deployments are told about upstream's releases. Product code, not CI.
  • ci/build/nfpm.yaml still names an upstream maintainer in every package;
    needs a real contact address.
  • install.sh npm/brew/AUR paths (Alpine, FreeBSD, Arch, macOS with brew, and
    every i386 fallback) still install upstream's build. Removing them means
    rewriting the bats tests.
  • .github/CODEOWNERS assigns * @coder/code-server, a team that does not
    exist here, so reviewer assignment fails silently.

Repo secrets now unused: NPM_TOKEN, DOCKER_USERNAME, DOCKER_PASSWORD,
HOMEBREW_GITHUB_API_TOKEN, CODECOV_TOKEN.

Testing

actionlint, shellcheck (npm run lint:scripts), prettier --check and the
34 bats script tests all pass; doctoc regenerated with no drift.

@ru-sh
ru-sh force-pushed the ci/internal-publishing branch from 9ff15a6 to b05332b Compare September 18, 2026 06:31
Nothing in CI pushes outside MotusLabs any more. The npm and AUR jobs are
gone, the Docker job pushes to this repository's ghcr.io namespace instead
of Docker Hub and ghcr.io/coder, and the codecov upload no longer sends
coverage to a third party. The update and helm-chart PRs open against this
repository rather than upstream.

Both publish jobs also downloaded their release assets from coder/code-server,
so publishing would have shipped upstream's build under this organization's
name. They now read this repository's own release.

install.sh, the Docker build and the Helm chart all follow, so what they
install is this fork's build, patches included.
With nothing published yet, the latest URL redirects to the releases index
rather than a tag, so the prefix strip left the version as a URL and the
installer built a download URL out of it, ending in a 404 nobody could read.

Upstream never hit this because it always has a release to find.
@ru-sh
ru-sh force-pushed the ci/internal-publishing branch from 925db91 to 03e2ed9 Compare September 18, 2026 06:58
@ru-sh
ru-sh merged commit 8156d23 into main Sep 18, 2026
14 of 21 checks passed
@ru-sh
ru-sh deleted the ci/internal-publishing branch September 22, 2026 06:26
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant