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 > 것에 해시를 붙이려 하지 않습니다.