sqzass.git

sqzass

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

.github/workflows/ci.yml (2896B)

      1 name: CI
      2 
      3 on:
      4   push:
      5     branches: [main]
      6   pull_request:
      7 
      8 env:
      9   CARGO_TERM_COLOR: always
     10 
     11 jobs:
     12   check:
     13     runs-on: ubuntu-latest
     14     steps:
     15       - uses: actions/checkout@v7
     16 
     17       - uses: dtolnay/rust-toolchain@stable
     18         with:
     19           components: rustfmt, clippy
     20 
     21       - uses: Swatinem/rust-cache@v2
     22 
     23       - name: Format
     24         run: cargo fmt --check
     25 
     26       - name: Clippy
     27         run: cargo clippy --all-targets -- -D warnings
     28 
     29       - name: Test
     30         run: cargo test
     31 
     32       # sqzass가 자기 문서 사이트를 빌드할 수 있어야 한다. 이게 회귀 테스트다 —
     33       # 단위 테스트가 놓치는 통합 문제를 실제 사이트가 잡는다.
     34       - name: Build the docs site
     35         run: cargo run --quiet -- build -i docs
     36 
     37       # doctor는 빌드가 통과시키는 것들을 본다 — 미번역 페이지, 빈 섹션, 자리표시자
     38       # base_url. 지금 문서 사이트는 깨끗하고, 그 상태를 유지하는 게 이 검사의 목적이다.
     39       # 동시에 doctor 자체가 실제 사이트에서 도는지 확인하는 자리이기도 하다.
     40       - name: Doctor
     41         run: cargo run --quiet -- doctor -i docs
     42 
     43       # 같은 입력이면 같은 바이트가 나와야 한다. 두 페이지가 같은 출력 URL을
     44       # 주장할 때 파일 순회 순서에 따라 결과가 달라지는 종류의 버그를 잡는다.
     45       - name: Build is reproducible
     46         run: |
     47           cargo run --quiet -- build -i docs -o "$RUNNER_TEMP/a"
     48           cargo run --quiet -- build -i docs -o "$RUNNER_TEMP/b"
     49           diff -r "$RUNNER_TEMP/a" "$RUNNER_TEMP/b"
     50 
     51   # musl 릴리스 아티팩트가 쓰는 pure-rust 엔진 조합이 썩지 않게 지킨다.
     52   # 크로스 엔진 바이트 비교는 하지 않는다 — fancy 덤프에는 문법 7개
     53   # (PowerShell·JS(Babel)·Salt State·ARM Assembly 등)가 통째로 없어서 해당
     54   # 펜스가 평문 폴백이 되고 js 토큰 해석도 갈린다. 아티팩트 간 차이는 버그가
     55   # 아니라 문서화된 계약이다(docs/content/start/installation.md). 결정성은
     56   # 엔진별로 지킨다.
     57   pure-rust:
     58     runs-on: ubuntu-latest
     59     steps:
     60       - uses: actions/checkout@v7
     61 
     62       - uses: dtolnay/rust-toolchain@stable
     63         with:
     64           components: clippy
     65 
     66       - uses: Swatinem/rust-cache@v2
     67         with:
     68           key: pure-rust
     69 
     70       - name: Clippy
     71         run: cargo clippy --all-targets --no-default-features --features pure-rust -- -D warnings
     72 
     73       - name: Test
     74         run: cargo test --no-default-features --features pure-rust
     75 
     76       - name: Build is reproducible
     77         run: |
     78           cargo run --quiet --no-default-features --features pure-rust -- build -i docs -o "$RUNNER_TEMP/a"
     79           cargo run --quiet --no-default-features --features pure-rust -- build -i docs -o "$RUNNER_TEMP/b"
     80           diff -r "$RUNNER_TEMP/a" "$RUNNER_TEMP/b"