(圖片引用自:https://blog.gitguardian.com/security-zines-2-compromising-ci-cd-pipelines/)
程式push到github上,接著觸發Jenkins pull 程式碼,使用Maven 編譯打包程式,並經過Jenkins pipeline + sonarQube 做一些程式碼檢測、以及程式JUnit Test檢測,完成後構建出一個新版本的image,再push到harbor,再把最新的版本image pull 下來、並刪除原本的container,重新運行新版本的image。
CI/CD有相當多的工具可以使用,以下只針對Jenkins使用為例做說明。
Jenkins 是開源的 CICD 工具,提供大量免費的插件,更便於自動化的完成整個CICD相關的流程,拉取、集成、構建、測試程式碼,達成更方便的自動化管理。
Jenkins 配置觸發點通常會設定在,每次發PR或push時就會自動到CI檢核,檢核所設定的條件是否符合,當條件皆符合以後,CI檢核通過,才會通過此次PR,並且才能夠執行合併branch到main分支。
通常檢核規則會設定類似以下的規範,這個程式能夠正常編譯通過、程式碼一些檢核規範、執行程式中的Junit Test通過等等。
觸發點:每當修改完成後,確認好一個要上線的版本,透過github release 新的版本,並將新版本儲存到目標服務器上。自動化讓這個服務,或是其他有引用的相關服務,自動佈署最新的版本並且上線使用。
能透過自動化加速每一個版本程式碼的檢核與發布,並能透過制定統一性的檢核規範,只需要在push程式碼時,就能自動協助做完完整的檢核流程,並在產生問題時,會清楚的告訴你是在哪一個環節出錯,並能產生出錯誤訊息的log,更便於你去調整程式碼的錯誤區塊。
還有非常多的差插件可以下載運用