sqzass
English

Codeberg Pages

pages 브랜치, .domains 파일, 그리고 Forgejo Actions

Codeberg는 저장소의 pages 브랜치를 https://<사용자>.codeberg.page/<저장소>/에 서빙합니다. 저장소 이름이 pages면 통째로 https://<사용자>.codeberg.page/가 됩니다.

CI에서 빌드하기

# .forgejo/workflows/deploy.yml
on:
  push:
    branches: [main]

jobs:
  deploy:
    runs-on: docker
    container:
      image: alpine:latest
    steps:
      - run: apk add --no-cache git nodejs
      - uses: actions/checkout@v4
      - run: wget -qO- https://github.com/sqzer-x/sqzass/releases/latest/download/sqzass-x86_64-unknown-linux-musl.tar.gz | tar xz --strip-components=1
      - run: ./sqzass build
      - name: pages 브랜치로 발행
        run: |
          cd public
          git init -q && git add -A
          git -c user.email=ci -c user.name=ci commit -qm "Deploy"
          git push -f "https://$GITHUB_ACTOR:${{ secrets.PAGES_TOKEN }}@codeberg.org/$GITHUB_REPOSITORY.git" HEAD:pages

nodejs는 Forgejo Actions 러너에 필요한 것이지 sqzass에 필요한 게 아닙니다.

여기도 서브경로

저장소 이름이 pages가 아니라면 사이트는 /<저장소>/ 아래에 놓입니다.

base_url = "https://myuser.codeberg.page/myrepo"

실패 방식은 GitLab과 같습니다. 빌드는 성공하고 모든 링크가 한 단계 위를 가리킵니다. 자세한 설명은 GitLab Pages에 적어 두었습니다.

커스텀 도메인

Codeberg는 서빙되는 디렉터리 루트의 .domains 파일을 읽습니다. static/에 두면 GitHub Pages의 CNAME과 마찬가지로 이름이 유지된 채 그대로 나갑니다.

# static/.domains
example.com
www.example.com

커스텀 도메인을 쓰면 서브경로가 없으므로 base_url은 도메인만 남습니다.

Note

Path::extension()은 이름 전체가 확장자처럼 생긴 파일에 대해 아무것도 돌려주지 않습니다. .domains.nojekyll 같은 파일이 main.css와 다른 취급을 받아야 하는 이유입니다. sqzass는 이런 파일을 그대로 통과시키고, 이름 전체가 확장자인 것에 해시를 붙이려 하지 않습니다.