1. 概述
MacOS是一套運行於蘋果Macintosh系列電腦上的操作系統,是首個在商用領域成功的圖形用戶界面操作系統。Iphone應用軟件的開發人員,都使用運行macOS的電腦或mini盒子進行軟件開發和調試,其中XCode則是開發人員主要使用集成開發工具(IDE)。
作為一款軟件協作開發管理平台產品,Azure DevOps Server完全支持基於macOS實現軟件研發的持續集成和發布(CI和CD),可以使用Azure DevOps Server上的流水線(Pipleline)功能,實現XCode項目的自動編譯、測試和打包發布功能。由於Xcode項目的特殊性,代碼編譯過程必須在運行macOS的計算機上進行,因此,部署一台基於macOS的代理服務器,是在Azure DevOps Server上實現XCode項目的持續集成和發布的基礎准備。本文以Mac mini為例,介紹如何在macOS上安裝和測試Azure DevOps Server的代理。
如果你對Azure DevOps Server的代理還不太了解,建議先參考微軟的官方文檔(https://docs.microsoft.com/en-us/azure/devops/pipelines/agents/agents?WT.mc_id=DT-MVP-5001330)
2. 必要條件
在macOS上部署代理之前,首先要確保你的macOS符合一下幾個條件:
1)macOS的版本在10.12或以上
2)Git版本在2.9.0或以上
3)代理程序的版本在2.125或以上
如果你使用TFVC(TFS系統中使用的集中式代碼庫),你還必須安裝Oracle Java JDK 1.6或以上版本。切記,JRE和OpenJDK是不夠的,必須Oracle JDK。
3. 權限和賬戶
在部署之前,你必須擁有一個具備創建代理權限的賬戶。
如果對配置代理和代理池的權限不太熟悉,你可以簡單使用集合管理員賬戶或者服務器管理員賬戶,這個級別的管理員賬戶,默認具備系統的所有權限。由於這是一次性的配置工作,在完成配置后,系統不會保存和使用配置過程中使用的賬戶,你無需擔心后續修改了賬戶密碼,會影響代理的正常運行。
4. 配置和安裝代理
- 在macOS上,使用瀏覽器打開Azure DevOps Server,進入到代理配置頁面,選擇下載代理
2)選擇macOS類型的代理,並點擊下載按鈕,從互聯網中下載到最新版本的代理程序
如果需要在無互聯網的環境中安裝macOS代理(例如筆者的這次安裝,就是在國內某銀行科技部內網實施的),你可以添加將這個代理,從github 或者https://vstsagentpackage.azureedge.net/agent/2.153.1/vsts-agent-osx-x64-2.153.1.tar.gz,提前下載,復制到內網中。
3)將下載的安裝包解壓縮到指定目錄
由於可以在同一台macOS中安裝多個代理,實現多條流水線並發執行,我們通常創建類型~/devAgents/agent1這樣的文件夾,將安裝包文件解壓縮在agent1目錄中
4)執行config.sh目錄,完成安裝配置工作
./config.sh
配置過程比較簡單,按照提示輸入必要的項目就可以。需要注意一下幾點:
- 服務器URL:一般是Azure DevOps的對外發布地址,例如http://dev.mycomany.com/,或者http://dev.mycompany.com:8080/tfs/
- 認證方式:
- 基本認證方式:需要在IIS配置好基本認證方式
- 集成認證:一般是使用域賬戶認證,不適用macOS;如果使用windows操作系統,必須確保配置代理的操作賬戶是域賬戶
- Negotiate :默認的認證方式,一般是NTLM和Kerberos兩種認證方式;目前幾乎所有Azure DevOps Server都使用NTLM認證,其中AD域賬戶又根據普遍,賬戶的輸入方式如下domain/username
- PAT:是指令牌認證,需要提前在Azure DevOps Server中創建令牌,粘貼到這里
5)運行代理程序
有兩種運行代理程序的模式:交互式和服務運行
- 交互式運行:是指可以在使用賬戶登錄macOS后,執行下面的指令,運行代理程序
./run.sh
- 服務運行:是指將代理程序安裝成macOS的服務,在系統啟動后,代理程序會自動運行,無需用戶登錄或干預
下面是安裝服務器的指令:
./svc.sh install
./svc.sh start
./svc.sh stop
當代理程序正常運行后,你可以使用瀏覽器在Azure DevOps Server中看到正在運行的代理程序,並在流水線中使用它實現持續集成和發布。
------------------------------------------------------------
http://www.cnblogs.com/danzhang/ DevOps MVP 張洪君
------------------------------------------------------------