Files
harmony/.gitea/workflows/harmony-fleet-operator.yaml
Jean-Gabriel Gill-Couture 0b71c1031b
All checks were successful
Run Check Script / check (pull_request) Successful in 2m26s
ci(fleet): release pipeline on tag (minimal)
A `harmony-fleet-operator-v*` tag builds + publishes the operator image
and chart via harmony-fleet-release (tag parsing in Rust, not YAML).
deployment-process.md documents the release + manual `harmony apply` +
roll-forward loop.

Slim variant of ci/fleet-cd-pipeline: release job only. The
staging-auto / prod-gated deploy jobs are deferred to the PR that
provisions cluster credentials, where they can actually run.
2026-05-28 19:40:01 -04:00

52 lines
1.8 KiB
YAML

name: harmony-fleet-operator — release
# A `harmony-fleet-operator-v*` tag builds + publishes the operator image
# and helm chart (one tag → both at the same version). Deploying the
# published chart is `harmony apply`
# (harmony-fleet-deploy --operator-chart-version), run manually today; a
# CD job lands once the cluster KUBECONFIG + NATS secrets are provisioned.
# Tag parsing lives in Rust (harmony-fleet-release), not in YAML.
on:
push:
tags:
- 'harmony-fleet-operator-v*'
workflow_dispatch:
inputs:
tag:
description: 'Release tag, e.g. harmony-fleet-operator-v0.1.0'
required: true
type: string
jobs:
release:
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 (docker)
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
# TODO: bake helm into harmony_composer so this step disappears.
- name: Install helm
run: curl -fsSL https://raw.githubusercontent.com/helm/helm/main/scripts/get-helm-3 | bash
- name: Log in to hub.nationtech.io (helm OCI)
run: |
echo "${{ secrets.HUB_BOT_PASSWORD }}" \
| helm registry login hub.nationtech.io \
--username "${{ secrets.HUB_BOT_USER }}" --password-stdin
- name: Build + push image and chart
env:
TAG: ${{ inputs.tag || github.ref_name }}
run: cargo run --release -p harmony-fleet-deploy --bin harmony-fleet-release -- --from-tag "$TAG"