上一篇文章中,我們通過azure 的webhook實現了和釘釘機器人的聯動,實現了通過釘釘機器人告知大家剛才誰動了倉庫。
在文章開篇的時候我們舉例說了jenkins也可以實現和azure聯動,今天我們來實現一下。
文章配套視頻專欄:
https://space.bilibili.com/38649342/channel/seriesdetail?sid=2267536
首先,我們得先把jenkins裝好,並且把它部署在一個公網可以訪問的主機上。
jenkins的使用步驟我們這里不在贅述。僅貼出docker的安裝命令。
docker run \ -u root \ --rm \ -d \ -p 8080:8080 \ -p 50000:50000 \ -v jenkins-data:/var/jenkins_home \ -v /var/run/docker.sock:/var/run/docker.sock \ jenkinsci/blueocean
裝好之后我們需要在在Jenkins中添加一條流水線,我們新建一條流水線,然后把上一篇文章中我們創建好的倉庫添加到流水線中,倉庫中的代碼就是我們第二篇編寫的和釘釘聯動的源代碼。
首先我們需要自己先跑一下驗證一下流水線編譯是沒有問題的。
驗證完我們的流水線是可以正常運行的之后,我們開始在azure進行jenkins的配置。
在webhook界面,選擇jenkins,選擇好要觸發的操作和倉庫,我這里選擇的是code pushed就觸發hook,然后我們選擇Trigger generic build。
在表單中填入jenkins的公網服務地址/用戶名/密碼,這時候azure會連通jenkins獲取到我們的流水線,選擇你要觸發的流水線,點擊test測試一下是否可以連通。
這里有一個坑,如果你的jenkins是2.2以上的高版本,會收到jenkins的403錯誤,出現這個問題的原因是jenkins拒絕了跨站的訪問,我們需要修改jenkins的啟動文件
關閉跨站保護。
關閉跨站保護的方法如下,我們進入到容器內修改jenkins的啟動腳本
docker exec -it jenkins /bin/sh
vi /usr/local/bin/jenkins.sh
然后我們需要在啟動參數里加上:-Dhudson.security.csrf.GlobalCrumbIssuerConfiguration.DISABLE_CSRF_PROTECTION=true
效果如下:
設置完之后我們重啟一下容器,重新使用azure測試一下,會發現已經可以打通了
我們嘗試提交一下代碼,看一下azure的效果和jenkins的效果
我們可以看到jenkins成功收到了azure的通知,並且開始了流水線的構建。
好了,azure打通jenkins的例子到這里就結束了,當然這只是一個簡單的demo,Jenkins的花樣肯定還有很多,需要大家去自己挖掘,下一篇文章我們將繼續發掘azure devops的更多功能。