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