GITHUB_TOKEN
比用 ACCESS_TOKEN
方便,但是權限會限制在當前的 repo,所以如果要引用其他 private repo 的話還是要使用 ACCESS_TOKEN
Lastmod
問題的指令最近透過 Hugo 重建了 Github Pages (本站)。順便嘗試了一下 Github Actions,目標是以後發布文章時就只要推 source 上去,部署的工作就交給 CI/CD 自動化處理。在這邊紀錄一下研究的過程。
本站建立在 https://github.com/kaiiiz/kaiiiz.github.io 這個 repo 下下面,原本想說要 push 到 gh-pages
這個 branch,後來發現 User 或 Organization 的 Page 在設定上沒辦法選擇 page 的 source,只能使用預設的 master
branch。
文件是這樣說的:
The default publishing source for user and organization sites is the master branch. If the repository for your user or organization site has a master branch, your site will publish automatically from that branch. You cannot choose a different publishing source for user or organization sites.
路不轉人轉,所以我建了一個 source 的 branch,用來存 source code,這會讓後面 Github Actions 的部份有些地方需要修改。
Hugo 主題的開發,因為之前看到 Tailwind CSS 這個 CSS framework,想試試看好不好用,但因為不想自己造輪子,所以我查了一下有沒有現成的可以用,就查到了 dirkolbrich/hugo-theme-tailwindcss-starter 這款,已經幫我把開發環境都設定好了,於是我就直接拿這個當作主題的基底進行開發,他有一些 node.js 的依賴,所以在後面的 Github Actions 建立環境時也要注意有一些修改。
到 Settings/Developer Settings 下的 Personal access tokens 生成一組 Access Token。因為我的 theme 是一個 private repo,所以我要了有關 repo 這個 scope 的所有權限。
在 Github Pages 的 Repository 下的 Settings > Secrets 新增一組 Secrets,我這邊叫做 ACCESS_TOKEN
,之後在腳本上會用到。
在 .github/workflows
下新增一個檔案,我叫做 gh-pages.yml
。
我是以 peaceiris/actions-hugo 這套為基礎做了一些修改,紀錄一下改的部份:
source
這個 branch
|
|
ACCESS_TOKEN
|
|
|
|
git worktree
將 public 目錄追蹤在 master
branch
|
|
master
branch
|
|
最後整個腳本長這樣:
|
|
當把 source
推上去時,會自動部署 public 到 master
,看到綠綠的一整排就代表部署成功囉
因為想要把 Github Pages 遷到自己的 domain 下,但是如果把 <username>.github.io
的 repo 設定成 custom domain 的話,其他 repo 的 custom domain 也會強制被指向到那個網域。但是因為我不想要讓其他 repo 的 Github Pages 也被遷到我自己的 domain,所以只好再建一個 repo,並只在那個 repo 上設定 custom domain,然後改成把 public
推到 gh-pages branch 上。
後來還遇到 hugo 在 Github Actions 上 build 完後,所有的文章的 Lastmod
都會是 build 的時候的時間,查了一下發現是 git 遇到中文的問題。這篇提到當路徑包含非 ASCII 字元時,git 預設會把路徑用 quote 包起來,但這樣 hugo 就會因此讀不到 .GitInfo
的資訊而導致前面提到的問題,因此還需要在腳本上把 quotePath 給關掉才可以正常使用 Lastmod
。
|
|