【VSTS】Agent架設初體驗

Visual Studio Team Services 簡稱 VSTS 是一個完整的Devops工具

其定價對於前五個使用者免費!!

如果想要私有的Git版控空間,這根本就是一個完美的地方!!

如果你想做CI/CD也不是問題,每個月有240分鐘的免費額度(備註,單一作業持續時間不得超過30分鐘)。

上面都是讚嘆它的好,但,240分鐘,真的夠用嗎!?

我自己體驗,兩個小型 Web 專案,從 Build 到 Release 到 Azure,總共花約5分鐘。

難道一個月你只 Push 上 Git Server 48次嗎!?

答案是有兩種:

  • 一個月花 40 美金,可以多一條管線(備註,單一作業持續時間不得超過360分鐘)。
  • 本篇的重點,擁有一條私人管線:免費

想當然,這條私人管線其實就是你地端需要一台主機來做 Build、Release。

今天也是我第一次從無到有設定私有管線(以下通稱Agent),接下來就按照步驟講解了!

首先,先要有一台主機,主機的需求官方說明如下:Windows System Prerequisites

接下來,我們開啟網頁至 VSTS 中的 Agent Pools。

網址結構如下:https://{your-account}.visualstudio.com/_admin/_AgentPool

會看到左側 Default 目前是沒有設定 Agents 的,按下 Download agent 按鈕

在這個頁面,有大致上的操作說明。

按下 Download 後,會開始下載一個 *.zip 的壓縮檔,這就是地端需要的檔案。

下載後,接下來我們要設定/執行以下動作:

設定帳號,先回到 VSTS 的頁面,在右上角點選

新增一個 Personal access tokens。

權限範圍需要設定兩項,其餘不得勾選:

  • Agent Pools (read, manage)
  • Deployment group (read, manage)

之後按下最下方的 Create Token,就會回到列表頁面。

千萬注意:該Toke只有在這時候看的到,之後就都找不到了喔!!所以,記得複製下來!

這邊有描述,其實是有四種驗證方式的,我們現在使用的是 PAT 模式。

接下來,把我們之前下載的 *.zip Agent的檔案解壓縮。

要注意,解壓縮的路徑,未來會存放 CI/CD 要用的暫存檔案,如果擔心太常操你的硬碟,要注意放置的位置。

再來,我們要開始進行設置 Agent 的 Config。

開啟你的PowerShell,這邊建議要使用系統管理員身份執行(原因稍後解說)。

接換至剛剛解壓縮檔案的路徑下,輸入:

.\config.cmd

執行後,會要求你輸入伺服器網址,這邊指的就是 VSTS 的網址。
結構如下:https://{your_account}.visualstudio.com/

輸入後,會要求你提供驗證模式,這邊我們採用PAT,所以直接按下 Enter

接下來會要求你輸入存取權杖,也就是之前我們產生的Token。

Token驗證成功後,會開始設定

  • 代理程式集區 => 採用預設 default
  • 代理程式名稱 => 預設抓取電腦名稱
  • 工作資料夾 => Agent 抓取版控建置、部屬等暫存檔的檔案根路徑,預設_work
  • 將代理程式作為服務執行 => 預設為否
    • 是 => 在 Windows 服務中會有一個 VSTS_Agent 服務自動執行。
      • 要採用服務執行 PowerShell 必須使用系統管理員身份開啟
      • 需提供一組執行服務的本機帳號
    • 否 => 每次服務需要透過指令啟動

做到這裡,如果你是採用服務的方式設定。此時可以前往服務檢查是否已經執行。

若為執行中,回到 VSTS 的 Agent Pools 則可以看到原本的 Default 已經有一台執行中的 Agent

如果,你沒有選擇使用服務來啟動,只需要透過 PowerShell 到解壓縮的資料夾執行:

.\run.cmd

執行後,Agent 就會執行起來。Agent Pools 的狀態也會變為 Online。

最後,教大家怎麼移除 Agent。

透過 PowerShell 到解壓縮的資料夾執行:

.\config remove

就會開始移除設定,此時,還是會需要驗證Token,移除後就回到本篇教學文的開始,空白一片了。

地端的 Agent 架設完,不要忘記去已經設定好的 Builds、Release 調整 Agent queue 部分,這樣才會真的在地端執行阿!

以上,希望可以幫到有興趣的人。

PS: VSTS Releases 的操作方式已經改變為 Pipeline 的方式,害我一度找不到Trigger在哪裡設定。現在已經有文章了唷!