在Azure Devops Microsoft托管的生成服务器上安装依赖项的新版本

问题描述

我的iOS Xamarin移动应用程序的azure构建管道存在问题。该问题要求单版本6.10.0在构建服务器上可用。当前,用于macOS 10.14的预安装映像仅包含Mono,版本最高为6.08。 macOS 10.15的映像确实包含正确版本的Mono,但是由于内部原因,我目前无法升级到10.15。

有没有一种方法可以在构建之前更新管道以安装新版本的Mono?还是我们完全限于图像中包含的软件?我正在使用Microsoft托管服务器。

解决方法

有没有一种方法可以在构建之前更新管道以安装新版本的Mono?

正如您所说, Microsoft托管代理:Macos-10.14 中不存在Mono版本6.10.0,但是您可以在Xamarin任务之前运行脚本以安装目标Mono。版本。

以下是管道示例:

steps:
- bash: |
   #!/bin/bash
   set -ex
   
   
   MONO_MACOS_PKG_DOWNLOAD_URL='https://download.mono-project.com/archive/6.10.0/macos-10-universal/MonoFramework-MDK-6.10.0.49.macos10.xamarin.universal.pkg'
   
   
   mkdir -p /tmp/mono-install
   cd /tmp/mono-install
   
   # debug: mono version before the install
   mono --version
   
   # download mono mac installer (pkg)
   wget -q -O ./mono-installer.pkg "$MONO_MACOS_PKG_DOWNLOAD_URL"
   
   # install it
   sudo installer -pkg ./mono-installer.pkg -target /
   
   # debug: mono version after install,just to confirm it did overwrite the original version
   mono --version
   
   # just for fun print this symlink too,which should point to the version we just installed
   ls -alh /Library/Frameworks/Mono.framework/Versions/Current
  displayName: 'Bash Script'

- script: |
   mono -V
   
   cat `which mcs`
  displayName: 'Command Line Script'

这里a Blog是关于安装单声道的。

结果:

enter image description here

,

Azure Pipelines托管代理是通用的构建和部署代理。因此,Microsoft不会添加一些可能会导致极端情况的软件的任意旧版本。

但是,您确实可以使用自制软件和其他工具,这些工具可以让您在代理上安装所需的软件。您还可以访问设置环境变量。这样您就可以安装所有需要的软件。

关于坚持使用macOS 10.14以及任何所需版本的Mono的要求。在某些时候,您必须意识到Microsoft提供的图像中的 none 都没有任何此软件。因此,如果必须具有此环境,请制作自己的托管macOS代理并将其添加到池中以运行类似的内容。