上一篇文章中,我們通過azure 的webhook實現了和釘釘機器人的聯動,實現了通過釘釘機器人告知大家剛才誰動了倉庫。
在文章開篇的時候我們舉例說了jenkins也可以實現和azure聯動,今天我們來實現一下。
首先,我們得先把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的更多功能。