下面的例子演示了直接从action deploy到github page的工作流,cf. https://github.com/DefenderOfBasic/obsidian-quartz-template/blob/main/.github/workflows/ci.yaml

name: Build and Test
 
on:
  push:
    branches: ["main"]
  workflow_dispatch:
 
jobs:
  build-and-test:
    runs-on: ubuntu-latest
    permissions:
      contents: write
    steps:
      - uses: actions/checkout@v4
        with:
          fetch-depth: 0
 
      - name: Setup Node
        uses: actions/setup-node@v4
        with:
          node-version: 20
 
      - name: Cache dependencies
        uses: actions/cache@v4
        with:
          path: ~/.npm
          key: ${{ runner.os }}-node-${{ hashFiles('**/package-lock.json') }}
          restore-keys: |
            ${{ runner.os }}-node-
 
      - run: npm install
        working-directory: ./source
 
      - name: chmod
        run: chmod +x ./quartz/bootstrap-cli.mjs
        working-directory: ./source
 
      - name: Ensure Quartz builds
        run: npx quartz build --bundleInfo
        working-directory: ./source
 
  deploy:
    needs: build-and-test
    permissions:
      contents: read
      pages: write
      id-token: write
    environment:
      name: github-pages
      url: ${{ steps.deployment.outputs.page_url }}
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v4
        with:
          fetch-depth: 0
 
      - name: Setup Node
        uses: actions/setup-node@v4
        with:
          node-version: 20
 
      - name: Build Quartz
        run: |
          npm install
          npx quartz build
        working-directory: ./source
 
      - name: Copy raw HTML folder
        run: |
          ls -la
          cp -r raw_html/* public/ || true
          echo "Contents of public directory:"
          ls -la public/
        working-directory: ./source
 
      - name: Setup GitHub Pages
        uses: actions/configure-pages@v4
 
      - name: Upload GitHub Pages artifact
        uses: actions/upload-pages-artifact@v3
        with:
          path: ./source/public
          retention-days: 1
 
      - name: Deploy to GitHub Pages
        id: deployment
        uses: actions/deploy-pages@v4