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. 【STM32H7教程】第18章 STM32H7的GPIO应用之跑马灯

    完整教程下载地址:http://www.armbbs.cn/forum.php?mod=viewthread&tid=86980 第18章       STM32H7的GPIO应用之跑马灯 本 ...

  2. Google工作法

    本文转自:https://www.yuque.com/heqingbao/msfy2c/zg56gm 这几天去上海参加Google开发者大会,利用空闲时间读了一本快餐书,书名叫<Google工作 ...

  3. 【Oracle】Oracle常用命令整理(持续更新中)

    一些常用的操作命令记录 SQLPlus连接 sqlplus {username}/{password}@{ip}:{port}/{sid} 创建用户 create user testuser iden ...

  4. Linux - 几种方法来实现scp拷贝时无需输入密码

    前言 在实际工作中,经常会将本地的一些文件传送到远程的机器上.scp是一个很好用的命令,缺点是需要手工输入密码. 如何在shell脚本中实现传输文件,而不用手工输入密码呢?接下来介绍三种方法. 一.建 ...

  5. 关于.Net Core 部署在Linux下连接SqlServer数据库超时解决办法

    .Net Core 在 Linux 下连接 SqlServer 需要 SqlServer2008 SP3或以上版本,或SqlServer2012,或SqlServer2014. 如果SqlServer ...

  6. java基础(8):Eclipse开发工具

    1. Eclipse开发工具 Eclipse是功能强大Java集成开发工具.它可以极大地提升我们的开发效率.可以自动编译,检查错误.在公司中,使用的就是Eclipse进行开发. 1.1 Eclipse ...

  7. Mac下安装adb

    1.检查是否安装adb briandeMacBook-Pro:~ brian$ adb -bash: adb: command not found briandeMacBook-Pro:~ brian ...

  8. Java反射及注解

    一.反射 1.动态语言:是指程序在运行是可以改变其结构:新的函数可以引进,已有的函数可以被删除等结构上的变化.比如常见的JavaScript就是动态语言,除此以外Python等也属于动态语言,而C.C ...

  9. Java --Lamda表达式

    Lamda:属于函数式编程的概念: interface IMessage { public void print() ; } public class TestDemo { public static ...

  10. linux守护进程start-stop-daemon启动服务

    start-stop-daemon #! /bin/sh PATH=/sbin:/bin . /lib/lsb/init-functions do_start () { log_action_msg ...