build-docker-image

Trigger Docker image builds for Hyperlane agent, monorepo, or node service images. Use when the user wants to build new Docker images for a branch, commit, or tag.

SKILL.md

GitHub

Trigger Docker Image Builds

Build and publish Docker images to GHCR (ghcr.io/hyperlane-xyz/*).

Workflows

Workflow Image(s) Contents
rust-docker.yml hyperlane-agent Rust relayer, validator, scraper
monorepo-docker.yml hyperlane-monorepo Full TS/Solidity monorepo
node-services-docker.yml hyperlane-node-services All TS node services (rebalancer, warp-monitor, ccip-server, keyfunder, relayer)

How to Trigger

Use gh workflow run with --ref to specify the branch, tag, or commit:

# Agent image (Rust)
gh workflow run rust-docker.yml --ref <branch>

# Monorepo image
gh workflow run monorepo-docker.yml --ref <branch>

# Node services (single unified image)
gh workflow run node-services-docker.yml --ref <branch>

# Include arm64 (multi-arch, slower)
gh workflow run rust-docker.yml --ref <branch> -f include_arm64=true

--ref defaults to main if omitted.

After Triggering

  1. Get the run URL:

    gh run list --workflow=<workflow>.yml --limit=1 --json url --jq '.[].url'
    
  2. Get the run ID (wait a few seconds after triggering for the run to appear):

    gh run list --workflow=<workflow>.yml --limit=1 --json databaseId,status,createdAt --jq '.[0]'
    
  3. Watch it:

    gh run watch <run-id>
    
  4. The resulting image tag will be <7-char-sha>-<YYYYMMDD>-<HHMMSS>, e.g. c558a9f-20260304-105241.

  5. Images are at ghcr.io/hyperlane-xyz/<image-name>:<tag>.

Instructions

  1. Ask the user which image(s) they want to build (agent, monorepo, node services, or all).
  2. Ask which branch/ref (default: main).
  3. Ask if arm64 is needed (default: no).
  4. Trigger the workflow(s) with gh workflow run.
  5. Fetch and report the run URL(s) using gh run list.
  6. Optionally watch for completion if the user wants to wait.

References

  • To find existing images instead of building, use the /find-docker-image skill.
  • See docs/docker-image-policy.md for the full Docker image policy.