Actions
利用 Github Actions 做一個簡單的 CI/CD
Last updated
利用 Github Actions 做一個簡單的 CI/CD
Last updated
Github Actions 是 Github 在 2019 年才推出的 CI/CD 服務,相較於老牌的一些 CI/CD 要年輕了許多,相對的可能支援度也還沒有到很全面,但對於想在 Github 上小專案做簡單 CI/CD, 相較於 Jenkins 還要安裝到一台 Server 上,Github Actions 可以直接在 Github 上操作,應該會是最方便又比較快速上手的工具了。
何謂 CI/CD? 這也不是一個新名詞了,全名是 Continuous Integration and Continuous Deployment,也就是持續整合與持續部署。簡單來說,就是把一些日常的建置環境、測試、build,一直到部署都交給自動化的工具,目的除了加快開發流程之外,也可以提早發現問題。
身為一個軟體工程師,為了提高日常工作效率,不把時間浪費在不需要的事情上,不論前端後端甚至DevOps工程師,CI/CD 都是在開發過程中非常重要的一環。
CI 顧名思義為「持續整合」,在每次的 Commit and Push 時,經過各項的測試,與完成後的 build code,讓每一次的小改變都可以馬上經過自動化的測試驗證,藉此快速幫助開發者找出潛在或是被忽略的問題,並且產生可靠性的 build 以供正式版本使用。
CD 指的是「持續部署」,透過自動化流程將 CI 產出的 build,部署到我們服務的環境或是伺服器上,減少花費人工手動 deploy 的時間,也會透過一些 moniter 的工具來確保我們的服務有正常在運作。
對於 Github Actions 有幾個重要的核心概念:
Actions/commands
可以說是在 Github Actions 中的最小單位,可以用來組合成各種的 steps
來建立你要自動化的 jobs
。
Step
由多個 action
或是 command
組合成的 step
,用來定義每一個自動化流程的步驟。
Job
多個 step
組成 job
,透過 job
定義不同 scope 的任務,比如說可以分為測試的 job 與 build code 的 job 來執行,執行順序會根據你寫在 yaml 檔案中的順序來執行。
Workflow
Workflow 是整個自動化的流程,一個自動化流程可能包含多個 job
,就要看你的自動化流程怎麼設計了。
這邊實作就以最基本的Java spring boot gradle專案作為範例。
push:此段是指當 push 到 master 這個 branch 時會觸發
pull-request:當 master 有出現拉取請求觸發
此jobs 命名為 build
runs-on:執行一個 ubuntu 的環境
設定JDK 11
使用Gradle build
實際個別參數說明可參閱官方文件 https://docs.github.com/en/actions
當main 分支 push時觸發Actions,最後 SSH連線到server 執行 command