sqzass.git

sqzass

~ A static site generator written in Rust
git clone https://github.com/debuman/sqzass.git

.github/workflows/pages.yml (2138B)

      1 name: Deploy docs
      2 
      3 on:
      4   push:
      5     branches: [main]
      6   workflow_dispatch:
      7 
      8 permissions:
      9   contents: read
     10   pages: write
     11   id-token: write
     12 
     13 # 배포는 직렬로. 진행 중인 배포를 취소하면 사이트가 반쯤 갱신된 상태로 남을 수 있다.
     14 concurrency:
     15   group: pages
     16   cancel-in-progress: false
     17 
     18 env:
     19   CARGO_TERM_COLOR: always
     20 
     21 jobs:
     22   build:
     23     runs-on: ubuntu-latest
     24     steps:
     25       - uses: actions/checkout@v7
     26 
     27       - uses: dtolnay/rust-toolchain@stable
     28 
     29       - uses: Swatinem/rust-cache@v2
     30 
     31       - uses: actions/configure-pages@v6
     32 
     33       - name: Build the site
     34         run: cargo run --quiet -- build -i docs
     35 
     36       # docs/static/ 아래 파일은 sqzass가 직접 출력에 넣는다. CNAME은 이름이 곧
     37       # 계약이므로 콘텐츠 해시를 붙이지 않는다.
     38       - name: Check the custom domain made it into the output
     39         run: test -f docs/public/CNAME && cat docs/public/CNAME
     40 
     41       - uses: actions/upload-pages-artifact@v5
     42         with:
     43           path: docs/public
     44 
     45   deploy:
     46     needs: build
     47     runs-on: ubuntu-latest
     48     environment:
     49       name: github-pages
     50       url: ${{ steps.deployment.outputs.page_url || steps.retry.outputs.page_url }}
     51     steps:
     52       # 위의 concurrency는 **워크플로 실행**을 직렬화한다. Pages 배포는 그보다 오래
     53       # 산다 — 앞선 실행이 끝난 뒤에도 GitHub 쪽에서 처리 중일 수 있고, 그 창에
     54       # 들어가면 400 "due to in progress deployment"로 죽는다. 커밋을 연달아 밀면
     55       # 실제로 걸린다.
     56       #
     57       # 앞선 배포는 어차피 곧 끝나므로, 기다렸다 한 번 더 시도하면 된다. 배포가
     58       # 상태를 바꾸기 전에 실패하는 것이라 재시도가 사이트를 반쯤 갱신된 상태로
     59       # 만들지 않는다.
     60       - id: deployment
     61         uses: actions/deploy-pages@v5
     62         continue-on-error: true
     63 
     64       - name: Wait for the previous deployment to settle
     65         if: steps.deployment.outcome == 'failure'
     66         run: sleep 90
     67 
     68       - id: retry
     69         if: steps.deployment.outcome == 'failure'
     70         uses: actions/deploy-pages@v5