Mirrors .gitea/workflows/harmony_composer.yaml: on push to master (or manual dispatch), build the multi-stage Dockerfile and push hub.nationtech.io/harmony/harmony-fleet-operator:latest. No buildx caching yet — TODO comment in the workflow tracks it. Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
45 lines
1.5 KiB
YAML
45 lines
1.5 KiB
YAML
name: Build and push harmony-fleet-operator image
|
|
on:
|
|
push:
|
|
branches:
|
|
- master
|
|
workflow_dispatch:
|
|
|
|
jobs:
|
|
build_and_push:
|
|
container:
|
|
image: hub.nationtech.io/harmony/harmony_composer:latest
|
|
runs-on: dind
|
|
steps:
|
|
- name: Checkout code
|
|
uses: actions/checkout@v4
|
|
|
|
- name: Log in to hub.nationtech.io
|
|
uses: docker/login-action@v3
|
|
with:
|
|
registry: hub.nationtech.io
|
|
username: ${{ secrets.HUB_BOT_USER }}
|
|
password: ${{ secrets.HUB_BOT_PASSWORD }}
|
|
|
|
- name: Set up Docker Buildx
|
|
uses: docker/setup-buildx-action@v3
|
|
|
|
# Build context is the workspace root because the operator's
|
|
# Cargo.toml has `path = "../../harmony"` deps. The multi-stage
|
|
# Dockerfile runs `cargo build` itself inside a pinned rust
|
|
# image, so no host-side cargo step is needed.
|
|
#
|
|
# TODO: add buildx layer caching. Each run currently recompiles
|
|
# the whole `harmony` workspace from scratch in the builder
|
|
# stage. Add `cache-from: type=gha` + `cache-to: type=gha,mode=max`
|
|
# below once build time becomes the bottleneck. If layer cache
|
|
# alone isn't enough, consider splitting the Dockerfile with
|
|
# cargo-chef (no other crate in this repo does that yet).
|
|
- name: Build and push
|
|
uses: docker/build-push-action@v6
|
|
with:
|
|
context: .
|
|
file: fleet/harmony-fleet-operator/Dockerfile
|
|
push: true
|
|
tags: hub.nationtech.io/harmony/harmony-fleet-operator:latest
|