我是螞蟻背大象(Apache EventMesh PMC&Committer),文章對你有幫助給項目rocketmq-rust star,關注我GitHub:mxsm,文章有不正確的地方請您斧正,創建ISSUE提交PR~謝謝! Emal:mxsm@apache.com
1. 引言
GitHub Actions 是 GitHub 提供的一種強大而靈活的自動化工具,它允許開發者在軟件開發生命周期的各個階段構建、測試和部署代碼。借助 GitHub Actions,開發者可以創建自定義的工作流來自動執行一系列任務,從而提高開發效率、減少人為錯誤并確保代碼質量。
2.準備工作
創建一個Github倉庫
我這里以我已經創建的 rocketmq-rust為例
設置 GitHub Actions
創建 .github/workflows
文件夾
創建新的工作流文件(如 auto-merge.yml
),我這里創建了三個文件:
- auto-comment-pr.yml
- auto_request_review.yml
- automerge.yml
都是和自動merge相關的。下面會具體講解
3.編寫自動 Merge PR 的 GitHub Actions 工作流
3.1定義工作流名稱和觸發條件
分析上面每個文件的作用
-
auto-comment-pr.yml
這個文件的作用是當有貢獻者提交PR的時候增加一個評論與此同時添加兩個標簽,具體如下圖所示RP#716
這個配置文件的觸發條件就是
pull_request_target
-
auto_request_review.yml
這個配置文件的作用就是請求相關項目的ower對PR進行代碼Review。來提醒相關人員進行代碼Review,例如下面個PR#657
這個也是為下面自動merge作的準備,配置文件觸發條件
pull_request_target
-
automerge.yml
這個配置文件的作用就對已經Review好的項目進行merge,這里會有一些條件下面會具體講解
觸發條件:
- pull_request_target
- pull_request_review
- check_suite
3.2 設置工作流的權限
對于上面的這些操作大部分都可以使用Github Action的權限,也就是使用 secrets.GITHUB_TOKEN
這個Token,而我這里的代碼Merge和評論使用的是私有的Token也就是 secrets.PAT
。所以你會發現上面的這些評論和操作中部分是 mxsm 這個賬號部分是 github-actions 這個機器人賬號。
生成Private Access Token(PAT)
這里主要的權限是跟倉庫相關的,你可以把全部設置成Read and Write的權限
配置PAT
找到對應項目的設置地方,具體如下圖配置PAT
到這里就完成了整個權限的配置。
三個配置文件的具體腳本參照項目:https://github.com/mxsm/rocketmq-rust 項目的對應目錄下面 (如果覺得項目不錯給個star,謝謝)
4. 測試相關流程
以PR#740 為例子。首先當提交PR的時候會有一個對PR的評論與此同時會增加兩個標簽 auto merge 和 ready to review
同時會增加一個Review的請求這個是有github-actions機器人添加
對應的Action如下:
接下來就是對項目進行代碼Review然后, 這里需要有兩個地方需要修改
- 對代碼進行approve
- 刪除ready to review label加上approved標簽
說明: 這里刪除ready to review label加上approved標簽是因為在automerge.yml配置里面配置了MERGE_LABELS為"approved,auto merge,!ready to review"。 更多的配置可以參照pascalgn/automerge-action@v0.16.3。
進行操作后:
提示PR已經被合并,在看一下代碼界面:
代碼已經被合并。實現了自動合并的機制
5. 總結
自動化工作流在現代軟件開發中變得越來越重要,特別是在 CI/CD(持續集成和持續部署)過程中。自動化工作流的主要好處包括:
- 提高開發效率:減少手動操作,讓開發者專注于更高價值的任務。
- 增強代碼質量:通過自動化測試和審查流程,確保代碼在合并前符合質量標準。
- 降低人為錯誤:減少手動合并和部署過程中的潛在錯誤。
- 加快發布周期:通過自動化部署和發布流程,加快從代碼提交到發布的周期。
相關文檔:
GitHub Actions 官方文檔
GitHub API 文檔
GitHub Actions Marketplace