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. Web自动化测试Selenium 学习笔记(一)

    1.Web自动化测试简介自动化基础:自动化用例编写.Selenium优势及原理.自动化环境搭建Selenium基础:常见8大元素定位(表格).常见元素处理.下拉框元素处理.不同窗口切换.元素进阶.元素 ...

  2. 【shell脚本】nginx启动脚本

    [root@localhost init.d]# cat nginx #!/bin/bash #nx Startup script for the Nginx HTTP Server # it ver ...

  3. 【转】理解ASP.NET Core验证模型(Claim, ClaimsIdentity, ClaimsPrincipal)不得不读的英文博文

    这篇英文博文是 Andrew Lock 写的 Introduction to Authentication with ASP.NET Core . 以下是简单的阅读笔记: -------------- ...

  4. Spring Cloud Gateway入坑记

    Spring Cloud Gateway入坑记 前提 最近在做老系统的重构,重构完成后新系统中需要引入一个网关服务,作为新系统和老系统接口的适配和代理.之前,很多网关应用使用的是Spring-Clou ...

  5. java基础(14):Eclipse、面向对象、自定义数据类型的使用

    1. Eclipse的应用 1. 常用快捷操作 Ctrl+T:查看所选中类的继承树 例如,在下面代码中,选中Teacher类名,然后按Ctrl+T,就会显示出Teacher类的继承关系 //员工 ab ...

  6. Python爬虫反反爬:CSS反爬加密彻底破解!

    刚开始搞爬虫的时候听到有人说爬虫是一场攻坚战,听的时候也没感觉到特别,但是经过了一段时间的练习之后,深以为然,每个网站不一样,每次爬取都是重新开始,所以,爬之前谁都不敢说会有什么结果. 前两天,应几个 ...

  7. C++ 手把手教你实现可变长的数组

    01 实现自定义的可变长数组类型 假设我们要实现一个会自动扩展的数组,要实现什么函数呢?先从下面的main函数给出的实现,看看有什么函数是需要我们实现的. int main() { MyArray a ...

  8. 使用原生Ajax进行用户名重复的检验

    title: 使用原生Ajax进行用户名重复的检验(一) date: 2019-01-21 17:35:15 tags: [JavaScript,Ajax] --- Ajax的复习 距离刚开始学aja ...

  9. gzip格式分析与识别

    " 介绍gzip格式,识别gzip压缩的数据流量." 在协议分析过程中,经常会发现gzip压缩的数据,例如在HTTP协议中,在HTTP头中会标示,内容编码为gzip.DEFLATE ...

  10. MIME格式解析

    - 邮件例子 一个MIME格式的邮件例子如下: Return-Path: <mlemos@acm.org> To: Manuel Lemos <mlemos@linux.local& ...