From f06f63277ffcc252a58b3f1c558afaff8e5cc791 Mon Sep 17 00:00:00 2001 From: Matthew Binning Date: Thu, 26 Mar 2026 14:11:59 -0700 Subject: [PATCH] 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. --- .forgejo/workflows/cd.yml | 25 +++++++++++++++++++++++++ .forgejo/workflows/ci.yml | 19 +++++++++++++++++++ .forgejo/workflows/deploy.yaml | 22 ---------------------- .forgejo/workflows/nightly.yml | 31 +++++++++++++++++++++++++++++++ 4 files changed, 75 insertions(+), 22 deletions(-) create mode 100644 .forgejo/workflows/cd.yml create mode 100644 .forgejo/workflows/ci.yml delete mode 100644 .forgejo/workflows/deploy.yaml create mode 100644 .forgejo/workflows/nightly.yml diff --git a/.forgejo/workflows/cd.yml b/.forgejo/workflows/cd.yml new file mode 100644 index 0000000..fa7c6bf --- /dev/null +++ b/.forgejo/workflows/cd.yml @@ -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 }} diff --git a/.forgejo/workflows/ci.yml b/.forgejo/workflows/ci.yml new file mode 100644 index 0000000..602d613 --- /dev/null +++ b/.forgejo/workflows/ci.yml @@ -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/ + diff --git a/.forgejo/workflows/deploy.yaml b/.forgejo/workflows/deploy.yaml deleted file mode 100644 index 47c150a..0000000 --- a/.forgejo/workflows/deploy.yaml +++ /dev/null @@ -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 diff --git a/.forgejo/workflows/nightly.yml b/.forgejo/workflows/nightly.yml new file mode 100644 index 0000000..d898689 --- /dev/null +++ b/.forgejo/workflows/nightly.yml @@ -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