feat: Split CI/CD into three focused workflows

Replaced the monolithic pipeline with three dedicated workflows: ci.yml
(build on every push), cd.yml (manual deploy to staging or prod), and
nightly.yml (scheduled build and deploy). This makes it easier to trigger
deploys independently of builds and to diagnose failures.
This commit is contained in:
Matthew Binning 2026-03-26 14:11:59 -07:00
parent cf84d5f783
commit e54ca3de89
4 changed files with 75 additions and 22 deletions

25
.forgejo/workflows/cd.yml Normal file
View file

@ -0,0 +1,25 @@
name: CD
on:
workflow_dispatch:
inputs:
target:
description: "Deployment target"
required: true
type: choice
options:
- local
- staging
- prod
jobs:
deploy:
runs-on: self-hosted
steps:
- name: Download artifact
uses: actions/download-artifact@v3
with:
name: site-${{ github.sha }}
path: blog/
- name: Deploy
run: nix shell nixpkgs#rsync --command ./deploy.sh ${{ inputs.target }}

19
.forgejo/workflows/ci.yml Normal file
View file

@ -0,0 +1,19 @@
name: CI
on:
push:
pull_request:
jobs:
build:
runs-on: self-hosted
steps:
- uses: actions/checkout@v4
- name: Build
run: nix shell nixpkgs#mdbook --command ./deploy.sh build
- name: Upload artifact
uses: actions/upload-artifact@v3
with:
name: site-${{ github.sha }}
path: blog/

View file

@ -1,22 +0,0 @@
name: Build and Deploy
on:
push:
branches:
- master
- develop
schedule:
- cron: '0 2 * * *'
jobs:
deploy:
runs-on: self-hosted
steps:
- name: Checkout
uses: actions/checkout@v4
- name: Build
run: nix shell nixpkgs#mdbook --command ./deploy.sh build
- name: Deploy
run: nix shell nixpkgs#rsync --command ./deploy.sh local

View file

@ -0,0 +1,31 @@
name: Nightly
on:
schedule:
- cron: '0 2 * * *'
jobs:
build:
runs-on: self-hosted
steps:
- uses: actions/checkout@v4
- name: Build
run: nix shell nixpkgs#mdbook --command ./deploy.sh build
- name: Upload artifact
uses: actions/upload-artifact@v3
with:
name: site-${{ github.sha }}
path: blog/
deploy:
needs: build
runs-on: self-hosted
steps:
- name: Download artifact
uses: actions/download-artifact@v3
with:
name: site-${{ github.sha }}
path: blog/
- name: Deploy
run: nix shell nixpkgs#rsync --command ./deploy.sh local