name: Build Eleventy on: push: branches: - main paths-ignore: - 'maintenance/**' - 'README.md' pull_request: paths-ignore: - 'maintenance/**' - 'README.md' workflow_dispatch: jobs: build: runs-on: arch-linux steps: - name: Checkout repository uses: actions/checkout@v4 - name: Set up Node.js uses: actions/setup-node@v4 with: node-version: '24' - name: Install dependencies run: npm ci - name: Build site run: npm run build - name: Publish to forgejo-pages branch if: github.ref == 'refs/heads/main' env: TOKEN: ${{ secrets.GITHUB_TOKEN }} run: | git config --global user.name "Forgejo Actions" git config --global user.email "actions@localhost" # Clone target branch git clone \ "https://oauth2:${TOKEN}@${{ github.server_url#https:// }}/${{ github.repository }}.git" \ deploy cd deploy # Switch to forgejo-pages branch, create if missing if git show-ref --verify --quiet refs/heads/forgejo-pages; then git checkout forgejo-pages else git checkout --orphan forgejo-pages git rm -rf . fi # Remove old contents find . -mindepth 1 -maxdepth 1 \ ! -name '.git' \ -exec rm -rf {} + # Copy new build output cp -r ../docs/. . # Commit and push if there are changes git add . if ! git diff --cached --quiet; then git commit -m "Deploy from ${GITHUB_SHA}" git push origin forgejo-pages fi