Azure DevOps搭建自動化IaC:使用Azure Service Bus和Logic App傳遞變量,關(guān)聯(lián)Boards并觸發(fā)Pipeline

DEMO場景

  1. 當外部請求或系統(tǒng)事件發(fā)生后直撤,在Azure DevOps中使用Service Bus Queue傳遞的變量觸發(fā)Logic App非竿,創(chuàng)建Work item并觸發(fā)Pipeline

  2. 使用DevOps Rest Api將特定Build和Work item進行關(guān)聯(lián)

  3. 使用Services hook將Build的結(jié)果傳到Azure Service Bus并觸發(fā)Logic App,實現(xiàn)對應Work item狀態(tài)的實時自動更新


    Overall Flow

預備知識

Services hooks

當DevOps項目中發(fā)生一些事件時谋竖,Services hooks可以在其他服務上運行特定任務红柱。Publisher定義一系列事件侮东,Subscription監(jiān)聽這些事件并定義基于這些事件的動作和運行的服務對象。


Services hooks

支持的事件請見Service hooks event reference

Azure Services Bus

Azure 服務總線是一個完全托管的企業(yè)消息代理豹芯,其中包含消息隊列和發(fā)布訂閱主題。命名空間(Namespace)是一個適用于所有消息傳送組件的容器驱敲。消息可以發(fā)送到隊列(Queue)铁蹈,或從隊列接收。

隊列

也可以通過主題(Topic)發(fā)送和接收消息众眨。 隊列通常用于點到點通信握牧,而主題則用于發(fā)布/訂閱方案。
主題

對于接收操作娩梨,Service Bus API客戶端啟用兩種不同的顯式模式:Receive-and-DeletePeek-Lock 沿腰。
Receive-and-Delete模式告知代理將它發(fā)送到接收客戶端的所有消息都在發(fā)送時視為已處置。 這意味著在代理將消息置于線路上之后狈定,它會立即被視為已使用颂龙。 如果消息傳輸失敗,則消息會丟失纽什。如果各個消息中包含的數(shù)據(jù)價值較低或者只在很短時間內(nèi)才有意義措嵌,則可以選擇此模式。
Peek-Lock模式告知代理接收客戶端希望顯式處置收到的消息芦缰。消息可供接收方進行處理企巢,同時在服務中保持在exclusive lock下,以便其他競爭接收方無法看到它让蕾。

Azure DevOps REST API

REST API是支持HTTP操作的服務端點浪规,這些操作提供對服務資源的創(chuàng)建,檢索探孝,更新或刪除訪問笋婿。例如Builds - Queue API,使用parameters傳遞參數(shù)再姑。

POST https://dev.azure.com/{organization}/{project}/_apis/build/builds?api-version=6.1-preview.6


準備工作

  • Azure Service Bus資源
  • Azure Logic App資源
  • Azure DevOps Project

步驟

A. 自動觸發(fā)并使用變量跑Pipeline

  1. 自定義work item的模板萌抵,加入?yún)?shù)等所需欄位和狀態(tài)。


    Customize process
  2. 之后新建Work item時你會用到欄位的name元镀。


    name
  3. 傳遞的變量會放在overrideParameters中绍填。


    Variables
  4. 右上角新建這些Variables,務必勾選可以override栖疑。


    override
  5. 使用Services Bus Queue觸發(fā)的Logic App讨永,Parse消息取到變量。其中peek-lock保證每一條消息處理完成后才會被丟棄遇革。


    image.png
  6. 選擇DevOps相關(guān)的action卿闹,身份驗證后建立與Azure DevOps的連接揭糕,新建一個work item。其中自定義的欄位使用Other Fields進行傳遞锻霎。左側(cè)即為之前提到的欄位name著角,右側(cè)為parse出來的變量值。


    新建work item
  7. 觸發(fā)Azure Pipeline旋恼,使用傳遞的變量新建一個Build吏口,變量寫在Parameter中。變量值可以用parse出來的冰更,也可以用work item中的产徊。


    新建Build
  8. 至此自動觸發(fā)并使用變量跑Pipeline已完成,最后complete這條消息蜀细,代表處理完成舟铜。


    complete 消息

B. 實時自動更新Work item狀態(tài)

  1. 在新建Build后加入更新狀態(tài)System.State。


    更新狀態(tài)
  2. 關(guān)聯(lián)Work item和其對應的build在這里使用tag傳遞Work item ID的方式完成奠衔。首先在Azure DevOps中新建一個PAT谆刨。


    PAT
  3. 使用Azure DevOps Rest Api將創(chuàng)建的Build加上TAG。這里把PAT存在了Keyvault當中归斤,在身份驗證的password中引用痴荐。


    Add Tag
  4. 在DevOps的Project Setting中選擇Services hooks -> Azure Services Bus。Trigger為Build成功官册,使用不同于A中的Services Bus Queue生兆,填入其連接字符串。(默認只有project administrators有權(quán)限膝宁,請進行相關(guān)授權(quán))


    Services hooks
  5. 使用不同于A中的另一個Service Bus Queue來接收消息鸦难,觸發(fā)Logic App2。當接收到Build成功的消息后员淫,使用Azure DevOps Rest Api讀取TAG內(nèi)容合蔽。


    讀取TAG
  1. 更新對應Work item的狀態(tài)。


    更新對應Work item的狀態(tài)
  2. 使用Service Bus Explorer發(fā)送json格式消息進行測試介返。


    Test

相關(guān)閱讀

Integrate with service hooks - Azure DevOps | Microsoft Docs

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末拴事,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子圣蝎,更是在濱河造成了極大的恐慌刃宵,老刑警劉巖,帶你破解...
    沈念sama閱讀 206,214評論 6 481
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件徘公,死亡現(xiàn)場離奇詭異牲证,居然都是意外死亡,警方通過查閱死者的電腦和手機关面,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 88,307評論 2 382
  • 文/潘曉璐 我一進店門坦袍,熙熙樓的掌柜王于貴愁眉苦臉地迎上來十厢,“玉大人,你說我怎么就攤上這事捂齐÷牛” “怎么了?”我有些...
    開封第一講書人閱讀 152,543評論 0 341
  • 文/不壞的土叔 我叫張陵奠宜,是天一觀的道長筛武。 經(jīng)常有香客問我,道長挎塌,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 55,221評論 1 279
  • 正文 為了忘掉前任内边,我火速辦了婚禮榴都,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘漠其。我一直安慰自己嘴高,他們只是感情好,可當我...
    茶點故事閱讀 64,224評論 5 371
  • 文/花漫 我一把揭開白布和屎。 她就那樣靜靜地躺著拴驮,像睡著了一般。 火紅的嫁衣襯著肌膚如雪柴信。 梳的紋絲不亂的頭發(fā)上套啤,一...
    開封第一講書人閱讀 49,007評論 1 284
  • 那天,我揣著相機與錄音随常,去河邊找鬼潜沦。 笑死,一個胖子當著我的面吹牛绪氛,可吹牛的內(nèi)容都是我干的唆鸡。 我是一名探鬼主播,決...
    沈念sama閱讀 38,313評論 3 399
  • 文/蒼蘭香墨 我猛地睜開眼枣察,長吁一口氣:“原來是場噩夢啊……” “哼争占!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起序目,我...
    開封第一講書人閱讀 36,956評論 0 259
  • 序言:老撾萬榮一對情侶失蹤臂痕,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后猿涨,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體刻蟹,經(jīng)...
    沈念sama閱讀 43,441評論 1 300
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 35,925評論 2 323
  • 正文 我和宋清朗相戀三年嘿辟,在試婚紗的時候發(fā)現(xiàn)自己被綠了舆瘪。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片片效。...
    茶點故事閱讀 38,018評論 1 333
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖英古,靈堂內(nèi)的尸體忽然破棺而出淀衣,到底是詐尸還是另有隱情,我是刑警寧澤召调,帶...
    沈念sama閱讀 33,685評論 4 322
  • 正文 年R本政府宣布诀姚,位于F島的核電站搞坝,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜豺憔,卻給世界環(huán)境...
    茶點故事閱讀 39,234評論 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望扒秸。 院中可真熱鬧骚露,春花似錦、人聲如沸障般。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,240評論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽挽荡。三九已至藐石,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間定拟,已是汗流浹背于微。 一陣腳步聲響...
    開封第一講書人閱讀 31,464評論 1 261
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留青自,地道東北人角雷。 一個月前我還...
    沈念sama閱讀 45,467評論 2 352
  • 正文 我出身青樓,卻偏偏與公主長得像性穿,于是被迫代替她去往敵國和親勺三。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當晚...
    茶點故事閱讀 42,762評論 2 345

推薦閱讀更多精彩內(nèi)容