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. 配置和安装代理

  1. 在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 张洪君

------------------------------------------------------------

在macOS苹果电脑上安装Azure DevOps Server(TFS)代理的更多相关文章

  1. 在Azure DevOps Server (TFS)的流水线中编译和测试Xcode移动应用(iPhone)

    概述 Xcode是开发基于苹果macOS系统的桌面应用和移动应用的主要IDE工具.使用Azure DevOps Server (原名TFS)系统中的pipelines流水线功能,可以方便的集成Xcod ...

  2. Azure DevOps Server (TFS) 代码库Repo管理培训

    Repo是分布式代码库Git中的一个专用词,用于存储和管理开发团队中特定的源代码. 使用Git,可以协调整个团队的代码更改. 即使您只是一个开发人员,版本控制也可以帮助您在修复错误和开发新功能时保持井 ...

  3. 在Azure DevOps Server的代理服务器安装Python环境

    Python和Azure DevOps Server Python是一种计算机程序设计语言.是一种动态的.面向对象的脚本语言,最初主要为系统运维人员编写自动化脚本,在实际应用中,Python已经在前端 ...

  4. 在Azure DevOps Server (TFS)中实现VUE项目的自动打包

    概述 Vue.js(读音 /vjuː/, 类似于 view)是一个构建数据驱动的 web 界面的渐进式框架.由于它在数据绑定.页面展示和使用简单方面有很大的优势,逐渐被越来越多的前端开发团队使用.本文 ...

  5. 还原Azure DevOps Server (TFS)中误删除的生成流水线

    流水线历史记录 DevOps Server流水线的历史记录有完善的版本日志,用户可以随时回退到修改过程中的任何一个版本,还能比较差异.这个历史记录功能可以和代码库中的版本控制媲美. 图一:生成历史记录 ...

  6. 在Azure DevOps Server (TFS 2019) 流水线传递参数

    变量概述 在Azure DevOps Server的流水线中,变量是衔接不同任务和不通代理之间的桥梁,它可以使相对松散.各自独立的任务之间相关影响并共享数据.在流水线中使用变量,可以在各任务之间相互调 ...

  7. Azure DevOps Server (TFS)中代码文件换行问题解决方案(Git)

    之前写过一篇博客"探索TFS Git 库文件换行(CRLF)的处理方式",主要是针对TFVC代码库的. 下面这篇文章说明如何在TFS的Git库中处理代码换行的问题. 概述 在Azu ...

  8. 集成Azure DevOps Server(TFS) 与微软Teams

    1.概述 Microsoft Teams是Office 365中团队协作的中心.将团队的所有聊天.会议.文件和应用程序放在一个位置.软件开发团队可以在一个专门的协作中心中即时访问他们所需的所有内容,T ...

  9. 在Windows操作系统的文件管理器中集成Azure DevOps Server (TFS)工具菜单

    故事场景 使用过SVN的用户,都知道在Windows的文件夹上点击鼠标右键,就会弹出Tortoise SVN的操作菜单(俗称小乌龟).通过这个功能,用户不需要打开SVN工具,可以直接在Windows的 ...

随机推荐

  1. 隐马尔可夫模型(HMM)及Viterbi算法

    HMM简介 对于算法爱好者来说,隐马尔可夫模型的大名那是如雷贯耳.那么,这个模型到底长什么样?具体的原理又是什么呢?有什么具体的应用场景呢?本文将会解答这些疑惑. 本文将通过具体形象的例子来引入该模型 ...

  2. VMware下扩展Ubuntu根分区大小

    一.查看磁盘信息 使用df命令用来查看文件系统的磁盘空间占用情况,由下可知我的/dev/sda1分区是挂载在根目录下的,本文目标就是来扩容/dev/sda1分区. 二.下载Gparted工具 Gpar ...

  3. 大话设计模式Python实现-单例模式

    单例模式(Singleton Pattern):保证类仅有一个实例,并提供一个访问它的全局访问点. 下面是单例模式的demo: #!/usr/bin/env python # -*- coding:u ...

  4. Java反射方法总结

    1.得到构造器的方法 Constructor getConstructor(Class[] params) -- 获得使用特殊的参数类型的公共构造函数, Constructor[] getConstr ...

  5. Java生鲜电商平台-订单架构实战

    Java生鲜电商平台-订单架构实战 生鲜电商中订单中心是一个电商后台系统的枢纽,在这订单这一环节上需要读取多个模块的数据和信息进行加工处理,并流向下一环节:因此订单模块对一电商系统来说,重要性不言而喻 ...

  6. MES论坛

    MES是智能制造的核心系统,是实现中国制造2025的关键应用系统.MES应用于车间执行层,中文为制造执行系统. 目前MES交流社区比较少,已有的都显得比较杂乱,所以新开了一个MES论坛地址为https ...

  7. 告诉你如何在Xcode中安装炫酷的插件!!!!!

    (如果你已经有了自己喜欢的插件,你可以直接找到该插件的下载地址,下载下来,参照下面的步骤来安装到Xcode工程之中) 如果还没有找到自己想要的插件,那么推荐你在开源中国社区http://www.osc ...

  8. git终端提交代码

  9. PHP代码篇(七)--PHP及MySQL已经使用过的函数

    一.PHP常用函数 //数组转字符串 $str = implode(',',$device_string); //字符串转数组 $arr = explode(',',$device_string); ...

  10. MySQL 部署 MHA 高可用架构 (一)

    MHA 官方网址 Manager : https://github.com/yoshinorim/mha4mysql-manager Node : https://github.com/yoshino ...