Now the private content is stored as a git submodule. This means I can keep that repo's source private, but still use it in the build product. The build product (website) relies on HTTP basic authentication, so access control is maintained throughout the SDLC.
35 lines
No EOL
1,007 B
YAML
35 lines
No EOL
1,007 B
YAML
name: CI
|
|
|
|
on:
|
|
push:
|
|
|
|
jobs:
|
|
build:
|
|
runs-on: self-hosted
|
|
steps:
|
|
- uses: actions/checkout@v4
|
|
with:
|
|
submodules: false
|
|
- name: Build
|
|
run: |
|
|
git config --global url."https://oauth2:${{ secrets.WWW_PRIVATE_TOKEN }}@forgejo.binning.net/".insteadOf "https://forgejo.binning.net/"
|
|
git submodule update --init --depth=1
|
|
nix shell nixpkgs#mdbook --command mdbook build
|
|
printf "✓ Build complete!\n"
|
|
- name: Upload artifact
|
|
uses: actions/upload-artifact@v3
|
|
with:
|
|
name: blog-${{ github.sha }}
|
|
path: book/
|
|
deploy:
|
|
runs-on: self-hosted
|
|
steps:
|
|
- name: Download artifact
|
|
uses: actions/download-artifact@v3
|
|
with:
|
|
name: blog-${{ github.sha }}
|
|
path: book/
|
|
- name: Deploy
|
|
run: |
|
|
nix shell nixpkgs#rsync --command rsync -av --delete book/ /srv/www/binning.net/
|
|
printf "✓ Local deployment complete!\n" |