Azure DevOps in Action - 建立Linux環境的Build Agent
Azure DevOps也可以輕易地建立在Linux環境上的Build Agent,底下我們將會採用Ubuntu的VM環境來示範這個動作。
首先,我們建議您用Azure上的Ubuntu 20.04虛擬機範本,相關的建立參數如下:
我採用D4s_v3的虛擬機等級,在East Asia資料中心建立該伺服器。同時為了讓我能夠從Windows環境連上該伺服器做後續設定,我選擇了開啟SSH(22) Port。
請牢記你建立時所輸入的帳號密碼。
在虛擬機建立完之後,可以透過PowerShell(我是使用 Windows Terminal)以ssh指令來連上該伺服器,並且輸入密碼:
ssh 帳號@IP
例如:
遠端登入成功之後,即可對該伺服器下達指令。
先整理一下我們登入後要做的事情,分別是:
- 安裝 .net core SDK(為了可以進行 dotnet build)
- 下載Azure DevOps Agent套件(壓縮檔)
- 解壓縮套件
- 安裝套件並進行設定(過程中需用到PAT)
- 執行Agent
整個動作,可以從Azure DevOps的Orgnization Settings開始:
從Orgnization Settings選單點選Agent Pools,選擇Default(即為Self-Hosted Agent),接著點選New Agent。
在出現的畫面中,請點選Linux,你會看到安裝Linux Build Agent的步驟:
首先,請點選上圖A的部分,複製agent套件的下載位置,在筆者截稿時,該位置為:
https://vstsagentpackage.azureedge.net/agent/2.202.1/vsts-agent-linux-x64-2.202.1.tar.gz
接著,請在powershell以ssh連線的ubuntu環境中,下達底下指令:
mkdir myagent && cd myagent
這會建立一個myagent資料夾,並且進入該資料夾中。
接著,請執行底下指令,來下載agent:
curl -O https://vstsagentpackage.azureedge.net/agent/2.202.1/vsts-agent-linux-x64-2.202.1.tar.gz
其中 curl -O 是下載檔案,而後面的url,請換成您剛才在上圖A中所複製到的最新版URL。
接著,再透過底下指令解壓縮:
tar zxvf vsts-agent-linux-x64-2.202.1.tar.gz
完成後,執行ls指令,會看到類似底下這些內容:
這樣我們待會就可以進行設定了。
但在此之前,我們得先準備好PAT(Personal Access Token),以及為該伺服器準備 .net core sdk環境。
參考 https://docs.microsoft.com/zh-tw/dotnet/core/install/linux-ubuntu 的說明,您可以透過運行底下指令,來安裝 .net core sdk:
wget https://packages.microsoft.com/config/ubuntu/21.04/packages-microsoft-prod.deb -O packages-microsoft-prod.deb
sudo dpkg -i packages-microsoft-prod.deb
rm packages-microsoft-prod.deb
sudo apt-get update;
sudo apt-get install -y apt-transport-https &&
sudo apt-get update &&
sudo apt-get install -y dotnet-sdk-6.0
過程中可能會需要您輸入密碼,請在powershell中執行上述指令,結果類似底下這樣:
若你需要安裝其它版本的.net core sdk,可以修改上面指令中的版號即可,例如:
sudo apt-get install -y dotnet-sdk-5.0
成功安裝後,我們就要進行最後一個步驟了。
請先準備好PAT,取得PAT的方式如下,請先點選Azure DevOps畫面右上角個人帳號旁邊的小人圖示:
接著在選單中選擇 『Personal access token』,即會出現建立PAT的畫面:
在出現的畫面中選擇建立新的PAT。
PAT是替代你的帳號密碼的令牌,在你指定的有限時間內,出示該令牌就等於具有你所賦予的權限。
建立好了之後,請保留該PAT,它的長像大概是底下這樣:
zs4l6xp7xwhnj7lp8ta7i4q3xhtfasaxs3vp6xxwrj6iger7i63ob2eq
接著,請回到剛才的powershell視窗,在myagent資料夾底下執行:
./config.sh
執行過程中,會需要輸入PAT:
請留意,上圖2中的URL,要輸入的是你的Azure DevOps站台位置,而輸入PAT之前(上圖3),會先要你按一個Enter(請仔細注意上面的英文敘述),然後才是輸入PAT(按下滑鼠右鍵即可貼上)。
後面的幾個選項都按Enter即可,完成後,你會看到Setting Saved.
接著,再執行 ./run.sh ,你會發現,系統已經開始運作,並且在等待jobs了 :
這時候,你就可以使用這個 agent pool來進行build job了。
你可以依照先前我們介紹過的方式,建立一個 .net core 程式的CI Build Pipeline,唯一不同的地方是,這次(下圖1)Agent Pool選擇的是Default(Private) ,其它的設定均不變:
當你運行該Pipeline時,會發現,這個Build Machine比Azure DevOps內建的來的快很多,自然是因為這台VM我們建立時選擇的等級是很高檔的。
沒多久,整個CI Build就順利的完成了:
你也會看到,PowerShell中,Ubuntu的Command Line出現相對應的提示訊息:
表示job被成功的完成了。
如果要停止該agent,可以在命令列按下CTRL+C,如果要移除該agent,只需要下達 ./config.sh remove指令,並輸入PAT即可:
建立一個私有的Linux Build Agent就是這麼簡單。
相關資源:
[書籍]Azure DevOps顧問實戰:
https://www.tenlong.com.tw/products/9786263241251?list_name=b-r7-zh_tw
[課程]敏捷開發專案管理與Azure DevOps實戰
https://www.studyhost.tw/NewCourses/ALM
留言