AkurAI Build
Menu

Public repository / d53c783111d245c25ff77026db93902e2d4a155a

AkurAI-EC2 / .github/workflows/deploy.yml

Latest change d53c783111d245c25ff77026db93902e2d4a155a - feat(ci): reusable deploy workflow + self-hosted runner provisioning script by Ólafur Búi Ólafsson

name: AkurAI deploy (reusable)

# Shared release/deploy workflow for the AkurAI fleet. Every app repo calls
# this via `uses: olibuijr/akurai-ec2/.github/workflows/deploy.yml@main`
# instead of re-implementing CI — the actual deploy logic lives in each
# repo's own ./deploy.sh (thin akurai-ec2 shim, a wrapper, or fully bespoke;
# this workflow doesn't care which). Runs on a self-hosted runner on titan
# because deploy needs the SSH key to the EC2 box, the AkurAI secrets vault,
# and the Rust/Bun toolchains already installed there — none of which should
# ever be copied into GitHub-hosted runner secrets.
on:
  workflow_call:
    inputs:
      mode:
        description: "publish (no version bump, ship current HEAD) or release (bump+tag)"
        type: string
        default: publish
      bump:
        description: "patch|minor|major — only used when mode=release"
        type: string
        default: patch
      deploy_args:
        description: "override: exact args passed to ./deploy.sh (advanced/bespoke scripts)"
        type: string
        default: ""

jobs:
  deploy:
    runs-on: [self-hosted, titan, akurai-deploy]
    timeout-minutes: 45
    concurrency:
      group: ${{ github.repository }}-deploy
      cancel-in-progress: false
    steps:
      - uses: actions/checkout@v4
        with:
          fetch-depth: 0

      - name: Run deploy.sh
        run: |
          set -euo pipefail
          if [ -n "${{ inputs.deploy_args }}" ]; then
            exec ./deploy.sh ${{ inputs.deploy_args }}
          elif [ "${{ inputs.mode }}" = "release" ]; then
            exec ./deploy.sh ${{ inputs.bump }}
          else
            exec ./deploy.sh ec2
          fi