boots
Azure DevOps | App Center |
---|---|
boots
is a .NET global tool for "bootstrapping" vsix & pkg files.
boots
is useful for pinning a version of Mono, Xamarin, etc. when building projects on Azure DevOps Hosted Agents. You don't get to choose what versions of things are installed on each agent, so it makes sense to install things yourself for reproducible builds. It also allows you to install preview versions of things (or more recent!) before they come preinstalled on Hosted build agents.
Use it
dotnet tool install --global boots
boots https://url/to/your/package
boots
currently supports Windows & Mac OSX, therefore:
- On Windows - assumes the file is a
.vsix
and installs it into all instances of Visual Studio viaVSIXInstaller.exe
. - On Mac OSX - assumes the file is a
.pkg
and installs it
@motz gives a quick walkthrough on Twitch.tv:
Use the Azure Pipeline Extension Task
Install the extension into your DevOps instance and add the task to a build or release, or use it from YAML:
steps:
- task: Boots@1
displayName: Install Xamarin.Android
inputs:
uri: https://aka.ms/xamarin-android-commercial-d16-2-windows
You can install the Boots Extension from the VS Marketplace.
See the Boots Task Extension Source for more details.
If you don't want to use the extension, alternatively you can:
variables:
DOTNET_SKIP_FIRST_TIME_EXPERIENCE: true
steps:
- script: |
dotnet tool install --global boots
boots https://aka.ms/xamarin-android-commercial-d16-2-windows
DOTNET_SKIP_FIRST_TIME_EXPERIENCE
is optional, but will speed up the first dotnet
command.
Some Examples
Install Mono, Xamarin.Android, and Xamarin.iOS on Mac OSX:
boots https://download.mono-project.com/archive/6.0.0/macos-10-universal/MonoFramework-MDK-6.0.0.313.macos10.xamarin.universal.pkg
boots https://aka.ms/xamarin-android-commercial-d16-2-macos
boots https://bosstoragemirror.blob.core.windows.net/wrench/jenkins/xcode10.3/72cb587a39c12dfaa20cd5a0b1eb60a908ff88a6/1/package/xamarin.ios-12.14.0.113.pkg
Install Xamarin.Android on Windows:
boots https://aka.ms/xamarin-android-commercial-d16-2-windows
I got each URL from:
To upgrade .NET Core on Mac OSX, assuming you have some version of .NET Core to start with:
boots https://download.visualstudio.microsoft.com/download/pr/1440e4a9-4e5f-4148-b8d2-8a2b3da4e622/d0c5cb2712e51c188200ea420d771c2f/dotnet-sdk-2.2.301-osx-x64.pkg
Url from: .NET Core Downloads. NOTE: I used the Network tab in Chrome to find the final URL.
App Center
samples/HelloForms.sln
is a "Hello World" Xamarin.Forms project configured with boots
installing newer versions than what is available on App Center:
See appcenter-post-clone.sh
in this repo for an example of setting up boots
. See the App Center docs for further detail about custom build scripts.
Cake
You can use boots
from a Cake script, which is helpful if you need other logic to decide what needs to be installed.
#addin nuget:?package=Cake.Boots
Task("Boots")
.Does(async () =>
{
var platform = IsRunningOnWindows() ? "windows" : "macos";
await Boots ($"https://aka.ms/xamarin-android-commercial-d16-2-{platform}");
});
Other CI Systems
boots
has been tested, and appears to work fine on:
Any build environment that can be configured to run .NET Core 2.1, can run boots
. If you have success on other CI systems, let us know!