前言
在軟體開發流程爭,Git、CI/CD、或是DevOps都是大家耳熟能詳的名詞以及概念。透過版本控制以及分支管理,可以讓團隊合作更加順暢;在版本控制之上,加入了DevOps後,能讓整體測試以及交付的流程更加順利且自動化。不過在這些之上,其實還是有一些團隊合作時,不得不面對的挑戰。例如:A成員跟B成員的Coding Style不同,又或是一些開發規範不一定能很好的被落實,都是團隊合作時可能會發生的問題。或許讀者會說:「那在CI流程中加入更多測試不就好了?」,但如果能在更早期的階段就避免這個問題,何樂不為?所以今天將為各位介紹pre-commit
,一個能夠在commit
時執行檢查,提供錯誤報告,並且能夠整合到CI/CD流程中的一個好用工具。
什麼事pre-commit?
pre-commit是一個可以協助使用者在使用版本控制工具時,簡化檢查流程並提升可靠性的一個工具。藉由pre-commit
所提供的功能,當使用者在commit
新的版本時,會自動觸發pre-commit
並執行預定的各項檢查,包含但不限於:程式碼格式、是否有隱私或是金鑰資訊存在、或是內容是否符合規範。使用者可以使用開源社群提供的工具,也可以自行撰寫,並讓pre-commit
來執行。
如何安裝pre-commit
?
pre-commit
的安裝非常簡單,只要使用pip
指令安裝即可。
|
|
如何設定pre-commit
?
要使用pre-commit
之前,需要進行兩個動作,分別為:
- 撰寫設定
- 安裝設定
接下來我們將示範一次如何進行。
撰寫設定
pre-commit
工具有提供一個指令pre-commit sample-config
,協助使用者產生範例設定。設定檔案名稱必須為.pre-commit-config.yaml
。我們可以使用以下使令來產生設定檔案:
|
|
執行後,我們可以查看生成的檔案內容:
|
|
在範例的設定中,我們可以注意到,設定主要由三個部分組成:repo
、rev
、以及hooks
。這三個部分分別對應到:
repo
:hook
工具來源的位置。rev
:hook
工具的版本。hooks
:要使用的hook
工具。
你可以同時使用多個repo
並設定不同的測試,只需要在repos
部分中新增新的repo
內容即可。
安裝設定
在完成設定檔案的撰寫後,只要執行以下指令,就可以把這些hook
安裝到.git
資料夾的hooks/
資料夾之中。
|
|
在安裝完成後,可以執行pre-commit run --all-files
來對所有的程式碼進行檢查。參考官方範例,將會出現類似下方的結果:
|
|
你也可以嘗試對檔案進行改動,並使用commit
來記錄新版本,並觀察pre-commit
是如何運作的。
將pre-commit
整合到CI/CD流程中
pre-commit
除了在開發環境中可以協助我們在commit
的當下進行檢查,也可以整合在CI/CD流程中來進行自動化的檢查。目前有三種方法,可以自行選擇一個來使用:
使用pre-commit.ci
目前有一個工具,pre-commit.ci可以協助使用者在CI流程中整合pre-commit
服務。做法很簡單,直接在設定檔案中加入一個ci
章節即可。以下是一個範例:
|
|
使用GitHub Action整合pre-commit
先前所提到的pre-commit.ci
,也有提供GitHub Action的整合,若有需要使用可以參考相關文件。
自行撰寫
除了前述的兩種方法,使用者也可以自行撰寫CI流程,並執行pre-commit run
指令來進行檢查。以下是GitLab版本的設定:
|
|
小結
使用pre-commit
可以在相當早期的階段就協助我們根據設定的項目來進行檢查,並提供我們即時的改進分析。同時,pre-commit
也可以被整合到CI/CD流程,進一步的為程式碼品質把關做出貢獻。非常推薦大家使用這個工具來增進團隊合作的效率以及成效。
如果覺得我的文章對你有幫助,歡迎請我喝一杯咖啡~