如果你想要在自行架設的 Gitlab 導入 Gitlab Pages 服務,首先你要先注意你不能使用裸域做為 Gitlab 服務的網域,你應該要使用子網域作為 Gitlab 服務的網域。
注意事項
可架設的子網域範例可能是 gitlab.example.com (Gitlab) 與 gitlab-page.example.com (Gitlab Page),但如果是 example.com (Gitlab) 與 pages.example.com (Gitlab Page) 的話就不行。
DNS 與 gitlab.rb 設定
最初需要設定的是 DNS,你需要將 *.pages.example.com
指向你的主機 IP 位置,因為我們期待的 Gitlab Page 網址是:https://<namespace>.example.io/<project_slug>
你需要在 gitlab.rb 內加上以下內容:
pages_external_url "https://pages.example.com"
pages_nginx['redirect_http_to_https'] = true
pages_nginx['ssl_certificate'] = "/etc/gitlab/ssl/pages-nginx.crt"
pages_nginx['ssl_certificate_key'] = "/etc/gitlab/ssl/pages-nginx.key"
你可能有發現到當中需要 SSL 憑證,因此你需要先透過 certbot 申請 SSL,這邊建議可以使用 certbot + Cloudflare 的插件來完成申請,申請完成後你再將 SSL 憑證路徑修改為正確的路徑。
Gitlab 設定 pages
每個專案都可以前往 settings > pages 裡進行設定,或是你可以自行定義 .gitlab-ci.yml
檔案來發布 Gitlab Pages。下面是一個發布 Gitlab Page 的範例內容:
pages:
stage: deploy
environment: production
script:
- mkdir .public
- cp -r ./* .public
- rm -rf public
- mv .public public
artifacts:
paths:
- public
rules:
- if: $CI_COMMIT_BRANCH == $CI_DEFAULT_BRANCH