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 if: github.ref == 'refs/heads/main' env: TOKEN: ${{ secrets.GITHUB_TOKEN }} REPO_URL: ${{ github.server_url }}/${{ github.repository }}.git run: | git config --global user.name "Forgejo Actions" git config --global user.email "actions@localhost" # Clone repository git clone "https://oauth2:${TOKEN}@${REPO_URL#https://}" deploy cd deploy # Checkout or create forgejo-pages git fetch origin forgejo-pages || true if git ls-remote --exit-code --heads origin forgejo-pages >/dev/null 2>&1; then git checkout -B forgejo-pages origin/forgejo-pages else git checkout --orphan forgejo-pages git rm -rf . || true fi # Remove old files find . -mindepth 1 -maxdepth 1 ! -name .git -exec rm -rf {} + # Copy new site cp -a ../docs/. . # Commit and push if changed git add -A if ! git diff --cached --quiet; then git commit -m "Deploy ${GITHUB_SHA}" git push origin forgejo-pages fi