2023/10/07
承上一篇文章手動部署 GitHub Pages,專案在 GitHub 遠端儲存庫已有main、gh-pages兩個分支,其中 main 作為開發更新的主要分支,gh-pages作為遠端部署 github pages 的來源,那麼我在本地更新程式碼並遞交程式碼,然後執行推送到遠端部署分支的命令:git subtree push --prefix dist origin gh-pages
,每次部署都要重複同樣的瑣碎命令和流程,能不能將這個部署流程自動化? 當然可以! 只要撰寫腳本就行了。
建立自動部署腳本的常見方式包含在本地專案創建deploy.sh
腳本文件,或是藉由建立以 YAML (.yml
)文件編寫的 Workflow 來控制一連串 GitHub Actions 來達到目的。
以本次專案為例,這個自動部署的功能如下:
當本地專案更新push
推送至 GitHub 遠端庫 main 分支時,利用Workflow自動觸發 GitHub Actions 建構及部署等等指令,來達成程式碼更新並自動部署 GitHub Pages 靜態網頁的目的。
簡單來說,每個 Action 都是功能獨立的腳本,例如抓取程式碼、執行測試、登入遠端伺服器、設定指定 Node 環境…等,GitHub Actions 就是各種 Action 操作集合而成。
GitHub Actions 的 Workflow 是以 YAML 文件進行設定 (副檔名為.yml
或.yaml
)。
如果想更多了解關於 GitHub Actions ,推薦一篇不錯的文章: https://www.ruanyifeng.com/blog/2019/09/getting-started-with-github-actions.html
vite
及pnpm
作為開發工具,實際請依照自己使用的工具修改。Workflow 的檔案名稱可以任意取,只要副檔名為.yml
或.yaml
都可,以我設置的static.yml
為例,使用的套件管理工具為pnpm
,以下是這次為自動部署 GitHub Pages 設置的 Workflow 內容,參考Vite官方文件:
以上需要注意的是:
build
打包的過程中已經將環境變數包進去。build
時提供,否則網頁會無法正常顯示或執行。github.token
上下文訪問 GITHUB_TOKEN。我們只要設置權限即可:git push
失敗console 報錯如下:
FIX
workflow
,確認勾選後儲存,再次執行git push
。workflow
,那麼問題可能與本地登入驗證有關,命令列執行:gh auth login –scopes workflow
之後需回覆一連串設定,按照流程驗證並登入之後,再執行git push
。