aboutsummaryrefslogtreecommitdiff
path: root/scripts/azure-pipelines/osx/configuration/VagrantFile
diff options
context:
space:
mode:
authornicole mazzuca <mazzucan@outlook.com>2020-07-01 10:08:06 -0700
committerGitHub <noreply@github.com>2020-07-01 10:08:06 -0700
commit0084acc75da5fe831f90c0c16fcb3ce46fb8a533 (patch)
tree14435cb41b0e3cd94193afad8f3826f7523ff43d /scripts/azure-pipelines/osx/configuration/VagrantFile
parentc8ebb5aa936efc00a238a72c88b80d0223a2ba09 (diff)
downloadvcpkg-0084acc75da5fe831f90c0c16fcb3ce46fb8a533.tar.gz
vcpkg-0084acc75da5fe831f90c0c16fcb3ce46fb8a533.zip
[vcpkg ci] add macos scripts to vcpkg repo (#12172)
* [vcpkg ci] add macos scripts to vcpkg repo * CR changes * docs stuff
Diffstat (limited to 'scripts/azure-pipelines/osx/configuration/VagrantFile')
-rw-r--r--scripts/azure-pipelines/osx/configuration/VagrantFile118
1 files changed, 118 insertions, 0 deletions
diff --git a/scripts/azure-pipelines/osx/configuration/VagrantFile b/scripts/azure-pipelines/osx/configuration/VagrantFile
new file mode 100644
index 000000000..b142b8189
--- /dev/null
+++ b/scripts/azure-pipelines/osx/configuration/VagrantFile
@@ -0,0 +1,118 @@
+require 'json'
+
+require "erb"
+include ERB::Util
+
+configuration = JSON.parse(File.read('./vagrant-configuration.json'))
+
+servers = configuration['machine_identifiers'].map do |id|
+ {
+ :hostname => "#{configuration['base_name']}-#{id}",
+ :box => 'ramsey/macos-catalina',
+ :ram => 12000,
+ :cpu => 5
+ }
+end
+
+brew_formulas = [
+ 'autoconf',
+ 'automake',
+ 'libtool',
+ 'bison' ]
+
+brew_cask_formulas = [
+ 'powershell',
+ 'gfortran' ]
+
+azure_agent_url = 'https://vstsagentpackage.azureedge.net/agent/2.171.1/vsts-agent-osx-x64-2.171.1.tar.gz'
+devops_url = 'https://dev.azure.com/vcpkg'
+agent_pool = 'vcpkgAgentPool'
+pat = configuration['pat']
+archives = configuration['archives']
+archives_url = "//#{archives['username']}:#{url_encode(archives['access_key'])}@#{archives['url']}/#{archives['share']}"
+
+Vagrant.configure('2') do |config|
+ # give them extra time to boot up
+ config.vm.boot_timeout = 600
+
+ servers.each do |machine|
+ config.vm.define machine[:hostname] do |node|
+
+ node.vm.box = machine[:box]
+ node.vm.hostname = machine[:hostname]
+ node.vm.synced_folder '.', '/vagrant', disabled: true
+
+ node.vm.disk :disk, name: "#{machine[:hostname]}-data", size: "#{config['disk_size']}GB"
+
+ node.vm.provision 'shell',
+ run: 'once',
+ name: 'Format and mount the data filesystem',
+ inline: 'diskutil partitionDisk /dev/disk0 1 GPT jhfs+ data 0',
+ privileged: true
+
+ node.vm.provision 'shell',
+ run: 'once',
+ name: 'Link the data filesystem to the home directory',
+ inline: "ln -s /Volumes/data ~/Data",
+ privileged: false
+
+ node.vm.provision 'shell',
+ run: 'once',
+ name: 'Download azure agent',
+ inline: "curl -s -o ~/Downloads/azure-agent.tar.gz #{azure_agent_url}",
+ privileged: false
+
+ node.vm.provision 'shell',
+ run: 'once',
+ name: 'Unpack azure agent',
+ inline: 'mkdir myagent; cd myagent; tar xf ~/Downloads/azure-agent.tar.gz',
+ privileged: false
+
+ node.vm.provision 'shell',
+ run: 'once',
+ name: 'Install brew and xcode command line tools',
+ inline: '/usr/bin/ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)"',
+ privileged: false
+
+ node.vm.provision 'shell',
+ run: 'once',
+ name: 'Install brew applications',
+ inline: "brew install #{brew_formulas.join(' ')} && brew cask install #{brew_cask_formulas.join(' ')}",
+ privileged: false
+
+ node.vm.provision 'shell',
+ run: 'once',
+ name: 'Create archives mountpoint',
+ inline: 'mkdir ~/Data/archives',
+ privileged: false
+
+ node.vm.provision "shell",
+ run: 'once',
+ name: 'Mount archives directory',
+ inline: "mount_smbfs -d 777 -f 777 #{archives_url} ~/Data/archives",
+ privileged: false
+
+ node.vm.provision 'shell',
+ run: 'once',
+ name: 'Add VM to azure agent pool',
+ inline: "cd ~/myagent;\
+ ./config.sh --unattended \
+ --url #{devops_url} \
+ --work ~/Data/work \
+ --auth pat --token #{pat} \
+ --pool #{agent_pool} \
+ --agent `hostname` \
+ --replace \
+ --acceptTeeEula",
+ privileged: false
+
+ # Start listening for jobs
+ node.vm.provision 'shell',
+ run: 'always',
+ name: 'Start running azure pipelines',
+ inline: 'cd /Users/vagrant/myagent;\
+ nohup ./run.sh&',
+ privileged: false
+ end
+ end
+end