Files
esh-pfi-infrastructure/stacks/task-board/gitea-workflow-deploy.yaml.example
T
vh f44a1d1c02 ci/task-board: drop explicit container, inherit runner default
Runner is now re-registered with `:docker://node:20-bookworm-slim`
schema in its labels, so workflows targeting `pfi-fleet` get that
image automatically. Saves a few lines per workflow and gives us one
place (the runner config) to bump the default image when a new
node/debian release lands.
2026-04-29 18:49:35 -07:00

90 lines
3.4 KiB
Plaintext

# Gitea Actions workflow for task-board.
#
# THIS FILE LIVES IN THE TASK-BOARD REPO, NOT HERE.
# Copy to vh/task-board:.gitea/workflows/deploy.yaml and commit.
#
# What it does on every push to main (and on manual workflow_dispatch):
# 1. Checks out task-board itself (the triggering repo).
# 2. Checks out vh/esh-pfi-infrastructure to pick up the elway
# playbook and helper scripts.
# 3. Configures SSH so elway can reach ana-docker.
# 4. Runs `scripts/elway ana-docker --playbook playbooks/deploy-task-board.yaml`
# pinning to the commit SHA that triggered the workflow.
#
# Required Actions secrets (configure under
# https://gitea.phasefinal.com/vh/task-board/settings/actions/secrets,
# or org-level for reuse across repos):
#
# DEPLOY_SSH_KEY Private SSH key whose pubkey is in
# ~lkraven/.ssh/authorized_keys on ana-docker.
# Used by the runner to invoke the elway playbook.
# Generate fresh; don't reuse a personal key.
#
# MGMT_REPO_TOKEN Gitea PAT (read:repository scope) on
# vh/esh-pfi-infrastructure, used to clone the
# management repo. Generate at
# https://gitea.phasefinal.com/-/user/settings/applications.
name: Deploy task-board
on:
push:
branches: [main]
workflow_dispatch:
jobs:
deploy:
# `pfi-fleet` matches the central runner on ana-docker. Pin to
# `ana-docker` instead if you want to refuse running on a future
# site-local runner. The runner's label embeds a default image
# (node:20-bookworm-slim) — has node + git out of the box, so
# actions/checkout@v4 (a JS action) works without a custom
# container. We just apt-install python3 + pyyaml for elway.
runs-on: pfi-fleet
steps:
- name: Install playbook prerequisites
run: |
apt-get update -qq
apt-get install -y --no-install-recommends \
python3 python3-yaml openssh-client
rm -rf /var/lib/apt/lists/*
- name: Checkout task-board (triggering repo)
uses: actions/checkout@v4
- name: Checkout management repo (eshpfi-management)
uses: actions/checkout@v4
with:
repository: vh/esh-pfi-infrastructure
token: ${{ secrets.MGMT_REPO_TOKEN }}
path: _mgmt
- name: Configure SSH to ana-docker
run: |
mkdir -p ~/.ssh
# The DEPLOY_SSH_KEY secret is the full private key contents,
# newline-terminated. ssh refuses keys that aren't 0600.
printf '%s\n' "${{ secrets.DEPLOY_SSH_KEY }}" > ~/.ssh/id_ed25519
chmod 600 ~/.ssh/id_ed25519
# ssh_config alias so elway resolves "ana-docker" the same
# way it would on a workstation. accept-new is fine for a
# fresh job container — host key gets cached for the lifetime
# of this job only.
cat > ~/.ssh/config <<'EOF'
Host ana-docker
HostName 10.250.50.70
User lkraven
IdentityFile ~/.ssh/id_ed25519
StrictHostKeyChecking accept-new
EOF
chmod 600 ~/.ssh/config
- name: Deploy task-board (elway playbook, pinned to this commit)
working-directory: _mgmt
run: |
scripts/elway ana-docker \
--playbook playbooks/deploy-task-board.yaml \
--var ref=${{ github.sha }}