sqzass.git

sqzass

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

docs/content/deploy/codeberg-pages.ko.md (2329B)

      1 +++
      2 title = "Codeberg Pages"
      3 description = "pages 브랜치, .domains 파일, 그리고 Forgejo Actions"
      4 weight = 60
      5 toc = true
      6 +++
      7 
      8 Codeberg는 저장소의 `pages` 브랜치를 `https://<사용자>.codeberg.page/<저장소>/`에
      9 서빙합니다. 저장소 이름이 `pages`면 통째로 `https://<사용자>.codeberg.page/`가
     10 됩니다.
     11 
     12 ## CI에서 빌드하기
     13 
     14 ```yaml
     15 # .forgejo/workflows/deploy.yml
     16 on:
     17   push:
     18     branches: [main]
     19 
     20 jobs:
     21   deploy:
     22     runs-on: docker
     23     container:
     24       image: alpine:latest
     25     steps:
     26       - run: apk add --no-cache git nodejs
     27       - uses: actions/checkout@v4
     28       - run: wget -qO- https://github.com/debuman/sqzass/releases/latest/download/sqzass-x86_64-unknown-linux-musl.tar.gz | tar xz --strip-components=1
     29       - run: ./sqzass build
     30       - name: pages 브랜치로 발행
     31         run: |
     32           cd public
     33           git init -q && git add -A
     34           git -c user.email=ci -c user.name=ci commit -qm "Deploy"
     35           git push -f "https://$GITHUB_ACTOR:${{ secrets.PAGES_TOKEN }}@codeberg.org/$GITHUB_REPOSITORY.git" HEAD:pages
     36 ```
     37 
     38 `nodejs`는 Forgejo Actions 러너에 필요한 것이지 sqzass에 필요한 게 아닙니다.
     39 
     40 ## 여기도 서브경로
     41 
     42 저장소 이름이 `pages`가 아니라면 사이트는 `/<저장소>/` 아래에 놓입니다.
     43 
     44 ```toml
     45 base_url = "https://myuser.codeberg.page/myrepo"
     46 ```
     47 
     48 실패 방식은 GitLab과 같습니다. 빌드는 성공하고 모든 링크가 한 단계 위를 가리킵니다.
     49 자세한 설명은 [GitLab Pages](@/deploy/gitlab-ci.md)에 적어 두었습니다.
     50 
     51 ## 커스텀 도메인
     52 
     53 Codeberg는 서빙되는 디렉터리 루트의 `.domains` 파일을 읽습니다. `static/`에 두면
     54 GitHub Pages의 `CNAME`과 마찬가지로 이름이 유지된 채 그대로 나갑니다.
     55 
     56 ```
     57 # static/.domains
     58 example.com
     59 www.example.com
     60 ```
     61 
     62 커스텀 도메인을 쓰면 서브경로가 없으므로 `base_url`은 도메인만 남습니다.
     63 
     64 > [!NOTE]
     65 > `Path::extension()`은 이름 전체가 확장자처럼 생긴 파일에 대해 아무것도 돌려주지
     66 > 않습니다. `.domains`나 `.nojekyll` 같은 파일이 `main.css`와 다른 취급을 받아야
     67 > 하는 이유입니다. sqzass는 이런 파일을 그대로 통과시키고, 이름 전체가 확장자인
     68 > 것에 해시를 붙이려 하지 않습니다.