[DevOps] GitHub Actions 筆記
keywords: deploy
, publish
, release
, github
, CI
, CD
Workflow syntax for GitHub Actions @ GitHub
References
可以用的環境變數
例如,如果想要拿到 git tag 或 branch,可以使用 github.ref_name
(參考:How to get just the tag name?)
- Default environment variables @ Github
- github context @ Github
Notes
- 建立或修改 Github Actions 的時候,該 PR 就已經會用最新的 workflows 執行。
- workflow 是放在
.github/workflows/
資料夾內的 YAML 檔 - 一個 Workflow 裡可以定義多個
jobs
,每個 jobs 會平行(parallel)執行 - Job 裡面可以定義多個
steps
,每個 steps 會依序(sequential)執行
GitHub Actions
About GitHub Actions @ Github
Github Actions 讓你可以在存放程式碼的地方自動化程式碼部署的工作流程(workflow),同時整合協作中的 pull requests 和 issues。你可以撰寫「個別的任務(individual task)」,也就是 Actions,並將這些 Actions 統整在一起變成「工作流程(workflow)」,工作流程就是在 repository 上進行設定後,可以透過自動化的方式打包(build)、測試、發佈、部署專案程式碼。
透過 GitHub Actions 將可以針對 repository 執行 end-to-end 的 CI(continuous integration)和 CD(continuous deployment)。
Workflows(工作流程)
Configuring a workflow @ Github
工作流程(Workflows)是針對 repository 進行設定,以此進行自動化的打包(build)、測試、發佈、部署專案程式碼。工作流程中至少需要包含一個工作項目(job),而工作項目中會包含一系列的步驟(step)來執行各別任務(tasks),這些個別的步驟(step)可以是執行指令或是 actions。
你需要透過 YAML 語法來設定工作流程,一個 repository 可以有一個以上的工作流程,你需要在專案根目錄中建立 .github/workflows
的資料夾,在這個資料夾中建立 .yaml
的檔案來儲存這些 workflows,一旦你成功觸發工作流程,將可以看到打包時的紀錄(build logs)、測試結果(tests results)、打包結果(artifacts)和執行工作流程時每一步驟的狀態(statuses)。
觸發 workflow
你可以設定在什麼情況下要觸發工作流程(workflow):
- Repository 上的事件,例如有人發送 commit、發佈 issue 或建立 pull request
- 定期的排程
- Github 外的事件,但透過
repository_dispatch
來觸發 - 手動執行(
workflow_dispatch
)
你也可以設定只有當某些分支、tag、路徑被觸發時