All checks were successful
Deploy to K8s / deploy (push) Successful in 12s
After a successful Go image build, uh-cli opens a PR against kacerr/home-kubernetes that bumps the fuj-management Deployment (namespace fuj) to the newly published image tag. Supports workflow_run auto-trigger and workflow_dispatch with dry-run option. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
95 lines
3.2 KiB
YAML
95 lines
3.2 KiB
YAML
name: GitOps image update
|
|
|
|
on:
|
|
# Auto-fires when "Build and Push" completes successfully (tag push).
|
|
workflow_run:
|
|
workflows: ["Build and Push"]
|
|
types: [completed]
|
|
|
|
# Manual trigger for dry-runs and one-off bumps.
|
|
workflow_dispatch:
|
|
inputs:
|
|
tag:
|
|
description: "Git tag to deploy (without the -go suffix, e.g. 0.37)"
|
|
required: true
|
|
dry_run:
|
|
description: "Dry run — print diff, do not open a PR"
|
|
type: boolean
|
|
default: false
|
|
uh_cli_version:
|
|
description: "uh-cli version override (e.g. v0.2.0). Defaults to v0.1.0."
|
|
required: false
|
|
|
|
env:
|
|
TEA_VERSION: "0.9.2"
|
|
# Resolved priority: manual input → repo/org variable → hardcoded default.
|
|
UH_CLI_VERSION: ${{ inputs.uh_cli_version || vars.UH_CLI_VERSION || 'v0.1.0' }}
|
|
|
|
jobs:
|
|
gitops-pr:
|
|
runs-on: ubuntu-latest
|
|
# Skip if triggered by workflow_run that did not succeed.
|
|
if: >
|
|
github.event_name == 'workflow_dispatch' ||
|
|
github.event.workflow_run.conclusion == 'success'
|
|
container:
|
|
image: ubuntu:latest
|
|
|
|
env:
|
|
GITEA_TOKEN: ${{ secrets.GITOPS_TOKEN }}
|
|
|
|
steps:
|
|
- name: Install git, curl, ca-certificates
|
|
run: |
|
|
apt-get update -qq
|
|
apt-get install -y --no-install-recommends git curl ca-certificates
|
|
|
|
- name: Install tea
|
|
run: |
|
|
curl -fsSL \
|
|
"https://gitea.com/gitea/tea/releases/download/v${TEA_VERSION}/tea-${TEA_VERSION}-linux-amd64" \
|
|
-o /usr/local/bin/tea
|
|
chmod +x /usr/local/bin/tea
|
|
|
|
- name: Install uh-cli
|
|
run: |
|
|
curl -fsSL \
|
|
"https://gitea.home.hrajfrisbee.cz/kacerr/uh-cli/releases/download/${UH_CLI_VERSION}/uh-cli-${UH_CLI_VERSION}-linux-amd64" \
|
|
-o /usr/local/bin/uh-cli
|
|
chmod +x /usr/local/bin/uh-cli
|
|
|
|
- name: Resolve image tag
|
|
id: resolve
|
|
run: |
|
|
if [ "${{ github.event_name }}" = "workflow_dispatch" ]; then
|
|
GIT_TAG="${{ inputs.tag }}"
|
|
else
|
|
# workflow_run: use the ref name of the triggering workflow (the pushed git tag).
|
|
GIT_TAG="${{ github.event.workflow_run.head_branch }}"
|
|
fi
|
|
IMAGE="gitea.home.hrajfrisbee.cz/${{ github.repository }}:${GIT_TAG}-go"
|
|
echo "image=${IMAGE}" >> "$GITHUB_OUTPUT"
|
|
echo "Resolved image: ${IMAGE}"
|
|
|
|
- name: Configure git identity
|
|
run: |
|
|
git config --global user.name "uh-cli bot"
|
|
git config --global user.email "bot@hrajfrisbee.cz"
|
|
|
|
- name: Authenticate tea
|
|
run: |
|
|
tea login add \
|
|
--name ci \
|
|
--url https://gitea.home.hrajfrisbee.cz \
|
|
--token "$GITEA_TOKEN"
|
|
|
|
- name: Open image-update PR (or dry run)
|
|
run: |
|
|
uh-cli -v gitops deployment update \
|
|
--deployment-name fuj-management \
|
|
--deployment-namespace fuj \
|
|
--set-image "${{ steps.resolve.outputs.image }}" \
|
|
--git-repo "https://kacerr:${GITEA_TOKEN}@gitea.home.hrajfrisbee.cz/kacerr/home-kubernetes" \
|
|
--git-path gitops/home-kubernetes \
|
|
${{ (github.event_name == 'workflow_dispatch' && inputs.dry_run == 'true') && '--dry-run' || '' }}
|