Jenkins持續集成GitLab項目 GitLab提交分支后觸發Jenkis任務
之前是通過jar包在shell服務器上進行手動部署,麻煩且耗時。現通過Jenkins進行持續集成實現CI/CD。以test分支為例 提交即部署。
由于是根據自己實際使用過程 具體使用到了
- gitlab
- jenkins
- docker
- harbor
- rancher
- k8s
集成流程
- 拉取git倉庫并指定分支,并切換對應分支現test分支
- 對代碼依賴進行檢查,并實現maven引入
- 對項目進行打包
- 執行Dockerfile
- 提交Docker鏡像到Harbor
- 通知Rancher對項目進行更新
- CI/CD 完成
集成實現
Jenkins項目配置
創建jenkins項目
新建項目
選擇 New Item
填寫配置信息
以-backend 標識它是這個項目的后端,選擇Freestyle project選項
配置注釋
填寫 Description,項目的描述盡可能的詳細,方便維護
點擊 Advanced 配置Use custom workspace,該配置路徑為服務器存放后端項目的路徑
拉取git地址
配置GitLab項目地址。注意 該地址必須是 .git 結尾的
url為項目的git地址,及選擇的git用戶
配置拉取git分支
這里配置的是test分支
開啟WebHook
勾選:Build when a change is pushed to GitLab …
復制自己項目的webhook URL: http://...:8080/project/flow-population-register-backend
會出現如下界面
點擊 Advanced 進行詳細配置
配置分支
點擊上述的Advanced
點擊Allowed branches下的Filter branches by regex進行選擇監聽的分支,正則匹配 .*test 分支并點擊Generate生成Secret token的token,取消默認選擇Allow all branches to trigger this job。
配置密鑰
點擊 Generate 生成 SecretToken
配置腳本
選擇 Build 選Add buile step中的Execute shell
點擊 Execute Shell 來執行Shell腳本
注意:如果harbor中無項目,這里要去harbor中添加項目需要的存儲位置
編寫指令
填入你要執行的Shell指令
由于服務需要停止、再啟動
可以先kill掉服務 再 java -jar 執行
目前流程是在后續操作中 將其打包為Docker 再根據流程推送至K8s集群中
mvn clean package
export IMAGE_NAME="harbor地址"
docker rmi $IMAGE_NAME || true
docker build -t $IMAGE_NAME .
docker push $IMAGE_NAME
如果持續集成到rancher上,需要再寫一個shell腳本,并將rancher上api地址寫入
保存項目
點擊底部的 Save
先去測試配置是否生效
GitLab項目配置
打開GitLab項目 -> 選擇 Settings -> 選擇 Integrations/Webhooks
配置Webhook
填寫URL為剛才Jenkins的Webhook地址
填寫SecretToken為Jenkins中按鈕生成的秘鑰
點擊 Add webhook
點擊save添加webhook
測試通知
點擊 Test
選擇 Push Events
點擊 查看GitLab是否可以正常通過WebHook通知Jenkins
如果是如下的HTTP 200,這時GitLab現在已經可以正常通知Jenkins了
此時向GitLab中的項目的test分支提交代碼
將會發出WebHook來觸發Jenkins
完成Shell中的命令
這樣就完成了基礎的CI/CD。
Rancher配置
登錄Rancher
添加Deploy添加項目
根據項目添加需要的配置信息
其中:
- Name可以自己隨便寫
- WorkloadType Scalable是指可動態伸縮的 這里啟動了2個服務
- Docker Images 是鏡像的地址
- Port Mapping 需要暴露8080內部端口(publish the container port)到外部隨機端口(on listening port)
啟動服務