sqzass.git

sqzass

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

docs/content/deploy/gitlab-ci.ko.md (2030B)

      1 +++
      2 title = "GitLab Pages"
      3 description = ".gitlab-ci.yml 하나, 그리고 사람들이 걸려 넘어지는 서브경로"
      4 weight = 50
      5 toc = true
      6 +++
      7 
      8 ```yaml
      9 # .gitlab-ci.yml
     10 pages:
     11   image: alpine:latest
     12   script:
     13     - wget -qO- https://github.com/debuman/sqzass/releases/latest/download/sqzass-x86_64-unknown-linux-musl.tar.gz | tar xz --strip-components=1
     14     - ./sqzass build
     15   artifacts:
     16     paths: [public]
     17   rules:
     18     - if: $CI_COMMIT_BRANCH == $CI_DEFAULT_BRANCH
     19 ```
     20 
     21 `alpine`이 되는 건 릴리스가 정적 링크이기 때문입니다. 그 이미지엔 glibc가 없고,
     22 여기엔 glibc가 필요한 게 없습니다. 잡 이름이 `pages`이고 아티팩트 디렉터리가
     23 `public`인 건 GitLab이 정확히 그 두 이름을 찾기 때문입니다.
     24 
     25 ## 서브경로
     26 
     27 커스텀 도메인을 걸지 않았다면 GitLab 프로젝트 사이트는
     28 `https://<그룹>.gitlab.io/<프로젝트>/`에서 서빙됩니다. 그 경로가 `base_url`에
     29 들어가야 합니다.
     30 
     31 ```toml
     32 base_url = "https://mygroup.gitlab.io/myproject"
     33 ```
     34 
     35 그러면 sqzass가 생성하는 모든 URL 앞에 `/myproject`가 붙습니다 — 링크도,
     36 스타일시트 href도, 검색 색인 위치도 전부. 출력 디렉터리는 그대로 평평하게 남는데,
     37 그 디렉터리가 곧 GitLab이 서빙하는 루트이기 때문입니다.
     38 
     39 이걸 틀리면 요란하지 않고 조용합니다. 빌드는 되고 페이지도 생기는데, 모든 링크와
     40 스타일시트가 한 단계 위를 가리켜서 404와 스타일 없는 페이지가 나옵니다. 빌드는
     41 성공했다고 보고한 채로요.
     42 
     43 사용자/그룹 사이트(`<그룹>.gitlab.io`)에는 경로가 없으므로 `base_url`은 도메인뿐입니다.
     44 
     45 ## 머지 리퀘스트 프리뷰
     46 
     47 ```yaml
     48 pages:
     49   # …
     50   script:
     51     - wget -qO- … | tar xz --strip-components=1
     52     - ./sqzass build --base-url "$CI_PAGES_URL"
     53 ```
     54 
     55 `$CI_PAGES_URL`에 이미 프로젝트 경로가 들어 있으므로, 서브경로를 두 번 적지 않는
     56 가장 짧은 방법이기도 합니다.