Azure DevOps (三) 實現和Jenkins的聯動

Tassdar發表於2022-03-11

上一篇文章中,我們通過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的更多功能。

相關文章