62 lines
2.0 KiB
YAML
62 lines
2.0 KiB
YAML
name: Build Notes Site
|
||
|
||
on:
|
||
push:
|
||
branches: [ main ]
|
||
|
||
jobs:
|
||
build:
|
||
runs-on: ubuntu-latest
|
||
container:
|
||
image: node:20-bookworm # Node for checkout
|
||
|
||
steps:
|
||
# 1️⃣ Checkout repository
|
||
- uses: actions/checkout@v4
|
||
|
||
# 2️⃣ Install Python for MkDocs build
|
||
- name: Install Python
|
||
run: |
|
||
apt-get update
|
||
apt-get install -y python3 python3-venv python3-pip
|
||
|
||
# 3️⃣ List repo files (debug)
|
||
- name: List repo files
|
||
run: ls -R "${{ github.workspace }}"
|
||
|
||
# 4️⃣ Build MkDocs site locally
|
||
- name: Build MkDocs site
|
||
run: |
|
||
python3 -m venv .venv
|
||
.venv/bin/pip install --upgrade pip
|
||
.venv/bin/pip install -r ci/mkdocs/requirements.txt
|
||
.venv/bin/mkdocs build --clean --site-dir site_output
|
||
|
||
# 5️⃣ Install Docker CLI so we can copy to volume
|
||
- name: Install Docker CLI
|
||
run: |
|
||
apt-get update
|
||
apt-get install -y ca-certificates curl gnupg lsb-release
|
||
install -m 0755 -d /etc/apt/keyrings
|
||
curl -fsSL https://download.docker.com/linux/debian/gpg | gpg --dearmor -o /etc/apt/keyrings/docker.gpg
|
||
chmod a+r /etc/apt/keyrings/docker.gpg
|
||
echo \
|
||
"deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.gpg] \
|
||
https://download.docker.com/linux/debian $(lsb_release -cs) stable" | \
|
||
tee /etc/apt/sources.list.d/docker.list > /dev/null
|
||
apt-get update
|
||
apt-get install -y docker-ce-cli
|
||
|
||
# 6️⃣ Copy the site output into notes_public Docker volume
|
||
- name: Copy site to notes_public volume
|
||
run: |
|
||
docker run --rm \
|
||
-v notes_public:/public \
|
||
-v "${{ github.workspace }}/site_output:/tmp/site" \
|
||
alpine sh -c "cp -r /tmp/site/* /public/"
|
||
|
||
# 7️⃣ Optional: Verify files in volume
|
||
- name: List notes_public volume
|
||
run: |
|
||
docker run --rm -v notes_public:/data alpine ls -la /data
|