Skip to content

ci(ecr): publish seitask-runner image on push to main (PR 8)#291

Merged
bdchatham merged 1 commit into
mainfrom
feat/seinodetask-runner-image-release
May 19, 2026
Merged

ci(ecr): publish seitask-runner image on push to main (PR 8)#291
bdchatham merged 1 commit into
mainfrom
feat/seinodetask-runner-image-release

Conversation

@bdchatham
Copy link
Copy Markdown
Collaborator

@bdchatham bdchatham commented May 19, 2026

Extends .github/workflows/ecr.yml to publish the seitask-runner image alongside the controller on every push to main and on workflow_dispatch.

Workstream

Follow-up to the SeiNodeTask MVP workstream:

Change

One additional docker/build-push-action@v6 step in the existing publish job. Reuses:

  • Same OIDC role assumption
  • Same ECR login
  • Same buildx setup
  • Same shared build-cache (sei/build-cache:shared) — both images contribute layers to one cache target

The only difference from the controller step: file: runner/Dockerfile and the seitask-runner repo tag.

- name: Build and push seitask-runner image
  uses: docker/build-push-action@v6
  with:
    context: .
    file: runner/Dockerfile
    push: true
    platforms: linux/amd64
    tags: ${{ steps.ecr-login.outputs.registry }}/sei/seitask-runner:${{ inputs.tag || github.sha }}
    cache-from: type=registry,ref=${{ steps.ecr-login.outputs.registry }}/sei/build-cache:shared
    cache-to: type=registry,ref=${{ steps.ecr-login.outputs.registry }}/sei/build-cache:shared,mode=max

Also gave the existing controller step an explicit name: for symmetry with the new step.

Tag synchronization

Both images get the same tag per run (<short-sha> or the tag workflow_dispatch input). This means the controller image and the runner image at any given commit are addressable as one logical release pair. If you pin the controller to :abc1234, you pin the runner to :abc1234 too.

Prerequisite

The ECR repository sei/seitask-runner must exist in account 189176372795 before the workflow runs. This is a one-time manual setup; this action does not auto-create repositories. Plan to file the runbook note in the platform docs.

Test plan

  • python3 -c 'import yaml; yaml.safe_load(...)' parses cleanly
  • After merge, watch the next push-to-main run: both build/push steps complete green
  • Confirm the runner image appears in ECR at sei/seitask-runner:<sha> (requires the repo to be pre-created)
  • Once available, update scenarios/README.md Prerequisites item 4 to point to the auto-published image (small follow-up after the first successful publish run)

🤖 Generated with Claude Code

Extends the existing publish job with a second build/push step for the
seitask-runner image. The runner is the orchestration container the
Chaos Mesh Workflows in scenarios/ use to apply SeiNodeTask CRs.

Same job, same OIDC role, same ECR login, same buildx setup, same
shared build cache — only an additional build-push step pointing at
runner/Dockerfile with the seitask-runner repo tag.

Both images get the same tag on each push (`<short-sha>` or the manual
`tag` workflow_dispatch input) so the controller + runner pair is
addressable as one logical release.

Prerequisite: the ECR repository `sei/seitask-runner` must exist in
account 189176372795 before this workflow runs (manual one-time setup;
the action does not auto-create repos). Filing as a separate runbook
note in the platform docs.

After this lands, scenarios/README.md's "runner image not yet
auto-published" prerequisite (item 4) can be flipped to:
  registry/sei/seitask-runner:<sha-of-controller-release>
@cursor
Copy link
Copy Markdown

cursor Bot commented May 19, 2026

You have used all Bugbot PR reviews included in your free trial for your GitHub account on this workspace.

To continue using Bugbot reviews, enable Bugbot for your team in the Cursor dashboard.

@bdchatham bdchatham merged commit e2381fb into main May 19, 2026
2 checks passed
@bdchatham bdchatham deleted the feat/seinodetask-runner-image-release branch May 19, 2026 19:36
bdchatham added a commit that referenced this pull request May 19, 2026
…ilds (#293)

PR #291 added the seitask-runner image to the ECR publish workflow, but
the build fails at:

  COPY --from=builder /workspace/runner/templates /templates
  ERROR: failed to compute cache key: "/workspace/runner/templates": not found

Root cause: .dockerignore is whitelist-style — it ignores everything
(**) and re-includes only *.go, go.mod, go.sum, and *.sh. The
runner/templates/ directory's .yaml.tmpl files were never on the
re-include list because the controller image doesn't need them. The
runner image does — they're baked into /templates/ at build time so
the runner can render per-kind manifests at runtime.

Add `!runner/templates/**` to the re-include list. Confirmed locally:
`docker build -f runner/Dockerfile .` completes successfully.

Same root cause as #287 (CRD generated but missed from
config/crd/kustomization.yaml): a new component lands but the
"what-to-include" list elsewhere doesn't pick it up. Worth filing a
follow-up that lint-checks dockerignore re-includes against the
runner Dockerfile's COPY paths, paralleling the kustomization check
already on the followup list.
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