【2021鐵人賽】CI/CD從這裡:設定第一個Pipeline(成功與失敗)

前一篇文章介紹了Pipeline的範本與編輯介面,並且比較了.NET Desktop範本與Starter範本的內容,這一篇用Starter範本來介紹Pipeline執行之後的介紹與顯示的資訊。

如果是在Yaml編輯介面按下Save and run,那麼應該會直接來到執行的畫面,有下面兩種可能(成功或失敗):

PipelineRun失敗

如果是新建立的組織帳號,很有可能在建立Pipeline的時候會碰到第一張圖的失敗畫面,其中紅字的訊息內容是「##[error]No hosted parallelism has been purchased or granted. To request a free parallelism grant, please fill out the following form https://aka.ms/azpipelines-parallelism-request」。

在我的經驗中,不應該在這個這麼簡單的範本執行的Pipeline會碰到問題,加上看到關鍵字「 No hosted parallelism has been purchased or granted. 」,所以我馬上看了一下Project Settigns和Organization Settings中相關的設定:

新建立的帳號在Project Settings的Parallel jobs沒有免費的1800分鐘
新建立的帳號在Organization Settings的Billing中仍然顯示有免費的1800分鐘

上面的Project Settings中可以看到在Parallel jobs設定的Microsoft-hosted(雲端agent)表格中並沒有顯示1800分鐘的字樣,但是在Organization Settings的Billing頁面仍然可以看到MS Hosted CI/CD那一列的Free底下寫著1800 minutes。

看到這裡就讓我覺得非常奇怪,因為印象中Project Settings裡面的內容應該會寫著目前已經使用了多少分鐘數(佔1800分鐘多少),所以我只好使用我自己平常在使用的帳號看了一下,正常應該是會像下面這樣:

舊的帳號會有每個月1800分鐘的免費時間

看到這裡,我思考著是不是有哪裡變成需要額外設定才會讓Project擁有這1800分鐘的可執行時間,翻著微軟官方的網頁,來到這個頁面中看到了下面這一段文字:

Note

We have temporarily disabled the free grant of parallel jobs for public projects and for certain private projects in new organizations. However, you can request this grant by submitting a request. Existing organizations and projects are not affected. Please note that it takes us 2-3 business days to respond to your free tier requests.

 注意
我們已暫時停用針對公用專案和新組織中特定私用專案的並行作業免費授與。 不過,您可以提交要求來要求這個授。 現有的組織和專案不會受到影響。 請注意,這會讓我們以2-3 個工作天回應您的免費層要求。

因為我為了參加鐵人賽所準備的帳號就是最近才新申請,所以對應上面的這段敘述就是答案了。敘述中也提到可以提交申請把這1800分鐘再開放,連結進入之後是一個填寫的表單如下,只需要填寫Email和Azure DevOps的組織網址,並且選擇要申請的是私有的Project還是公開的Project就可以了,等待大約3個工作天即可。(我已送出,不過碰到了連假…)

申請啟用免費1800分鐘agent執行時間表單

這算是意外的插曲,沒想到最近新申請的帳號會碰到這樣的問題。還好,我原本就有在使用Azure DevOps,所以暫時在我平常用的帳號中建立一個Project來繼續鐵人賽的文章並不是什麼大問題。下面這張圖就是同樣使用Starter範本執行成功的畫面:

PipelineRun成功

左邊的清單代表著是Pipeline中定義的stage、job、task,以這裡的例子就是只有一個job,底下有幾個task,當task成功被執行的時候會顯示綠色的勾勾,前後灰底白色勾勾的則是Pipeline預設的工作。右邊黑底白字的部份則是每個task顯示log的地方,從左邊點選不同的項目會顯示不同的內容。

像下圖我點選了左邊的Run a one-line script項目,右邊就會顯示相關的內容。而Run a one-line script則是在Yaml中Task設定的displayName屬性內容,右邊第14行輸出的Hello, world則是script執行的結果。(我特別在右下角貼上相關的Yaml內容可以對照)

看完上面這些執行的畫面內容之後,我們回到一般正常從Project左邊的Pipelines進入會看到的畫面:

通常查看Pipeline的方式都是從Project左邊選單點選Pipelines底下的Pipelines(又來了,好繞口),右邊就會列出Project中已經定義過的Pipeline清單,每一列是一個Pipeline,會顯示最近一次執行的結果是成功(綠勾勾)或失敗(紅叉叉),以及最後一次執行的時候是由誰觸發(Trigger)以及該次取得Repo中的Commit訊息文字,最右邊則是最後一次執行的時間和查詢當下隔了多久、執行花費了多少的時間。

點擊Pipeline名稱之後可以進入查看過往執行的列表如下圖:

Pipeline Runs

可以再點擊不同的Run進入查看該次執行的細節資訊,點擊最下面Jobs底下的Job就可以進入到執行時的資訊,也就是上面左右區分,右邊是Task的log資訊的畫面。

Pipeline run failed details
Pipeline run succeed details

回到Pipeline列表的畫面,當滑鼠移到Pipeline右邊時,可以叫出隱藏的選單,從選單當中可以對Pipeline執行一些操作,除了編輯Yaml檔(Edit)、刪除Pipeline(Delete)、執行Pipeline(Run pipeline)之外,Manage security則是設定哪些人或群組可以檢視或執行這個Pipeline(這部份後面的文章再說),以及重新命名這個Pipeline(Rename/move):

重新命名Pipeline

Select folder的部份則是可以建立虛擬的目錄來將Pipeline歸檔,它並不會實際在Repo中產生資料夾,Move指的也是將Pipeline在這些虛擬的資料夾中移動,這部份在這邊就不另外操作截圖了,看看後面的文章有沒有機會再提到。

發佈留言

%d 位部落客按了讚: