mirror of
https://github.com/actions/runner-images.git
synced 2025-12-10 11:07:02 +00:00
Inital commit.
This commit is contained in:
2
.gitattributes
vendored
Normal file
2
.gitattributes
vendored
Normal file
@@ -0,0 +1,2 @@
|
||||
# Do not normalize line endings
|
||||
* -text
|
||||
390
.gitignore
vendored
Normal file
390
.gitignore
vendored
Normal file
@@ -0,0 +1,390 @@
|
||||
## Ignore Visual Studio temporary files, build results, and
|
||||
## files generated by popular Visual Studio add-ons.
|
||||
##
|
||||
## Get latest from https://github.com/github/gitignore/blob/master/VisualStudio.gitignore
|
||||
|
||||
# User-specific files
|
||||
*.suo
|
||||
*.user
|
||||
*.userosscache
|
||||
*.sln.docstates
|
||||
|
||||
# User-specific files (MonoDevelop/Xamarin Studio)
|
||||
*.userprefs
|
||||
|
||||
# Build results
|
||||
[Dd]ebug/
|
||||
[Dd]ebugPublic/
|
||||
[Rr]elease/
|
||||
[Rr]eleases/
|
||||
x64/
|
||||
x86/
|
||||
bld/
|
||||
[Bb]in/
|
||||
[Oo]bj/
|
||||
[Ll]og/
|
||||
|
||||
# Visual Studio 2015 cache/options directory
|
||||
.vs/
|
||||
# Uncomment if you have tasks that create the project's static files in wwwroot
|
||||
#wwwroot/
|
||||
|
||||
# MSTest test Results
|
||||
[Tt]est[Rr]esult*/
|
||||
[Bb]uild[Ll]og.*
|
||||
|
||||
# NUNIT
|
||||
*.VisualState.xml
|
||||
TestResult.xml
|
||||
|
||||
# Build Results of an ATL Project
|
||||
[Dd]ebugPS/
|
||||
[Rr]eleasePS/
|
||||
dlldata.c
|
||||
|
||||
# .NET Core
|
||||
project.lock.json
|
||||
project.fragment.lock.json
|
||||
artifacts/
|
||||
**/Properties/launchSettings.json
|
||||
|
||||
*_i.c
|
||||
*_p.c
|
||||
*_i.h
|
||||
*.ilk
|
||||
*.meta
|
||||
*.obj
|
||||
*.pch
|
||||
*.pdb
|
||||
*.pgc
|
||||
*.pgd
|
||||
*.rsp
|
||||
*.sbr
|
||||
*.tlb
|
||||
*.tli
|
||||
*.tlh
|
||||
*.tmp
|
||||
*.tmp_proj
|
||||
*.log
|
||||
*.vspscc
|
||||
*.vssscc
|
||||
.builds
|
||||
*.pidb
|
||||
*.svclog
|
||||
*.scc
|
||||
|
||||
# Chutzpah Test files
|
||||
_Chutzpah*
|
||||
|
||||
# Visual C++ cache files
|
||||
ipch/
|
||||
*.aps
|
||||
*.ncb
|
||||
*.opendb
|
||||
*.opensdf
|
||||
*.sdf
|
||||
*.cachefile
|
||||
*.VC.db
|
||||
*.VC.VC.opendb
|
||||
|
||||
# Visual Studio profiler
|
||||
*.psess
|
||||
*.vsp
|
||||
*.vspx
|
||||
*.sap
|
||||
|
||||
# TFS 2012 Local Workspace
|
||||
$tf/
|
||||
|
||||
# Guidance Automation Toolkit
|
||||
*.gpState
|
||||
|
||||
# ReSharper is a .NET coding add-in
|
||||
_ReSharper*/
|
||||
*.[Rr]e[Ss]harper
|
||||
*.DotSettings.user
|
||||
|
||||
# JustCode is a .NET coding add-in
|
||||
.JustCode
|
||||
|
||||
# TeamCity is a build add-in
|
||||
_TeamCity*
|
||||
|
||||
# DotCover is a Code Coverage Tool
|
||||
*.dotCover
|
||||
|
||||
# Visual Studio code coverage results
|
||||
*.coverage
|
||||
*.coveragexml
|
||||
|
||||
# NCrunch
|
||||
_NCrunch_*
|
||||
.*crunch*.local.xml
|
||||
nCrunchTemp_*
|
||||
|
||||
# MightyMoose
|
||||
*.mm.*
|
||||
AutoTest.Net/
|
||||
|
||||
# Web workbench (sass)
|
||||
.sass-cache/
|
||||
|
||||
# Installshield output folder
|
||||
[Ee]xpress/
|
||||
|
||||
# DocProject is a documentation generator add-in
|
||||
DocProject/buildhelp/
|
||||
DocProject/Help/*.HxT
|
||||
DocProject/Help/*.HxC
|
||||
DocProject/Help/*.hhc
|
||||
DocProject/Help/*.hhk
|
||||
DocProject/Help/*.hhp
|
||||
DocProject/Help/Html2
|
||||
DocProject/Help/html
|
||||
|
||||
# Click-Once directory
|
||||
publish/
|
||||
|
||||
# Publish Web Output
|
||||
*.[Pp]ublish.xml
|
||||
*.azurePubxml
|
||||
# TODO: Comment the next line if you want to checkin your web deploy settings
|
||||
# but database connection strings (with potential passwords) will be unencrypted
|
||||
*.pubxml
|
||||
*.publishproj
|
||||
|
||||
# Microsoft Azure Web App publish settings. Comment the next line if you want to
|
||||
# checkin your Azure Web App publish settings, but sensitive information contained
|
||||
# in these scripts will be unencrypted
|
||||
PublishScripts/
|
||||
|
||||
# NuGet Packages
|
||||
*.nupkg
|
||||
# The packages folder can be ignored because of Package Restore
|
||||
**/packages/*
|
||||
# except build/, which is used as an MSBuild target.
|
||||
!**/packages/build/
|
||||
# Uncomment if necessary however generally it will be regenerated when needed
|
||||
#!**/packages/repositories.config
|
||||
# NuGet v3's project.json files produces more ignorable files
|
||||
*.nuget.props
|
||||
*.nuget.targets
|
||||
|
||||
# Microsoft Azure Build Output
|
||||
csx/
|
||||
*.build.csdef
|
||||
|
||||
# Microsoft Azure Emulator
|
||||
ecf/
|
||||
rcf/
|
||||
|
||||
# Windows Store app package directories and files
|
||||
AppPackages/
|
||||
BundleArtifacts/
|
||||
Package.StoreAssociation.xml
|
||||
_pkginfo.txt
|
||||
|
||||
# Visual Studio cache files
|
||||
# files ending in .cache can be ignored
|
||||
*.[Cc]ache
|
||||
# but keep track of directories ending in .cache
|
||||
!*.[Cc]ache/
|
||||
|
||||
# Others
|
||||
ClientBin/
|
||||
~$*
|
||||
*~
|
||||
*.dbmdl
|
||||
*.dbproj.schemaview
|
||||
*.jfm
|
||||
*.pfx
|
||||
*.publishsettings
|
||||
orleans.codegen.cs
|
||||
|
||||
# Since there are multiple workflows, uncomment next line to ignore bower_components
|
||||
# (https://github.com/github/gitignore/pull/1529#issuecomment-104372622)
|
||||
#bower_components/
|
||||
|
||||
# RIA/Silverlight projects
|
||||
Generated_Code/
|
||||
|
||||
# Backup & report files from converting an old project file
|
||||
# to a newer Visual Studio version. Backup files are not needed,
|
||||
# because we have git ;-)
|
||||
_UpgradeReport_Files/
|
||||
Backup*/
|
||||
UpgradeLog*.XML
|
||||
UpgradeLog*.htm
|
||||
|
||||
# SQL Server files
|
||||
*.mdf
|
||||
*.ldf
|
||||
*.ndf
|
||||
|
||||
# Business Intelligence projects
|
||||
*.rdl.data
|
||||
*.bim.layout
|
||||
*.bim_*.settings
|
||||
|
||||
# Microsoft Fakes
|
||||
FakesAssemblies/
|
||||
|
||||
# GhostDoc plugin setting file
|
||||
*.GhostDoc.xml
|
||||
|
||||
# Node.js Tools for Visual Studio
|
||||
.ntvs_analysis.dat
|
||||
node_modules/
|
||||
|
||||
# Typescript v1 declaration files
|
||||
typings/
|
||||
|
||||
# Visual Studio 6 build log
|
||||
*.plg
|
||||
|
||||
# Visual Studio 6 workspace options file
|
||||
*.opt
|
||||
|
||||
# Visual Studio 6 auto-generated workspace file (contains which files were open etc.)
|
||||
*.vbw
|
||||
|
||||
# Visual Studio LightSwitch build output
|
||||
**/*.HTMLClient/GeneratedArtifacts
|
||||
**/*.DesktopClient/GeneratedArtifacts
|
||||
**/*.DesktopClient/ModelManifest.xml
|
||||
**/*.Server/GeneratedArtifacts
|
||||
**/*.Server/ModelManifest.xml
|
||||
_Pvt_Extensions
|
||||
|
||||
# Paket dependency manager
|
||||
.paket/paket.exe
|
||||
paket-files/
|
||||
|
||||
# FAKE - F# Make
|
||||
.fake/
|
||||
|
||||
# JetBrains Rider
|
||||
.idea/
|
||||
*.sln.iml
|
||||
|
||||
# CodeRush
|
||||
.cr/
|
||||
|
||||
# Python Tools for Visual Studio (PTVS)
|
||||
__pycache__/
|
||||
*.pyc
|
||||
|
||||
# Cake - Uncomment if you are using it
|
||||
# tools/**
|
||||
# !tools/packages.config
|
||||
|
||||
# Telerik's JustMock configuration file
|
||||
*.jmconfig
|
||||
|
||||
# BizTalk build output
|
||||
*.btp.cs
|
||||
*.btm.cs
|
||||
*.odx.cs
|
||||
*.xsd.cs
|
||||
|
||||
# Ignore files generated by packer
|
||||
InstalledSoftware.md
|
||||
|
||||
# Desktop Service Store
|
||||
.DS_Store
|
||||
|
||||
# Logs
|
||||
logs
|
||||
*.log
|
||||
npm-debug.log*
|
||||
yarn-debug.log*
|
||||
yarn-error.log*
|
||||
lerna-debug.log*
|
||||
|
||||
# Diagnostic reports (https://nodejs.org/api/report.html)
|
||||
report.[0-9]*.[0-9]*.[0-9]*.[0-9]*.json
|
||||
|
||||
# Runtime data
|
||||
pids
|
||||
*.pid
|
||||
*.seed
|
||||
*.pid.lock
|
||||
|
||||
# Directory for instrumented libs generated by jscoverage/JSCover
|
||||
lib-cov
|
||||
|
||||
# Coverage directory used by tools like istanbul
|
||||
coverage
|
||||
*.lcov
|
||||
|
||||
# nyc test coverage
|
||||
.nyc_output
|
||||
|
||||
# Grunt intermediate storage (https://gruntjs.com/creating-plugins#storing-task-files)
|
||||
.grunt
|
||||
|
||||
# Bower dependency directory (https://bower.io/)
|
||||
bower_components
|
||||
|
||||
# node-waf configuration
|
||||
.lock-wscript
|
||||
|
||||
# Compiled binary addons (https://nodejs.org/api/addons.html)
|
||||
build/Release
|
||||
|
||||
# Dependency directories
|
||||
node_modules/
|
||||
jspm_packages/
|
||||
|
||||
# TypeScript v1 declaration files
|
||||
typings/
|
||||
|
||||
# TypeScript cache
|
||||
*.tsbuildinfo
|
||||
|
||||
# Optional npm cache directory
|
||||
.npm
|
||||
|
||||
# Optional eslint cache
|
||||
.eslintcache
|
||||
|
||||
# Optional REPL history
|
||||
.node_repl_history
|
||||
|
||||
# Output of 'npm pack'
|
||||
*.tgz
|
||||
|
||||
# Yarn Integrity file
|
||||
.yarn-integrity
|
||||
|
||||
# dotenv environment variables file
|
||||
.env
|
||||
.env.test
|
||||
|
||||
# parcel-bundler cache (https://parceljs.org/)
|
||||
.cache
|
||||
|
||||
# next.js build output
|
||||
.next
|
||||
|
||||
# nuxt.js build output
|
||||
.nuxt
|
||||
|
||||
# gatsby files
|
||||
.cache/
|
||||
public
|
||||
|
||||
# vuepress build output
|
||||
.vuepress/dist
|
||||
|
||||
# Serverless directories
|
||||
.serverless/
|
||||
|
||||
# FuseBox cache
|
||||
.fusebox/
|
||||
|
||||
# DynamoDB Local files
|
||||
.dynamodb/
|
||||
|
||||
# visual studio code launch configuration
|
||||
launch.json
|
||||
4
.vscode/settings.json
vendored
Normal file
4
.vscode/settings.json
vendored
Normal file
@@ -0,0 +1,4 @@
|
||||
{
|
||||
// When enabled, will trim trailing whitespace when you save a file.
|
||||
"files.trimTrailingWhitespace": true
|
||||
}
|
||||
42
.vscode/tasks.json
vendored
Normal file
42
.vscode/tasks.json
vendored
Normal file
@@ -0,0 +1,42 @@
|
||||
// Available variables which can be used inside of strings.
|
||||
// ${workspaceRoot}: the root folder of the team
|
||||
// ${file}: the current opened file
|
||||
// ${relativeFile}: the current opened file relative to workspaceRoot
|
||||
// ${fileBasename}: the current opened file's basename
|
||||
// ${fileDirname}: the current opened file's dirname
|
||||
// ${fileExtname}: the current opened file's extension
|
||||
// ${cwd}: the current working directory of the spawned process
|
||||
{
|
||||
// See https://go.microsoft.com/fwlink/?LinkId=733558
|
||||
// for the documentation about the tasks.json format
|
||||
"version": "2.0.0",
|
||||
|
||||
// Start PowerShell
|
||||
"windows": {
|
||||
"command": "${env:windir}/System32/WindowsPowerShell/v1.0/powershell.exe",
|
||||
//"command": "${env:ProgramFiles}/PowerShell/6.0.0/powershell.exe",
|
||||
"args": [ "-NoProfile", "-ExecutionPolicy", "Bypass" ]
|
||||
},
|
||||
"linux": {
|
||||
"command": "/usr/bin/powershell",
|
||||
"args": [ "-NoProfile" ]
|
||||
},
|
||||
"osx": {
|
||||
"command": "/usr/local/bin/powershell",
|
||||
"args": [ "-NoProfile" ]
|
||||
},
|
||||
|
||||
// Associate with test task runner
|
||||
"tasks": [
|
||||
{
|
||||
"taskName": "Test",
|
||||
"suppressTaskName": true,
|
||||
"isTestCommand": true,
|
||||
"args": [
|
||||
"Write-Host 'Invoking Pester...'; $ProgressPreference = 'SilentlyContinue'; Invoke-Pester -Script test -PesterOption @{IncludeVSCodeMarker=$true};",
|
||||
"Invoke-Command { Write-Host 'Completed Test task in task runner.' }"
|
||||
],
|
||||
"problemMatcher": "$pester"
|
||||
}
|
||||
]
|
||||
}
|
||||
32
CONTRIBUTING.md
Normal file
32
CONTRIBUTING.md
Normal file
@@ -0,0 +1,32 @@
|
||||
## Contributing
|
||||
|
||||
[fork]: https://github.com/actions/virtual-environments/fork
|
||||
[pr]: https://github.com//actions/virtual-environments/compare
|
||||
[code-of-conduct]: CODE_OF_CONDUCT.md
|
||||
|
||||
Hi there! We're thrilled that you'd like to contribute to this project. Your help is essential for keeping it great.
|
||||
|
||||
Contributions to this project are [released](https://help.github.com/articles/github-terms-of-service/#6-contributions-under-repository-license) to the public under the [MIT](LICENSE.md).
|
||||
|
||||
Please note that this project is released with a [Contributor Code of Conduct][code-of-conduct]. By participating in this project you agree to abide by its terms.
|
||||
|
||||
## Submitting a pull request
|
||||
|
||||
1. [Fork][fork] and clone the repository
|
||||
1. Create a new branch: `git checkout -b my-branch-name`
|
||||
1. Make your changes, ensure that they include steps to install and validate post-install (e.g. [kind.sh](images/linux/scripts/installers/kind.sh)).
|
||||
1. Test your changes by [creating VHD and deploying a VM](help/CreateImageAndAzureResources.md).
|
||||
1. Push to your fork and [submit a pull request][pr]
|
||||
|
||||
Here are a few things you can do that will increase the likelihood of your pull request being accepted:
|
||||
|
||||
- Follow the style guide for [Powershell](https://github.com/PoshCode/PowerShellPracticeAndStyle) when writing Windows scripts. There is currently no set style for the Shell scripts that run Linux installs :soon:.
|
||||
- Include complete details of why this is needed in the PR description. If it's a new piece tool being installed, consider cross-platform. If the tool is available in other platforms (MacOS, Windows, Linux), make sure you include it in as many as possible.
|
||||
- Keep your change as focused as possible. If there are multiple changes you would like to make that are not dependent upon each other, consider submitting them as separate pull requests.
|
||||
- Write [good commit messages](http://tbaggery.com/2008/04/19/a-note-about-git-commit-messages.html).
|
||||
|
||||
## Resources
|
||||
|
||||
- [How to Contribute to Open Source](https://opensource.guide/how-to-contribute/)
|
||||
- [Using Pull Requests](https://help.github.com/articles/about-pull-requests/)
|
||||
- [GitHub Help](https://help.github.com)
|
||||
21
LICENSE
Normal file
21
LICENSE
Normal file
@@ -0,0 +1,21 @@
|
||||
MIT License
|
||||
|
||||
Copyright (c) 2019 GitHub
|
||||
|
||||
Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||
of this software and associated documentation files (the "Software"), to deal
|
||||
in the Software without restriction, including without limitation the rights
|
||||
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
||||
copies of the Software, and to permit persons to whom the Software is
|
||||
furnished to do so, subject to the following conditions:
|
||||
|
||||
The above copyright notice and this permission notice shall be included in all
|
||||
copies or substantial portions of the Software.
|
||||
|
||||
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
||||
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
||||
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
||||
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
||||
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
||||
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
||||
SOFTWARE.
|
||||
@@ -1,6 +1,5 @@
|
||||
# GitHub Actions Virtual Environments
|
||||
This repository will contain the code that we use to create the GitHub Actions [virtual environments](https://help.github.com/en/articles/software-in-virtual-environments-for-github-actions).
|
||||
We're not quite ready to share the code and accept contributions yet. However, we want to gather your software requests and bug reports.
|
||||
This repository contains the code that we use to create the GitHub Actions [virtual environments](https://help.github.com/en/articles/software-in-virtual-environments-for-github-actions).
|
||||
Please use the issue templates to submit requests and bug reports related to the installed software.
|
||||
|
||||
If you need help with how to set up your workflow file or use a specific tool,
|
||||
@@ -11,7 +10,7 @@ We currently offer Linux, macOS, and Windows virtual environments:
|
||||
|
||||
- **Linux**. We offer Ubuntu 16.04 and Ubuntu 18.04. We do not plan to offer other Linux distributions. If you want to build using other distributions with the hosted virtual environments, we suggest you use Docker. Alternatively, you can host your own VMs and make use of self-hosted runners.
|
||||
- **macOS**. We offer macOS Catalina 10.15.
|
||||
- **Windows**. We offer Windows Server 2016 and Windows Server 2019. However, we plan to offer only Windows Server 2019 starting on November 7, 2019. We plan to add Visual Studio 2017 to the Windows Server 2019 virtual environment, but do not yet have a firm ETA.
|
||||
- **Windows**. We offer Windows Server 2019.
|
||||
|
||||
## Guidelines for what's installed
|
||||
We follow these rough guidelines when deciding what to pre-install:
|
||||
|
||||
3
SECURITY.md
Normal file
3
SECURITY.md
Normal file
@@ -0,0 +1,3 @@
|
||||
If you discover a security issue in this repo, please submit it through the [GitHub Security Bug Bounty](https://hackerone.com/github)
|
||||
|
||||
Thanks for helping make GitHub Actions safe for everyone.
|
||||
1
_config.yml
Normal file
1
_config.yml
Normal file
@@ -0,0 +1 @@
|
||||
theme: jekyll-theme-slate
|
||||
27
help/debuggingFailedBuilds.md
Normal file
27
help/debuggingFailedBuilds.md
Normal file
@@ -0,0 +1,27 @@
|
||||
# Debugging Failed Packer Builds
|
||||
|
||||
## Step 1: Run packer build `-on-error=ask`
|
||||
When you run the `packer build` command, give it the `-on-error=ask` flag.
|
||||
By default, `packer build` will delete the resource group as soon as the build fails.
|
||||
`-on-error=ask` will pause it and wait for your input so you have time to remote in to the VM and diagnose the failure.
|
||||
|
||||
When the build fails, you will see this:
|
||||
|
||||

|
||||
|
||||
## Step 2: Find the resource group name in the build log
|
||||
At the beginning of the build log (written to console), find the resource group name for the VM:
|
||||
|
||||

|
||||
|
||||
Log into the Azure Portal. Find that resource group under `Resource groups`. You should see the resources for the Packer build:
|
||||
|
||||

|
||||
|
||||
## Step 3: Connect to the VM
|
||||
Select the VM in the resource group. Click `Connect:`
|
||||
|
||||
This will download an RDP file. Open that and enter the credentials found in the JSON file you pass to `packer build`:
|
||||
|
||||

|
||||
|
||||
BIN
help/resources/askOnError.png
Normal file
BIN
help/resources/askOnError.png
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 21 KiB |
BIN
help/resources/packerResourceGroup.png
Normal file
BIN
help/resources/packerResourceGroup.png
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 70 KiB |
BIN
help/resources/resourceGroupName.png
Normal file
BIN
help/resources/resourceGroupName.png
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 204 KiB |
BIN
help/resources/vmCredentials.png
Normal file
BIN
help/resources/vmCredentials.png
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 139 KiB |
72
helpers/CreateAzureVMFromPackerTemplate.ps1
Normal file
72
helpers/CreateAzureVMFromPackerTemplate.ps1
Normal file
@@ -0,0 +1,72 @@
|
||||
Function CreateAzureVMFromPackerTemplate {
|
||||
<#
|
||||
.SYNOPSIS
|
||||
Creates an Azure VM from a template. Also generates network resources in Azure to make the VM accessible.
|
||||
|
||||
.DESCRIPTION
|
||||
Creates Azure resources and kicks off a packer image generation for the selected image type.
|
||||
|
||||
.PARAMETER SubscriptionId
|
||||
The Azure subscription Id where resources will be created.
|
||||
|
||||
.PARAMETER ResourceGroupName
|
||||
The Azure resource group name where the Azure virtual machine will be created.
|
||||
|
||||
.PARAMETER TemplatFilePath
|
||||
The path for the json template generated by packer during image generation locally.
|
||||
|
||||
.PARAMETER VirtualMachineName
|
||||
The name of the virtual machine to be generated.
|
||||
|
||||
.PARAMETER AdminUserName
|
||||
The administrator username for the virtual machine to be created.
|
||||
|
||||
.PARAMETER AdminPassword
|
||||
The administrator password for the virtual machine to be created.
|
||||
|
||||
.PARAMETER AzureLocation
|
||||
The location where the Azure virtual machine will be provisioned. Example: "eastus"
|
||||
|
||||
.EXAMPLE
|
||||
CreateAzureVMFromPackerTemplate -SubscriptionId {YourSubscriptionId} -ResourceGroupName {ResourceGroupName} -TemplateFile "C:\BuildVmImages\temporaryTemplate.json" -VirtualMachineName "testvm1" -AdminUsername "shady1" -AdminPassword "SomeSecurePassword1" -AzureLocation "eastus"
|
||||
#>
|
||||
param (
|
||||
[Parameter(Mandatory = $True)]
|
||||
[string] $SubscriptionId,
|
||||
[Parameter(Mandatory = $True)]
|
||||
[string] $ResourceGroupName,
|
||||
[Parameter(Mandatory = $True)]
|
||||
[string] $TemplateFilePath,
|
||||
[Parameter(Mandatory = $True)]
|
||||
[string] $VirtualMachineName,
|
||||
[Parameter(Mandatory = $True)]
|
||||
[string] $AdminUsername,
|
||||
[Parameter(Mandatory = $True)]
|
||||
[string] $AdminPassword,
|
||||
[Parameter(Mandatory = $True)]
|
||||
[string] $AzureLocation
|
||||
)
|
||||
|
||||
$vmSize = "Standard_DS2_v2"
|
||||
$vnetName = $env:UserName + [System.GUID]::NewGuid().ToString().ToUpper()
|
||||
$subnetName = $env:UserName + [System.GUID]::NewGuid().ToString().ToUpper()
|
||||
$nicName = $env:UserName + [System.GUID]::NewGuid().ToString().ToUpper()
|
||||
$publicIpName = $env:UserName + [System.GUID]::NewGuid().ToString().ToUpper()
|
||||
|
||||
Write-Host "Creating a Vnet and a Subnet"
|
||||
az network vnet create -g $ResourceGroupName -l $AzureLocation --name $vnetName --address-prefix 10.0.0.0/16 --subscription $subscriptionId
|
||||
az network vnet subnet create -g $ResourceGroupName --vnet-name $vnetName -n $subnetName --address-prefix 10.0.1.0/24 --subscription $subscriptionId
|
||||
|
||||
Write-Host "Creating a network interface card (NIC)."
|
||||
$nic = az network nic create -g $ResourceGroupName --vnet-name $vnetName --subnet $subnetName -n $nicName --subscription $subscriptionId
|
||||
$networkId = ($nic | ConvertFrom-Json).NewNIC.id
|
||||
|
||||
Write-Host "create public IP."
|
||||
az network public-ip create -g $ResourceGroupName -n $publicIpName --subscription $subscriptionId --allocation-method Static --location $AzureLocation --sku Standard --version IPv4
|
||||
|
||||
Write-Host "Adding the public IP to the NIC."
|
||||
az network nic ip-config update --name ipconfig1 --nic-name $nicName --resource-group $ResourceGroupName --subscription $subscriptionId --public-ip-address $publicIpName
|
||||
|
||||
Write-Host "Creating the VM"
|
||||
az group deployment create --resource-group $ResourceGroupName --subscription $subscriptionId --name $VirtualMachineName --template-file $templateFilePath --parameters vmSize=$vmSize vmName=$VirtualMachineName adminUserName=$AdminUsername adminPassword=$AdminPassword networkInterfaceId=$networkId
|
||||
}
|
||||
155
helpers/GenerateResourcesAndImage.ps1
Normal file
155
helpers/GenerateResourcesAndImage.ps1
Normal file
@@ -0,0 +1,155 @@
|
||||
$ErrorActionPreference = 'Stop'
|
||||
|
||||
enum ImageType {
|
||||
Windows2019 = 0
|
||||
Ubuntu1604 = 1
|
||||
Ubuntu1804 = 2
|
||||
}
|
||||
|
||||
Function Get-PackerTemplatePath {
|
||||
param (
|
||||
[Parameter(Mandatory = $True)]
|
||||
[string] $RepositoryRoot,
|
||||
[Parameter(Mandatory = $True)]
|
||||
[ImageType] $ImageType
|
||||
)
|
||||
|
||||
$relativePath = "N/A"
|
||||
|
||||
switch ($ImageType) {
|
||||
([ImageType]::WindowsLatest) {
|
||||
$relativePath = "\images\win\Windows2019-Azure.json"
|
||||
}
|
||||
([ImageType]::Ubuntu1604) {
|
||||
$relativePath = "\images\linux\ubuntu1604.json"
|
||||
}
|
||||
([ImageType]::Ubuntu1804) {
|
||||
$relativePath = "\images\linux\ubuntu1804.json"
|
||||
}
|
||||
}
|
||||
|
||||
return $RepositoryRoot + $relativePath;
|
||||
}
|
||||
|
||||
Function GenerateResourcesAndImage {
|
||||
<#
|
||||
.SYNOPSIS
|
||||
A helper function to help generate an image.
|
||||
|
||||
.DESCRIPTION
|
||||
Creates Azure resources and kicks off a packer image generation for the selected image type.
|
||||
|
||||
.PARAMETER SubscriptionId
|
||||
The Azure subscription Id where resources will be created.
|
||||
|
||||
.PARAMETER ResourceGroupName
|
||||
The Azure resource group name where the Azure resources will be created.
|
||||
|
||||
.PARAMETER ImageGenerationRepositoryRoot
|
||||
The root path of the image generation repository source.
|
||||
|
||||
.PARAMETER ImageType
|
||||
The type of the image being generated. Valid options are: {"WindowsLatest", "Ubuntu1604", "Ubuntu1804"}.
|
||||
|
||||
.PARAMETER AzureLocation
|
||||
The location of the resources being created in Azure. For example "East US".
|
||||
|
||||
.PARAMETER Force
|
||||
Delete the resource group if it exists without user confirmation.
|
||||
|
||||
.EXAMPLE
|
||||
GenerateResourcesAndImage -SubscriptionId {YourSubscriptionId} -ResourceGroupName "shsamytest1" -ImageGenerationRepositoryRoot "C:\azure-pipelines-image-generation" -ImageType Ubuntu1604 -AzureLocation "East US"
|
||||
#>
|
||||
param (
|
||||
[Parameter(Mandatory = $True)]
|
||||
[string] $SubscriptionId,
|
||||
[Parameter(Mandatory = $True)]
|
||||
[string] $ResourceGroupName,
|
||||
[Parameter(Mandatory = $True)]
|
||||
[string] $ImageGenerationRepositoryRoot,
|
||||
[Parameter(Mandatory = $True)]
|
||||
[ImageType] $ImageType,
|
||||
[Parameter(Mandatory = $True)]
|
||||
[string] $AzureLocation,
|
||||
[Parameter(Mandatory = $False)]
|
||||
[int] $SecondsToWaitForServicePrincipalSetup = 30,
|
||||
[Parameter(Mandatory = $False)]
|
||||
[Switch] $Force
|
||||
)
|
||||
|
||||
$builderScriptPath = Get-PackerTemplatePath -RepositoryRoot $ImageGenerationRepositoryRoot -ImageType $ImageType
|
||||
$ServicePrincipalClientSecret = $env:UserName + [System.GUID]::NewGuid().ToString().ToUpper();
|
||||
$InstallPassword = $env:UserName + [System.GUID]::NewGuid().ToString().ToUpper();
|
||||
|
||||
Login-AzureRmAccount
|
||||
Set-AzureRmContext -SubscriptionId $SubscriptionId
|
||||
|
||||
$alreadyExists = $true;
|
||||
try {
|
||||
Get-AzureRmResourceGroup -Name $ResourceGroupName
|
||||
Write-Verbose "Resource group was found, will delete and recreate it."
|
||||
}
|
||||
catch {
|
||||
Write-Verbose "Resource group was not found, will create it."
|
||||
$alreadyExists = $false;
|
||||
}
|
||||
|
||||
if ($alreadyExists) {
|
||||
if($Force -eq $true) {
|
||||
# Cleanup the resource group if it already exitsted before
|
||||
Remove-AzureRmResourceGroup -Name $ResourceGroupName -Force
|
||||
New-AzureRmResourceGroup -Name $ResourceGroupName -Location $AzureLocation
|
||||
} else {
|
||||
$title = "Delete Resource Group"
|
||||
$message = "The resource group you specified already exists. Do you want to clean it up?"
|
||||
|
||||
$yes = New-Object System.Management.Automation.Host.ChoiceDescription "&Yes", `
|
||||
"Delete the resource group including all resources."
|
||||
|
||||
$no = New-Object System.Management.Automation.Host.ChoiceDescription "&No", `
|
||||
"Keep the resource group and continue."
|
||||
|
||||
$stop = New-Object System.Management.Automation.Host.ChoiceDescription "&Stop", `
|
||||
"Stop the current action."
|
||||
|
||||
$options = [System.Management.Automation.Host.ChoiceDescription[]]($yes, $no, $stop)
|
||||
$result = $host.ui.PromptForChoice($title, $message, $options, 0)
|
||||
|
||||
switch ($result)
|
||||
{
|
||||
0 { Remove-AzureRmResourceGroup -Name $ResourceGroupName -Force; New-AzureRmResourceGroup -Name $ResourceGroupName -Location $AzureLocation }
|
||||
1 { <# Do nothing #> }
|
||||
2 { exit }
|
||||
}
|
||||
}
|
||||
} else {
|
||||
New-AzureRmResourceGroup -Name $ResourceGroupName -Location $AzureLocation
|
||||
}
|
||||
|
||||
# This script should follow the recommended naming conventions for azure resources
|
||||
$storageAccountName = if($ResourceGroupName.EndsWith("-rg")) {
|
||||
$ResourceGroupName.Substring(0, $ResourceGroupName.Length -3)
|
||||
} else { $ResourceGroupName }
|
||||
|
||||
# Resource group names may contain special characters, that are not allowed in the storage account name
|
||||
$storageAccountName = $storageAccountName.Replace("-", "").Replace("_", "").Replace("(", "").Replace(")", "").ToLower()
|
||||
$storageAccountName += "001"
|
||||
|
||||
New-AzureRmStorageAccount -ResourceGroupName $ResourceGroupName -AccountName $storageAccountName -Location $AzureLocation -SkuName "Standard_LRS"
|
||||
|
||||
$spDisplayName = [System.GUID]::NewGuid().ToString().ToUpper()
|
||||
$sp = New-AzureRmADServicePrincipal -DisplayName $spDisplayName -Password (ConvertTo-SecureString $ServicePrincipalClientSecret -AsPlainText -Force)
|
||||
|
||||
$spAppId = $sp.ApplicationId
|
||||
$spClientId = $sp.ApplicationId
|
||||
$spObjectId = $sp.Id
|
||||
Start-Sleep -Seconds $SecondsToWaitForServicePrincipalSetup
|
||||
|
||||
New-AzureRmRoleAssignment -RoleDefinitionName Contributor -ServicePrincipalName $spAppId
|
||||
Start-Sleep -Seconds $SecondsToWaitForServicePrincipalSetup
|
||||
$sub = Get-AzureRmSubscription -SubscriptionId $SubscriptionId
|
||||
$tenantId = $sub.TenantId
|
||||
# "", "Note this variable-setting script for running Packer with these Azure resources in the future:", "==============================================================================================", "`$spClientId = `"$spClientId`"", "`$ServicePrincipalClientSecret = `"$ServicePrincipalClientSecret`"", "`$SubscriptionId = `"$SubscriptionId`"", "`$tenantId = `"$tenantId`"", "`$spObjectId = `"$spObjectId`"", "`$AzureLocation = `"$AzureLocation`"", "`$ResourceGroupName = `"$ResourceGroupName`"", "`$storageAccountName = `"$storageAccountName`"", "`$install_password = `"$install_password`"", ""
|
||||
|
||||
packer.exe build -on-error=ask -var "client_id=$($spClientId)" -var "client_secret=$($ServicePrincipalClientSecret)" -var "subscription_id=$($SubscriptionId)" -var "tenant_id=$($tenantId)" -var "object_id=$($spObjectId)" -var "location=$($AzureLocation)" -var "resource_group=$($ResourceGroupName)" -var "storage_account=$($storageAccountName)" -var "install_password=$($InstallPassword)" $builderScriptPath
|
||||
}
|
||||
260
images/linux/Ubuntu1604-README.md
Normal file
260
images/linux/Ubuntu1604-README.md
Normal file
@@ -0,0 +1,260 @@
|
||||
# Hosted Ubuntu 1604 Image (Ubuntu 16.04.6 LTS)
|
||||
The following software is installed on machines in the Hosted Ubuntu 1604 (20190930.2) pool
|
||||
***
|
||||
- 7-Zip 9.20
|
||||
- Ansible (ansible 2.8.5)
|
||||
- AzCopy (azcopy 7.3.0-netcore)
|
||||
- Azure CLI (azure-cli 2.0.74)
|
||||
- Azure CLI (azure-devops 0.12.0)
|
||||
- Basic CLI:
|
||||
- curl
|
||||
- dnsutils
|
||||
- file
|
||||
- ftp
|
||||
- iproute2
|
||||
- iputils-ping
|
||||
- jq
|
||||
- libcurl3
|
||||
- libicu55
|
||||
- libunwind8
|
||||
- locales
|
||||
- netcat
|
||||
- openssh-client
|
||||
- rsync
|
||||
- shellcheck
|
||||
- sudo
|
||||
- telnet
|
||||
- time
|
||||
- unzip
|
||||
- wget
|
||||
- zip
|
||||
- tzdata
|
||||
- AWS CLI (aws-cli/1.16.248 Python/2.7.12 Linux/4.15.0-1057-azure botocore/1.12.238)
|
||||
- build-essential
|
||||
- Clang 6.0 (clang version 6.0.1-svn334776-1~exp1~20190309042730.123 (branches/release_60))
|
||||
- CMake (cmake version 3.12.4)
|
||||
- Docker Compose (docker-compose version 1.22.0, build f46880fe)
|
||||
- Docker (Docker version 3.0.6, build a63faebc)
|
||||
- Docker (Docker version 3.0.6, build a63faebc)
|
||||
- .NET Core SDK 1.0.1
|
||||
- .NET Core SDK 1.0.4
|
||||
- .NET Core SDK 1.1.10
|
||||
- .NET Core SDK 1.1.11
|
||||
- .NET Core SDK 1.1.12
|
||||
- .NET Core SDK 1.1.13
|
||||
- .NET Core SDK 1.1.4
|
||||
- .NET Core SDK 1.1.5
|
||||
- .NET Core SDK 1.1.7
|
||||
- .NET Core SDK 1.1.8
|
||||
- .NET Core SDK 1.1.9
|
||||
- .NET Core SDK 2.0.0
|
||||
- .NET Core SDK 2.0.3
|
||||
- .NET Core SDK 2.1.100
|
||||
- .NET Core SDK 2.1.101
|
||||
- .NET Core SDK 2.1.102
|
||||
- .NET Core SDK 2.1.103
|
||||
- .NET Core SDK 2.1.104
|
||||
- .NET Core SDK 2.1.105
|
||||
- .NET Core SDK 2.1.2
|
||||
- .NET Core SDK 2.1.200
|
||||
- .NET Core SDK 2.1.201
|
||||
- .NET Core SDK 2.1.202
|
||||
- .NET Core SDK 2.1.300
|
||||
- .NET Core SDK 2.1.301
|
||||
- .NET Core SDK 2.1.302
|
||||
- .NET Core SDK 2.1.4
|
||||
- .NET Core SDK 2.1.400
|
||||
- .NET Core SDK 2.1.401
|
||||
- .NET Core SDK 2.1.402
|
||||
- .NET Core SDK 2.1.403
|
||||
- .NET Core SDK 2.1.500
|
||||
- .NET Core SDK 2.1.502
|
||||
- .NET Core SDK 2.1.503
|
||||
- .NET Core SDK 2.1.504
|
||||
- .NET Core SDK 2.1.505
|
||||
- .NET Core SDK 2.2.100
|
||||
- .NET Core SDK 2.2.101
|
||||
- .NET Core SDK 2.2.102
|
||||
- .NET Core SDK 2.2.103
|
||||
- .NET Core SDK 2.2.104
|
||||
- .NET Core SDK 2.2.105
|
||||
- .NET Core SDK 3.0
|
||||
- Erlang (Erlang (SMP,ASYNC_THREADS,HIPE) (BEAM) emulator version 10.5)
|
||||
- Firefox (Mozilla Firefox 69.0.1)
|
||||
- GNU C++ 7.4.0
|
||||
- Git (2.23.0)
|
||||
- Git Large File Storage (LFS) (2.8.0)
|
||||
- Go 1.9 (go version go1.9.7 linux/amd64)
|
||||
- Go 1.10 (go version go1.10.8 linux/amd64)
|
||||
- Go 1.11 (go version go1.11.12 linux/amd64)
|
||||
- Go 1.12 (go version go1.12.7 linux/amd64)
|
||||
- Go 1.13 (go version go1.13 linux/amd64)
|
||||
- Google Chrome (Google Chrome 77.0.3865.90 )
|
||||
- Google Cloud SDK (264.0.0)
|
||||
- Haskell Cabal (cabal-install version 2.0.0.1
|
||||
compiled using version 2.0.1.1 of the Cabal library )
|
||||
- Haskell Cabal (cabal-install version 2.2.0.0
|
||||
compiled using version 2.2.0.1 of the Cabal library )
|
||||
- Haskell Cabal (cabal-install version 2.4.1.0
|
||||
compiled using version 2.4.1.0 of the Cabal library )
|
||||
- Haskell Cabal (cabal-install version 3.0.0.0
|
||||
compiled using version 3.0.0.0 of the Cabal library )
|
||||
- GHC (The Glorious Glasgow Haskell Compilation System, version 8.0.2)
|
||||
- GHC (The Glorious Glasgow Haskell Compilation System, version 8.2.2)
|
||||
- GHC (The Glorious Glasgow Haskell Compilation System, version 8.4.4)
|
||||
- GHC (The Glorious Glasgow Haskell Compilation System, version 8.6.2)
|
||||
- GHC (The Glorious Glasgow Haskell Compilation System, version 8.6.3)
|
||||
- GHC (The Glorious Glasgow Haskell Compilation System, version 8.6.4)
|
||||
- GHC (The Glorious Glasgow Haskell Compilation System, version 8.6.5)
|
||||
- GHC (The Glorious Glasgow Haskell Compilation System, version 8.8.1)
|
||||
- Haskell Stack (Version 2.1.3, Git revision 636e3a759d51127df2b62f90772def126cdf6d1f (7735 commits) x86_64 hpack-0.31.2)
|
||||
- Heroku (heroku/7.31.0 linux-x64 node-v11.14.0)
|
||||
- HHVM (HipHop VM 4.24.0 (rel))
|
||||
- ImageMagick
|
||||
- Azul Zulu OpenJDK (7) (openjdk version "1.7.0_232")
|
||||
- Azul Zulu OpenJDK (8) (openjdk version "1.8.0_222")
|
||||
- Azul Zulu OpenJDK (11) (openjdk version "11.0.4" 2019-07-16 LTS)
|
||||
- Azul Zulu OpenJDK (12) (openjdk version "12.0.2" 2019-07-16)
|
||||
- Ant (Apache Ant(TM) version 1.9.6 compiled on July 20 2018)
|
||||
- Gradle 5.6.2
|
||||
- Maven (Apache Maven 3.6.1 (d66c9c0b3152b2e69ee9bac180bb8fcc8e6af555; 2019-04-04T19:00:29Z))
|
||||
- kubectl (Client Version: v1.16.0)
|
||||
- helm (Client: v2.14.3+g0e7f3b6)
|
||||
- Leiningen (Leiningen 2.9.1 on Java 1.8.0_222 OpenJDK 64-Bit Server VM)
|
||||
- Mercurial (Mercurial Distributed SCM (version 4.4.1))
|
||||
- Miniconda (conda 4.7.10)
|
||||
- Mono (Mono JIT compiler version 6.4.0.198 (tarball Tue Sep 24 01:20:30 UTC 2019))
|
||||
- MySQL (mysql Ver 14.14 Distrib 5.7.27, for Linux (x86_64) using EditLine wrapper)
|
||||
- MySQL Server (user:root password:root)
|
||||
- MS SQL Server Client Tools
|
||||
- Node.js (v10.16.3)
|
||||
- Bower (1.8.8)
|
||||
- Grunt (grunt-cli v1.2.0)
|
||||
- Gulp (CLI version: 2.2.0
|
||||
Local version: Unknown)
|
||||
- n (6.0.1)
|
||||
- Parcel (1.12.3)
|
||||
- TypeScript (Version 3.6.3)
|
||||
- Webpack (4.41.0)
|
||||
- Webpack CLI (3.3.9)
|
||||
- Yarn (1.19.0)
|
||||
- PhantomJS (2.1.1)
|
||||
- PHP 5.6 (PHP 5.6.40-12+ubuntu16.04.1+deb.sury.org+1 (cli) )
|
||||
- PHP 7.0 (PHP 7.0.33-11+ubuntu16.04.1+deb.sury.org+1 (cli) (built: Sep 2 2019 13:30:45) ( NTS ))
|
||||
- PHP 7.1 (PHP 7.1.32-1+ubuntu16.04.1+deb.sury.org+1 (cli) (built: Sep 2 2019 13:28:17) ( NTS ))
|
||||
- PHP 7.2 (PHP 7.2.22-1+ubuntu16.04.1+deb.sury.org+1 (cli) (built: Sep 2 2019 12:54:12) ( NTS ))
|
||||
- PHP 7.3 (PHP 7.3.9-1+ubuntu16.04.1+deb.sury.org+1 (cli) (built: Sep 2 2019 12:54:04) ( NTS ))
|
||||
- Composer (Composer version 1.9.0 2019-08-02 20:55:32)
|
||||
- PHPUnit (PHPUnit 7.5.16 by Sebastian Bergmann and contributors.)
|
||||
- Pollinate
|
||||
- Powershell (PowerShell 6.2.3)
|
||||
- rustup (1.19.0)
|
||||
- rust (1.38.0)
|
||||
- cargo (1.38.0)
|
||||
- rustfmt (1.4.4-stable)
|
||||
- clippy (0.0.212)
|
||||
- rustdoc (1.38.0)
|
||||
- bindgen (execute
|
||||
the
|
||||
0.51.1)
|
||||
- cbindgen (0.9.1)
|
||||
- Scala
|
||||
- Sphinx Open Source Search Server
|
||||
- Subversion (svn, version 1.9.3 (r1718519))
|
||||
- Terraform (Terraform v0.12.9)
|
||||
- Vcpkg 2019.09.12-unknownhash
|
||||
- Zeit Now CLI (16.3.0)
|
||||
- Google Repository 58
|
||||
- Google Play services 49
|
||||
- Google APIs 24
|
||||
- Google APIs 23
|
||||
- Google APIs 22
|
||||
- Google APIs 21
|
||||
- CMake 3.6.4111459
|
||||
- Android Support Repository 47.0.0
|
||||
- Android Solver for ConstraintLayout 1.0.2
|
||||
- Android Solver for ConstraintLayout 1.0.1
|
||||
- Android SDK Platform-Tools 29.0.4
|
||||
- Android SDK Platform 29
|
||||
- Android SDK Platform 28
|
||||
- Android SDK Platform 27
|
||||
- Android SDK Platform 26
|
||||
- Android SDK Platform 25
|
||||
- Android SDK Platform 24
|
||||
- Android SDK Platform 23
|
||||
- Android SDK Platform 22
|
||||
- Android SDK Platform 21
|
||||
- Android SDK Platform 19
|
||||
- Android SDK Platform 17
|
||||
- Android SDK Platform 15
|
||||
- Android SDK Platform 10
|
||||
- Android SDK Patch Applier v4
|
||||
- Android SDK Build-Tools 29.0.2
|
||||
- Android SDK Build-Tools 29.0.0
|
||||
- Android SDK Build-Tools 28.0.3
|
||||
- Android SDK Build-Tools 28.0.2
|
||||
- Android SDK Build-Tools 28.0.1
|
||||
- Android SDK Build-Tools 28.0.0
|
||||
- Android SDK Build-Tools 27.0.3
|
||||
- Android SDK Build-Tools 27.0.2
|
||||
- Android SDK Build-Tools 27.0.1
|
||||
- Android SDK Build-Tools 27.0.0
|
||||
- Android SDK Build-Tools 26.0.3
|
||||
- Android SDK Build-Tools 26.0.2
|
||||
- Android SDK Build-Tools 26.0.1
|
||||
- Android SDK Build-Tools 26.0.0
|
||||
- Android SDK Build-Tools 25.0.3
|
||||
- Android SDK Build-Tools 25.0.2
|
||||
- Android SDK Build-Tools 25.0.1
|
||||
- Android SDK Build-Tools 25.0.0
|
||||
- Android SDK Build-Tools 24.0.3
|
||||
- Android SDK Build-Tools 24.0.2
|
||||
- Android SDK Build-Tools 24.0.1
|
||||
- Android SDK Build-Tools 24.0.0
|
||||
- Android SDK Build-Tools 23.0.3
|
||||
- Android SDK Build-Tools 23.0.2
|
||||
- Android SDK Build-Tools 23.0.1
|
||||
- Android SDK Build-Tools 22.0.1
|
||||
- Android SDK Build-Tools 21.1.2
|
||||
- Android SDK Build-Tools 20.0.0
|
||||
- Android SDK Build-Tools 19.1.0
|
||||
- Android SDK Build-Tools 17.0.0
|
||||
- Android NDK 20.0.5594570
|
||||
- Android ConstraintLayout 1.0.2
|
||||
- Android ConstraintLayout 1.0.1
|
||||
- Az Module (1.0.0)
|
||||
- Az Module (1.6.0)
|
||||
- Az Module (2.3.2)
|
||||
- Az Module (2.6.0)
|
||||
- Cached container images
|
||||
- jekyll/builder:latest (Digest: sha256:9182fe84c46f8c196fc89d5c960839053a31e246c39994f30498fbcf70cd4b04)
|
||||
- node:10 (Digest: sha256:a2bc0489b71f88b358d2ed66efe0025b1896032ca6fd52df780426ce1acd18be)
|
||||
- node:12 (Digest: sha256:cda22332e2dd46807a14d3268ee3fb298651386ad1f03cfd58772a7dc65f89c7)
|
||||
- buildpack-deps:stretch (Digest: sha256:9e704902086098039b91927801b84925fbc29bd79133b582bcbea6a19f0362ca)
|
||||
- debian:9 (Digest: sha256:5fb93ce7a427b7c1c2374d5c29d68a159de7d5e781deeda422f8d51a1a9b6480)
|
||||
- debian:8 (Digest: sha256:a97db35fa665312803a229cb97fd921a884d0ef3be8cca008e958a7c936c2e7f)
|
||||
- node:12-alpine (Digest: sha256:744b156ec2dca0ad8291f80f9093273d45eb85378b6290b2fbbada861cc3ed01)
|
||||
- alpine:3.10 (Digest: sha256:72c42ed48c3a2db31b7dafe17d275b634664a708d901ec9fd57b1529280f01fb)
|
||||
- node:10-alpine (Digest: sha256:77c898d0da5e7bfb6e05c9a64de136ba4e03889a72f3c298e95df822a38f450d)
|
||||
- alpine:3.9 (Digest: sha256:7746df395af22f04212cd25a92c1d6dbc5a06a0ca9579a229ef43008d4d1302a)
|
||||
- alpine:3.7 (Digest: sha256:8421d9a84432575381bfabd248f1eb56f3aa21d9d7cd2511583c68c9b7511d10)
|
||||
- alpine:3.8 (Digest: sha256:04696b491e0cc3c58a75bace8941c14c924b9f313b03ce5029ebbc040ed9dcd9)
|
||||
- mcr.microsoft.com/azure-pipelines/node8-typescript:latest (Digest: sha256:e52e60b9f71183969830a3664279b5d8c799b4b0ec2c25a0686f7c02f6a9669a)
|
||||
- Python (available through the [setup-python](https://github.com/actions/setup-python/blob/master/README.md) task)
|
||||
- Python 2.7.16
|
||||
- Python 3.4.10
|
||||
- Python 3.5.7
|
||||
- Python 3.6.9
|
||||
- Python 3.7.4
|
||||
- Ruby (available through the [setup-ruby](https://github.com/actions/setup-ruby/blob/master/README.md) task)
|
||||
- Ruby 2.3.7
|
||||
- Ruby 2.4.6
|
||||
- Ruby 2.5.5
|
||||
- Ruby 2.6.3
|
||||
- Python (Python 2.7.12)
|
||||
- pip (pip 8.1.1 from /usr/lib/python2.7/dist-packages (python 2.7))
|
||||
- Python3 (Python 3.5.2)
|
||||
- pip3 (pip 8.1.1 from /usr/lib/python3/dist-packages (python 3.5))
|
||||
- PyPy2 ([PyPy 7.1.0 with GCC 6.2.0 20160901])
|
||||
- PyPy3 ([PyPy 7.0.0 with GCC 6.2.0 20160901])
|
||||
- Boost C++ Libraries 1.69.0
|
||||
250
images/linux/Ubuntu1804-README.md
Normal file
250
images/linux/Ubuntu1804-README.md
Normal file
@@ -0,0 +1,250 @@
|
||||
# Hosted Ubuntu 1804 Image (Ubuntu 18.04.3 LTS)
|
||||
The following software is installed on machines in the Hosted Ubuntu 1804 (v20190930.2) pool
|
||||
***
|
||||
- 7-Zip 16.02
|
||||
- Ansible (ansible 2.8.5)
|
||||
- AzCopy (azcopy 7.3.0-netcore)
|
||||
- Azure CLI (azure-cli 2.0.74)
|
||||
- Azure CLI (azure-devops 0.12.0)
|
||||
- Basic CLI:
|
||||
- curl
|
||||
- dnsutils
|
||||
- file
|
||||
- ftp
|
||||
- iproute2
|
||||
- iputils-ping
|
||||
- jq
|
||||
- libcurl3
|
||||
- libicu55
|
||||
- libunwind8
|
||||
- locales
|
||||
- netcat
|
||||
- openssh-client
|
||||
- rsync
|
||||
- shellcheck
|
||||
- sudo
|
||||
- telnet
|
||||
- time
|
||||
- unzip
|
||||
- wget
|
||||
- zip
|
||||
- tzdata
|
||||
- AWS CLI (aws-cli/1.16.248 Python/2.7.15+ Linux/5.0.0-1018-azure botocore/1.12.238)
|
||||
- build-essential
|
||||
- Clang 6.0 (clang version 6.0.1-svn334776-1~exp1~20190309042703.125 (branches/release_60))
|
||||
- CMake (cmake version 3.12.4)
|
||||
- Docker Compose (docker-compose version 1.22.0, build f46880fe)
|
||||
- Docker (Docker version 3.0.6, build a63faebc)
|
||||
- Docker (Docker version 3.0.6, build a63faebc)
|
||||
- .NET Core SDK:
|
||||
- 2.2.402
|
||||
- 2.2.401
|
||||
- 2.2.301
|
||||
- 2.2.300
|
||||
- 2.2.206
|
||||
- 2.2.205
|
||||
- 2.2.204
|
||||
- 2.2.203
|
||||
- 2.2.202
|
||||
- 2.2.109
|
||||
- 2.2.108
|
||||
- 2.2.107
|
||||
- 2.2.106
|
||||
- 2.2.105
|
||||
- 2.2.104
|
||||
- 2.2.103
|
||||
- 2.2.102
|
||||
- 2.2.101
|
||||
- 2.2.100
|
||||
- 2.1.802
|
||||
- 2.1.801
|
||||
- 2.1.701
|
||||
- 2.1.700
|
||||
- 2.1.606
|
||||
- 2.1.605
|
||||
- 2.1.604
|
||||
- 2.1.603
|
||||
- 2.1.602
|
||||
- 2.1.509
|
||||
- 2.1.508
|
||||
- 2.1.507
|
||||
- 2.1.506
|
||||
- 2.1.505
|
||||
- 2.1.504
|
||||
- 2.1.503
|
||||
- 2.1.502
|
||||
- 2.1.500
|
||||
- 2.1.403
|
||||
- 2.1.402
|
||||
- 2.1.401
|
||||
- 2.1.302
|
||||
- 2.1.301
|
||||
- 2.1.300
|
||||
- Erlang (Erlang (SMP,ASYNC_THREADS,HIPE) (BEAM) emulator version 10.5)
|
||||
- Firefox (Mozilla Firefox 69.0.1)
|
||||
- GNU C++ 7.4.0
|
||||
- Git (2.23.0)
|
||||
- Git Large File Storage (LFS) (2.8.0)
|
||||
- Go 1.11 (go version go1.11.12 linux/amd64)
|
||||
- Go 1.12 (go version go1.12.7 linux/amd64)
|
||||
- Go 1.13 (go version go1.13 linux/amd64)
|
||||
- Google Chrome (Google Chrome 77.0.3865.90 )
|
||||
- Google Cloud SDK (264.0.0)
|
||||
- Haskell Cabal (cabal-install version 2.0.0.1
|
||||
compiled using version 2.0.1.1 of the Cabal library )
|
||||
- Haskell Cabal (cabal-install version 2.2.0.0
|
||||
compiled using version 2.2.0.1 of the Cabal library )
|
||||
- Haskell Cabal (cabal-install version 2.4.1.0
|
||||
compiled using version 2.4.1.0 of the Cabal library )
|
||||
- Haskell Cabal (cabal-install version 3.0.0.0
|
||||
compiled using version 3.0.0.0 of the Cabal library )
|
||||
- GHC (The Glorious Glasgow Haskell Compilation System, version 8.0.2)
|
||||
- GHC (The Glorious Glasgow Haskell Compilation System, version 8.2.2)
|
||||
- GHC (The Glorious Glasgow Haskell Compilation System, version 8.4.4)
|
||||
- GHC (The Glorious Glasgow Haskell Compilation System, version 8.6.2)
|
||||
- GHC (The Glorious Glasgow Haskell Compilation System, version 8.6.3)
|
||||
- GHC (The Glorious Glasgow Haskell Compilation System, version 8.6.4)
|
||||
- GHC (The Glorious Glasgow Haskell Compilation System, version 8.6.5)
|
||||
- GHC (The Glorious Glasgow Haskell Compilation System, version 8.8.1)
|
||||
- Haskell Stack (Version 2.1.3, Git revision 636e3a759d51127df2b62f90772def126cdf6d1f (7735 commits) x86_64 hpack-0.31.2)
|
||||
- Heroku (heroku/7.31.0 linux-x64 node-v11.14.0)
|
||||
- HHVM (HipHop VM 4.24.0 (rel))
|
||||
- ImageMagick
|
||||
- Azul Zulu OpenJDK (7) (openjdk version "1.7.0_232")
|
||||
- Azul Zulu OpenJDK (8) (openjdk version "1.8.0_222")
|
||||
- Azul Zulu OpenJDK (11) (openjdk version "11.0.4" 2019-07-16 LTS)
|
||||
- Azul Zulu OpenJDK (12) (openjdk version "12.0.2" 2019-07-16)
|
||||
- Ant (Apache Ant(TM) version 1.10.5 compiled on March 28 2019)
|
||||
- Gradle 5.6.2
|
||||
- Maven (Apache Maven 3.6.1 (d66c9c0b3152b2e69ee9bac180bb8fcc8e6af555; 2019-04-04T19:00:29Z))
|
||||
- kubectl (Client Version: v1.16.0)
|
||||
- helm (Client: v2.14.3+g0e7f3b6)
|
||||
- Leiningen (Leiningen 2.9.1 on Java 1.8.0_222 OpenJDK 64-Bit Server VM)
|
||||
- Mercurial (Mercurial Distributed SCM (version 4.5.3))
|
||||
- Miniconda (conda 4.7.10)
|
||||
- Mono (Mono JIT compiler version 6.4.0.198 (tarball Tue Sep 24 01:21:28 UTC 2019))
|
||||
- MySQL (mysql Ver 14.14 Distrib 5.7.27, for Linux (x86_64) using EditLine wrapper)
|
||||
- MySQL Server (user:root password:root)
|
||||
- MS SQL Server Client Tools
|
||||
- Node.js (v10.16.3)
|
||||
- Bower (1.8.8)
|
||||
- Grunt (grunt-cli v1.2.0)
|
||||
- Gulp (CLI version: 2.2.0
|
||||
Local version: Unknown)
|
||||
- n (6.0.1)
|
||||
- Parcel (1.12.3)
|
||||
- TypeScript (Version 3.6.3)
|
||||
- Webpack (4.41.0)
|
||||
- Webpack CLI (3.3.9)
|
||||
- Yarn (1.19.0)
|
||||
- PhantomJS (2.1.1)
|
||||
- PHP 7.1 (PHP 7.1.32-1+ubuntu18.04.1+deb.sury.org+1 (cli) (built: Sep 2 2019 13:28:37) ( NTS ))
|
||||
- PHP 7.2 (PHP 7.2.22-1+ubuntu18.04.1+deb.sury.org+1 (cli) (built: Sep 2 2019 12:54:33) ( NTS ))
|
||||
- PHP 7.3 (PHP 7.3.9-1+ubuntu18.04.1+deb.sury.org+1 (cli) (built: Sep 2 2019 12:54:24) ( NTS ))
|
||||
- Composer (Composer version 1.9.0 2019-08-02 20:55:32)
|
||||
- PHPUnit (PHPUnit 7.5.16 by Sebastian Bergmann and contributors.)
|
||||
- Pollinate
|
||||
- Powershell (PowerShell 6.2.3)
|
||||
- rustup (1.19.0)
|
||||
- rust (1.38.0)
|
||||
- cargo (1.38.0)
|
||||
- rustfmt (1.4.4-stable)
|
||||
- clippy (0.0.212)
|
||||
- rustdoc (1.38.0)
|
||||
- bindgen (execute
|
||||
the
|
||||
0.51.1)
|
||||
- cbindgen (0.9.1)
|
||||
- Scala
|
||||
- Sphinx Open Source Search Server
|
||||
- Subversion (svn, version 1.9.7 (r1800392))
|
||||
- Terraform (Terraform v0.12.9)
|
||||
- Vcpkg 2019.09.12-unknownhash
|
||||
- Zeit Now CLI (16.3.0)
|
||||
- Google Repository 58
|
||||
- Google Play services 49
|
||||
- Google APIs 24
|
||||
- Google APIs 23
|
||||
- Google APIs 22
|
||||
- Google APIs 21
|
||||
- CMake 3.6.4111459
|
||||
- Android Support Repository 47.0.0
|
||||
- Android SDK Platform-Tools 29.0.4
|
||||
- Android SDK Platform 29
|
||||
- Android SDK Platform 28
|
||||
- Android SDK Platform 27
|
||||
- Android SDK Platform 26
|
||||
- Android SDK Platform 25
|
||||
- Android SDK Platform 24
|
||||
- Android SDK Platform 23
|
||||
- Android SDK Platform 22
|
||||
- Android SDK Platform 21
|
||||
- Android SDK Platform 19
|
||||
- Android SDK Platform 17
|
||||
- Android SDK Patch Applier v4
|
||||
- Android SDK Build-Tools 29.0.2
|
||||
- Android SDK Build-Tools 29.0.0
|
||||
- Android SDK Build-Tools 28.0.3
|
||||
- Android SDK Build-Tools 28.0.2
|
||||
- Android SDK Build-Tools 28.0.1
|
||||
- Android SDK Build-Tools 28.0.0
|
||||
- Android SDK Build-Tools 27.0.3
|
||||
- Android SDK Build-Tools 27.0.2
|
||||
- Android SDK Build-Tools 27.0.1
|
||||
- Android SDK Build-Tools 27.0.0
|
||||
- Android SDK Build-Tools 26.0.3
|
||||
- Android SDK Build-Tools 26.0.2
|
||||
- Android SDK Build-Tools 26.0.1
|
||||
- Android SDK Build-Tools 26.0.0
|
||||
- Android SDK Build-Tools 25.0.3
|
||||
- Android SDK Build-Tools 25.0.2
|
||||
- Android SDK Build-Tools 25.0.1
|
||||
- Android SDK Build-Tools 25.0.0
|
||||
- Android SDK Build-Tools 24.0.3
|
||||
- Android SDK Build-Tools 24.0.2
|
||||
- Android SDK Build-Tools 24.0.1
|
||||
- Android SDK Build-Tools 24.0.0
|
||||
- Android SDK Build-Tools 23.0.3
|
||||
- Android SDK Build-Tools 23.0.2
|
||||
- Android SDK Build-Tools 23.0.1
|
||||
- Android SDK Build-Tools 22.0.1
|
||||
- Android SDK Build-Tools 21.1.2
|
||||
- Android SDK Build-Tools 20.0.0
|
||||
- Android SDK Build-Tools 19.1.0
|
||||
- Android SDK Build-Tools 17.0.0
|
||||
- Android NDK 20.0.5594570
|
||||
- Az Module (1.0.0)
|
||||
- Az Module (1.6.0)
|
||||
- Az Module (2.3.2)
|
||||
- Az Module (2.6.0)
|
||||
- Cached container images
|
||||
- jekyll/builder:latest (Digest: sha256:9182fe84c46f8c196fc89d5c960839053a31e246c39994f30498fbcf70cd4b04)
|
||||
- node:10 (Digest: sha256:a2bc0489b71f88b358d2ed66efe0025b1896032ca6fd52df780426ce1acd18be)
|
||||
- node:12 (Digest: sha256:cda22332e2dd46807a14d3268ee3fb298651386ad1f03cfd58772a7dc65f89c7)
|
||||
- buildpack-deps:stretch (Digest: sha256:9e704902086098039b91927801b84925fbc29bd79133b582bcbea6a19f0362ca)
|
||||
- debian:9 (Digest: sha256:5fb93ce7a427b7c1c2374d5c29d68a159de7d5e781deeda422f8d51a1a9b6480)
|
||||
- debian:8 (Digest: sha256:a97db35fa665312803a229cb97fd921a884d0ef3be8cca008e958a7c936c2e7f)
|
||||
- node:12-alpine (Digest: sha256:744b156ec2dca0ad8291f80f9093273d45eb85378b6290b2fbbada861cc3ed01)
|
||||
- alpine:3.10 (Digest: sha256:72c42ed48c3a2db31b7dafe17d275b634664a708d901ec9fd57b1529280f01fb)
|
||||
- node:10-alpine (Digest: sha256:77c898d0da5e7bfb6e05c9a64de136ba4e03889a72f3c298e95df822a38f450d)
|
||||
- alpine:3.9 (Digest: sha256:7746df395af22f04212cd25a92c1d6dbc5a06a0ca9579a229ef43008d4d1302a)
|
||||
- alpine:3.7 (Digest: sha256:8421d9a84432575381bfabd248f1eb56f3aa21d9d7cd2511583c68c9b7511d10)
|
||||
- alpine:3.8 (Digest: sha256:04696b491e0cc3c58a75bace8941c14c924b9f313b03ce5029ebbc040ed9dcd9)
|
||||
- mcr.microsoft.com/azure-pipelines/node8-typescript:latest (Digest: sha256:e52e60b9f71183969830a3664279b5d8c799b4b0ec2c25a0686f7c02f6a9669a)
|
||||
- Python (available through the [Use Python Version](https://go.microsoft.com/fwlink/?linkid=871498) task)
|
||||
- Python 2.7.16
|
||||
- Python 3.5.7
|
||||
- Python 3.6.9
|
||||
- Python 3.7.4
|
||||
- Ruby (available through the [Use Ruby Version](https://go.microsoft.com/fwlink/?linkid=2005989) task)
|
||||
- Ruby 2.3.7
|
||||
- Ruby 2.4.6
|
||||
- Ruby 2.5.5
|
||||
- Ruby 2.6.3
|
||||
- Python (Python 2.7.15+)
|
||||
- pip (pip 9.0.1 from /usr/lib/python2.7/dist-packages (python 2.7))
|
||||
- Python3 (Python 3.6.8)
|
||||
- pip3 (pip 9.0.1 from /usr/lib/python3/dist-packages (python 3.6))
|
||||
- PyPy2 ([PyPy 7.1.0 with GCC 6.2.0 20160901])
|
||||
- PyPy3 ([PyPy 7.0.0 with GCC 6.2.0 20160901])
|
||||
- Boost C++ Libraries 1.69.0
|
||||
2
images/linux/config/ubuntu1604.conf
Normal file
2
images/linux/config/ubuntu1604.conf
Normal file
@@ -0,0 +1,2 @@
|
||||
# Name of the hosted pool this image will support
|
||||
POOL_NAME="Hosted Ubuntu 1604"
|
||||
2
images/linux/config/ubuntu1804.conf
Normal file
2
images/linux/config/ubuntu1804.conf
Normal file
@@ -0,0 +1,2 @@
|
||||
# Name of the hosted pool this image will support
|
||||
POOL_NAME="Hosted Ubuntu 1804"
|
||||
15
images/linux/scripts/base/repos.sh
Normal file
15
images/linux/scripts/base/repos.sh
Normal file
@@ -0,0 +1,15 @@
|
||||
#!/bin/bash
|
||||
################################################################################
|
||||
## File: repos.sh
|
||||
## Desc: Installs official Microsoft package repos for the distribution
|
||||
################################################################################
|
||||
|
||||
LSB_RELEASE=$(lsb_release -rs)
|
||||
|
||||
# Install Microsoft repository
|
||||
wget https://packages.microsoft.com/config/ubuntu/$LSB_RELEASE/packages-microsoft-prod.deb
|
||||
dpkg -i packages-microsoft-prod.deb
|
||||
apt-get update
|
||||
|
||||
# Install Microsoft GPG public key
|
||||
curl -L https://packages.microsoft.com/keys/microsoft.asc | apt-key add -
|
||||
23
images/linux/scripts/helpers/apt.sh
Normal file
23
images/linux/scripts/helpers/apt.sh
Normal file
@@ -0,0 +1,23 @@
|
||||
#!/bin/bash
|
||||
################################################################################
|
||||
## File: apt.sh
|
||||
## Desc: This script contains helper functions for using dpkg and apt
|
||||
################################################################################
|
||||
|
||||
## Use dpkg to figure out if a package has already been installed
|
||||
## Example use:
|
||||
## if ! IsInstalled packageName; then
|
||||
## echo "packageName is not installed!"
|
||||
## fi
|
||||
function IsInstalled {
|
||||
dpkg -S $1 &> /dev/null
|
||||
}
|
||||
|
||||
# Configure apt to always assume Y
|
||||
echo "APT::Get::Assume-Yes \"true\";" > /etc/apt/apt.conf.d/90assumeyes
|
||||
|
||||
# Use apt-fast for parallel downloads
|
||||
apt-get install aria2
|
||||
add-apt-repository -y ppa:apt-fast/stable
|
||||
apt-get update
|
||||
apt-get -y install apt-fast
|
||||
31
images/linux/scripts/helpers/containercache.sh
Normal file
31
images/linux/scripts/helpers/containercache.sh
Normal file
@@ -0,0 +1,31 @@
|
||||
#!/bin/bash
|
||||
|
||||
source $HELPER_SCRIPTS/apt.sh
|
||||
source $HELPER_SCRIPTS/document.sh
|
||||
|
||||
# Check prereqs
|
||||
echo "Checking prereqs for image pulls"
|
||||
if ! command -v docker; then
|
||||
echo "Docker is not installed, cant pull images"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
# Information output
|
||||
systemctl status docker --no-pager
|
||||
|
||||
# Pull images
|
||||
images=(
|
||||
docker.io/jekyll/builder
|
||||
mcr.microsoft.com/azure-pipelines/node8-typescript
|
||||
)
|
||||
|
||||
for image in "${images[@]}"; do
|
||||
docker pull "$image"
|
||||
done
|
||||
|
||||
## Add container information to the metadata file
|
||||
DocumentInstalledItem "Cached container images"
|
||||
|
||||
while read -r line; do
|
||||
DocumentInstalledItemIndent "$line"
|
||||
done <<< "$(docker images --digests --format '{{.Repository}}:{{.Tag}} (Digest: {{.Digest}})')"
|
||||
30
images/linux/scripts/helpers/document.sh
Normal file
30
images/linux/scripts/helpers/document.sh
Normal file
@@ -0,0 +1,30 @@
|
||||
#!/bin/bash
|
||||
################################################################################
|
||||
## File: document.sh
|
||||
## Desc: Helper functions for writing information to the metadata document
|
||||
################################################################################
|
||||
|
||||
function WriteItem {
|
||||
if [ -z "$METADATA_FILE" ]; then
|
||||
echo "METADATA_FILE environment variable must be set to output to Metadata Document!"
|
||||
return 1;
|
||||
else
|
||||
echo -e "$1" >> "$METADATA_FILE"
|
||||
fi
|
||||
}
|
||||
|
||||
function AddTitle {
|
||||
WriteItem "# $1"
|
||||
}
|
||||
|
||||
function AddSubTitle {
|
||||
WriteItem "## $1"
|
||||
}
|
||||
|
||||
function DocumentInstalledItem {
|
||||
WriteItem "- $1"
|
||||
}
|
||||
|
||||
function DocumentInstalledItemIndent {
|
||||
WriteItem " - $1"
|
||||
}
|
||||
145
images/linux/scripts/installers/1604/android.sh
Normal file
145
images/linux/scripts/installers/1604/android.sh
Normal file
@@ -0,0 +1,145 @@
|
||||
#!/bin/bash
|
||||
################################################################################
|
||||
## File: android.sh
|
||||
## Desc: Installs Android SDK
|
||||
################################################################################
|
||||
|
||||
# Source the helpers for use with the script
|
||||
source $HELPER_SCRIPTS/document.sh
|
||||
source $HELPER_SCRIPTS/apt.sh
|
||||
|
||||
# Set env variable for SDK Root (https://developer.android.com/studio/command-line/variables)
|
||||
ANDROID_ROOT=/usr/local/lib/android
|
||||
ANDROID_SDK_ROOT=${ANDROID_ROOT}/sdk
|
||||
echo "ANDROID_SDK_ROOT=${ANDROID_SDK_ROOT}" | tee -a /etc/environment
|
||||
|
||||
# ANDROID_HOME is deprecated, but older versions of Gradle rely on it
|
||||
echo "ANDROID_HOME=${ANDROID_SDK_ROOT}" | tee -a /etc/environment
|
||||
|
||||
# Download the latest command line tools so that we can accept all of the licenses.
|
||||
# See https://developer.android.com/studio/#command-tools
|
||||
wget -O android-sdk.zip https://dl.google.com/android/repository/sdk-tools-linux-4333796.zip
|
||||
unzip android-sdk.zip -d ${ANDROID_ROOT}
|
||||
rm -f android-sdk.zip
|
||||
|
||||
# Install the following SDKs and build tools, passing in "y" to accept licenses.
|
||||
echo "y" | ${ANDROID_ROOT}/tools/bin/sdkmanager --sdk_root=${ANDROID_SDK_ROOT} \
|
||||
"ndk-bundle" \
|
||||
"platform-tools" \
|
||||
"platforms;android-29" \
|
||||
"platforms;android-28" \
|
||||
"platforms;android-27" \
|
||||
"platforms;android-26" \
|
||||
"platforms;android-25" \
|
||||
"platforms;android-24" \
|
||||
"platforms;android-23" \
|
||||
"platforms;android-22" \
|
||||
"platforms;android-21" \
|
||||
"platforms;android-19" \
|
||||
"platforms;android-17" \
|
||||
"platforms;android-15" \
|
||||
"platforms;android-10" \
|
||||
"build-tools;29.0.2" \
|
||||
"build-tools;29.0.0" \
|
||||
"build-tools;28.0.3" \
|
||||
"build-tools;28.0.2" \
|
||||
"build-tools;28.0.1" \
|
||||
"build-tools;28.0.0" \
|
||||
"build-tools;27.0.3" \
|
||||
"build-tools;27.0.2" \
|
||||
"build-tools;27.0.1" \
|
||||
"build-tools;27.0.0" \
|
||||
"build-tools;26.0.3" \
|
||||
"build-tools;26.0.2" \
|
||||
"build-tools;26.0.1" \
|
||||
"build-tools;26.0.0" \
|
||||
"build-tools;25.0.3" \
|
||||
"build-tools;25.0.2" \
|
||||
"build-tools;25.0.1" \
|
||||
"build-tools;25.0.0" \
|
||||
"build-tools;24.0.3" \
|
||||
"build-tools;24.0.2" \
|
||||
"build-tools;24.0.1" \
|
||||
"build-tools;24.0.0" \
|
||||
"build-tools;23.0.3" \
|
||||
"build-tools;23.0.2" \
|
||||
"build-tools;23.0.1" \
|
||||
"build-tools;22.0.1" \
|
||||
"build-tools;21.1.2" \
|
||||
"build-tools;20.0.0" \
|
||||
"build-tools;19.1.0" \
|
||||
"build-tools;17.0.0" \
|
||||
"extras;android;m2repository" \
|
||||
"extras;google;m2repository" \
|
||||
"extras;google;google_play_services" \
|
||||
"extras;m2repository;com;android;support;constraint;constraint-layout-solver;1.0.2" \
|
||||
"extras;m2repository;com;android;support;constraint;constraint-layout-solver;1.0.1" \
|
||||
"extras;m2repository;com;android;support;constraint;constraint-layout;1.0.2" \
|
||||
"extras;m2repository;com;android;support;constraint;constraint-layout;1.0.1" \
|
||||
"add-ons;addon-google_apis-google-24" \
|
||||
"add-ons;addon-google_apis-google-23" \
|
||||
"add-ons;addon-google_apis-google-22" \
|
||||
"add-ons;addon-google_apis-google-21" \
|
||||
"cmake;3.6.4111459" \
|
||||
"patcher;v4"
|
||||
|
||||
# Document what was added to the image
|
||||
echo "Lastly, document what was added to the metadata file"
|
||||
DocumentInstalledItem "Google Repository $(cat ${ANDROID_SDK_ROOT}/extras/google/m2repository/source.properties 2>&1 | grep Pkg.Revision | cut -d '=' -f 2)"
|
||||
DocumentInstalledItem "Google Play services $(cat ${ANDROID_SDK_ROOT}/extras/google/google_play_services/source.properties 2>&1 | grep Pkg.Revision | cut -d '=' -f 2)"
|
||||
DocumentInstalledItem "Google APIs 24"
|
||||
DocumentInstalledItem "Google APIs 23"
|
||||
DocumentInstalledItem "Google APIs 22"
|
||||
DocumentInstalledItem "Google APIs 21"
|
||||
DocumentInstalledItem "CMake $(ls ${ANDROID_SDK_ROOT}/cmake 2>&1)"
|
||||
DocumentInstalledItem "Android Support Repository 47.0.0"
|
||||
DocumentInstalledItem "Android Solver for ConstraintLayout 1.0.2"
|
||||
DocumentInstalledItem "Android Solver for ConstraintLayout 1.0.1"
|
||||
DocumentInstalledItem "Android SDK Platform-Tools $(cat ${ANDROID_SDK_ROOT}/platform-tools/source.properties 2>&1 | grep Pkg.Revision | cut -d '=' -f 2)"
|
||||
DocumentInstalledItem "Android SDK Platform 29"
|
||||
DocumentInstalledItem "Android SDK Platform 28"
|
||||
DocumentInstalledItem "Android SDK Platform 27"
|
||||
DocumentInstalledItem "Android SDK Platform 26"
|
||||
DocumentInstalledItem "Android SDK Platform 25"
|
||||
DocumentInstalledItem "Android SDK Platform 24"
|
||||
DocumentInstalledItem "Android SDK Platform 23"
|
||||
DocumentInstalledItem "Android SDK Platform 22"
|
||||
DocumentInstalledItem "Android SDK Platform 21"
|
||||
DocumentInstalledItem "Android SDK Platform 19"
|
||||
DocumentInstalledItem "Android SDK Platform 17"
|
||||
DocumentInstalledItem "Android SDK Platform 15"
|
||||
DocumentInstalledItem "Android SDK Platform 10"
|
||||
DocumentInstalledItem "Android SDK Patch Applier v4"
|
||||
DocumentInstalledItem "Android SDK Build-Tools 29.0.2"
|
||||
DocumentInstalledItem "Android SDK Build-Tools 29.0.0"
|
||||
DocumentInstalledItem "Android SDK Build-Tools 28.0.3"
|
||||
DocumentInstalledItem "Android SDK Build-Tools 28.0.2"
|
||||
DocumentInstalledItem "Android SDK Build-Tools 28.0.1"
|
||||
DocumentInstalledItem "Android SDK Build-Tools 28.0.0"
|
||||
DocumentInstalledItem "Android SDK Build-Tools 27.0.3"
|
||||
DocumentInstalledItem "Android SDK Build-Tools 27.0.2"
|
||||
DocumentInstalledItem "Android SDK Build-Tools 27.0.1"
|
||||
DocumentInstalledItem "Android SDK Build-Tools 27.0.0"
|
||||
DocumentInstalledItem "Android SDK Build-Tools 26.0.3"
|
||||
DocumentInstalledItem "Android SDK Build-Tools 26.0.2"
|
||||
DocumentInstalledItem "Android SDK Build-Tools 26.0.1"
|
||||
DocumentInstalledItem "Android SDK Build-Tools 26.0.0"
|
||||
DocumentInstalledItem "Android SDK Build-Tools 25.0.3"
|
||||
DocumentInstalledItem "Android SDK Build-Tools 25.0.2"
|
||||
DocumentInstalledItem "Android SDK Build-Tools 25.0.1"
|
||||
DocumentInstalledItem "Android SDK Build-Tools 25.0.0"
|
||||
DocumentInstalledItem "Android SDK Build-Tools 24.0.3"
|
||||
DocumentInstalledItem "Android SDK Build-Tools 24.0.2"
|
||||
DocumentInstalledItem "Android SDK Build-Tools 24.0.1"
|
||||
DocumentInstalledItem "Android SDK Build-Tools 24.0.0"
|
||||
DocumentInstalledItem "Android SDK Build-Tools 23.0.3"
|
||||
DocumentInstalledItem "Android SDK Build-Tools 23.0.2"
|
||||
DocumentInstalledItem "Android SDK Build-Tools 23.0.1"
|
||||
DocumentInstalledItem "Android SDK Build-Tools 22.0.1"
|
||||
DocumentInstalledItem "Android SDK Build-Tools 21.1.2"
|
||||
DocumentInstalledItem "Android SDK Build-Tools 20.0.0"
|
||||
DocumentInstalledItem "Android SDK Build-Tools 19.1.0"
|
||||
DocumentInstalledItem "Android SDK Build-Tools 17.0.0"
|
||||
DocumentInstalledItem "Android NDK $(cat ${ANDROID_SDK_ROOT}/ndk-bundle/source.properties 2>&1 | grep Pkg.Revision | cut -d ' ' -f 3)"
|
||||
DocumentInstalledItem "Android ConstraintLayout 1.0.2"
|
||||
DocumentInstalledItem "Android ConstraintLayout 1.0.1"
|
||||
46
images/linux/scripts/installers/1604/azpowershell.sh
Normal file
46
images/linux/scripts/installers/1604/azpowershell.sh
Normal file
@@ -0,0 +1,46 @@
|
||||
#!/bin/bash
|
||||
################################################################################
|
||||
## File: azpowershell.sh
|
||||
## Desc: Installed Azure PowerShell
|
||||
################################################################################
|
||||
|
||||
# Source the helpers for use with the script
|
||||
source $HELPER_SCRIPTS/document.sh
|
||||
|
||||
# Install Azure CLI (instructions taken from https://docs.microsoft.com/en-us/cli/azure/install-azure-cli)
|
||||
sudo pwsh -Command 'Save-Module -Name Az -LiteralPath /usr/share/az_1.0.0 -RequiredVersion 1.0.0 -Force'
|
||||
sudo pwsh -Command 'Save-Module -Name Az -LiteralPath /usr/share/az_1.6.0 -RequiredVersion 1.6.0 -Force'
|
||||
sudo pwsh -Command 'Save-Module -Name Az -LiteralPath /usr/share/az_2.3.2 -RequiredVersion 2.3.2 -Force'
|
||||
sudo pwsh -Command 'Save-Module -Name Az -LiteralPath /usr/share/az_2.6.0 -RequiredVersion 2.6.0 -Force'
|
||||
|
||||
# Run tests to determine that the software installed as expected
|
||||
echo "Testing to make sure that script performed as expected, and basic scenarios work"
|
||||
if ! pwsh -Command '$actualPSModulePath = $env:PSModulePath ; $env:PSModulePath = "/usr/share/az_1.0.0:" + $env:PSModulePath;
|
||||
if (!(get-module -listavailable -name Az.accounts)) {
|
||||
Write-Host "Az Module was not installed"; $env:PSModulePath = $actualPSModulePath; exit 1
|
||||
}
|
||||
$env:PSModulePath = $actualPSModulePath
|
||||
$actualPSModulePath = $env:PSModulePath ; $env:PSModulePath = "/usr/share/az_1.6.0:" + $env:PSModulePath;
|
||||
if (!(get-module -listavailable -name Az.accounts)) {
|
||||
Write-Host "Az Module was not installed"; $env:PSModulePath = $actualPSModulePath; exit 1
|
||||
}
|
||||
$env:PSModulePath = $actualPSModulePath
|
||||
$actualPSModulePath = $env:PSModulePath ; $env:PSModulePath = "/usr/share/az_2.3.2:" + $env:PSModulePath;
|
||||
if (!(get-module -listavailable -name Az.accounts)) {
|
||||
Write-Host "Az Module was not installed"; $env:PSModulePath = $actualPSModulePath; exit 1
|
||||
}
|
||||
$env:PSModulePath = $actualPSModulePath
|
||||
$actualPSModulePath = $env:PSModulePath ; $env:PSModulePath = "/usr/share/az_2.6.0:" + $env:PSModulePath;
|
||||
if (!(get-module -listavailable -name Az.accounts)) {
|
||||
Write-Host "Az Module was not installed"; $env:PSModulePath = $actualPSModulePath; exit 1
|
||||
}
|
||||
$env:PSModulePath = $actualPSModulePath'; then
|
||||
exit 1
|
||||
fi
|
||||
|
||||
# Document what was added to the image
|
||||
echo "Lastly, documenting what we added to the metadata file"
|
||||
DocumentInstalledItem "Az Module (1.0.0)"
|
||||
DocumentInstalledItem "Az Module (1.6.0)"
|
||||
DocumentInstalledItem "Az Module (2.3.2)"
|
||||
DocumentInstalledItem "Az Module (2.6.0)"
|
||||
88
images/linux/scripts/installers/1604/basic.sh
Normal file
88
images/linux/scripts/installers/1604/basic.sh
Normal file
@@ -0,0 +1,88 @@
|
||||
#!/bin/bash
|
||||
################################################################################
|
||||
## File: basic.sh
|
||||
## Desc: Installs basic command line utilities and dev packages
|
||||
################################################################################
|
||||
|
||||
# Source the helpers for use with the script
|
||||
source $HELPER_SCRIPTS/document.sh
|
||||
source $HELPER_SCRIPTS/apt.sh
|
||||
|
||||
set -e
|
||||
|
||||
# Install basic command-line utilities
|
||||
apt-fast install -y --no-install-recommends \
|
||||
curl \
|
||||
dnsutils \
|
||||
file \
|
||||
ftp \
|
||||
iproute2 \
|
||||
iputils-ping \
|
||||
jq \
|
||||
libcurl3 \
|
||||
libicu55 \
|
||||
libunwind8 \
|
||||
locales \
|
||||
netcat \
|
||||
openssh-client \
|
||||
rsync \
|
||||
shellcheck \
|
||||
sudo \
|
||||
telnet \
|
||||
time \
|
||||
unzip \
|
||||
wget \
|
||||
zip \
|
||||
tzdata
|
||||
|
||||
# Electron / VSCode / GitHub Desktop prereqs
|
||||
apt-fast install -y --no-install-recommends \
|
||||
libxkbfile-dev \
|
||||
pkg-config \
|
||||
libsecret-1-dev \
|
||||
libxss1 \
|
||||
libgconf-2-4 \
|
||||
dbus \
|
||||
xvfb \
|
||||
libgtk-3-0 \
|
||||
fakeroot \
|
||||
dpkg \
|
||||
rpm \
|
||||
xz-utils \
|
||||
xorriso \
|
||||
zsync
|
||||
|
||||
# Run tests to determine that the software installed as expected
|
||||
echo "Testing to make sure that script performed as expected, and basic scenarios work"
|
||||
for cmd in curl file ftp jq netcat ssh rsync shellcheck sudo telnet time unzip wget zip; do
|
||||
if ! command -v $cmd; then
|
||||
echo "$cmd was not installed"
|
||||
exit 1
|
||||
fi
|
||||
done
|
||||
|
||||
# Document what was added to the image
|
||||
echo "Lastly, documenting what we added to the metadata file"
|
||||
DocumentInstalledItem "Basic CLI:"
|
||||
DocumentInstalledItemIndent "curl"
|
||||
DocumentInstalledItemIndent "dnsutils"
|
||||
DocumentInstalledItemIndent "file"
|
||||
DocumentInstalledItemIndent "ftp"
|
||||
DocumentInstalledItemIndent "iproute2"
|
||||
DocumentInstalledItemIndent "iputils-ping"
|
||||
DocumentInstalledItemIndent "jq"
|
||||
DocumentInstalledItemIndent "libcurl3"
|
||||
DocumentInstalledItemIndent "libicu55"
|
||||
DocumentInstalledItemIndent "libunwind8"
|
||||
DocumentInstalledItemIndent "locales"
|
||||
DocumentInstalledItemIndent "netcat"
|
||||
DocumentInstalledItemIndent "openssh-client"
|
||||
DocumentInstalledItemIndent "rsync"
|
||||
DocumentInstalledItemIndent "shellcheck"
|
||||
DocumentInstalledItemIndent "sudo"
|
||||
DocumentInstalledItemIndent "telnet"
|
||||
DocumentInstalledItemIndent "time"
|
||||
DocumentInstalledItemIndent "unzip"
|
||||
DocumentInstalledItemIndent "wget"
|
||||
DocumentInstalledItemIndent "zip"
|
||||
DocumentInstalledItemIndent "tzdata"
|
||||
94
images/linux/scripts/installers/1604/dotnetcore-sdk.sh
Normal file
94
images/linux/scripts/installers/1604/dotnetcore-sdk.sh
Normal file
@@ -0,0 +1,94 @@
|
||||
#!/bin/bash
|
||||
################################################################################
|
||||
## File: dotnetcore-sdk.sh
|
||||
## Desc: Installs .NET Core SDK
|
||||
################################################################################
|
||||
|
||||
source $HELPER_SCRIPTS/apt.sh
|
||||
source $HELPER_SCRIPTS/document.sh
|
||||
|
||||
LATEST_DOTNET_PACKAGE=dotnet-sdk-3.0
|
||||
|
||||
LSB_RELEASE=$(lsb_release -rs)
|
||||
|
||||
mksamples()
|
||||
{
|
||||
sdk=$1
|
||||
sample=$2
|
||||
mkdir "$sdk"
|
||||
cd "$sdk" || exit
|
||||
set -e
|
||||
dotnet help
|
||||
dotnet new globaljson --sdk-version "$sdk"
|
||||
dotnet new "$sample"
|
||||
dotnet restore
|
||||
dotnet build
|
||||
set +e
|
||||
cd .. || exit
|
||||
rm -rf "$sdk"
|
||||
}
|
||||
|
||||
set -e
|
||||
|
||||
echo "Determing if .NET Core ($LATEST_DOTNET_PACKAGE) is installed"
|
||||
if ! IsInstalled $LATEST_DOTNET_PACKAGE; then
|
||||
echo "Could not find .NET Core ($LATEST_DOTNET_PACKAGE), installing..."
|
||||
wget -q https://packages.microsoft.com/config/ubuntu/16.04/packages-microsoft-prod.deb -O packages-microsoft-prod.deb
|
||||
dpkg -i packages-microsoft-prod.deb
|
||||
apt-get update
|
||||
apt-get install apt-transport-https
|
||||
apt-get update
|
||||
apt-get install $LATEST_DOTNET_PACKAGE
|
||||
else
|
||||
echo ".NET Core ($LATEST_DOTNET_PACKAGE) is already installed"
|
||||
fi
|
||||
|
||||
# Get list of all released SDKs from channels which are not end-of-life or preview
|
||||
release_urls=("https://dotnetcli.blob.core.windows.net/dotnet/release-metadata/2.1/releases.json" "https://dotnetcli.blob.core.windows.net/dotnet/release-metadata/2.2/releases.json" "https://dotnetcli.blob.core.windows.net/dotnet/release-metadata/2.1/releases.json")
|
||||
sdks=()
|
||||
for release_url in ${release_urls[@]}; do
|
||||
echo "${release_url}"
|
||||
releases=$(curl "${release_url}")
|
||||
sdks=("${sdks[@]}" $(echo "${releases}" | jq '.releases[]' | jq '.sdk.version'))
|
||||
sdks=("${sdks[@]}" $(echo "${releases}" | jq '.releases[]' | jq '.sdks[]?' | jq '.version'))
|
||||
done
|
||||
|
||||
sortedSdks=$(echo ${sdks[@]} | tr ' ' '\n' | grep -v preview | grep -v rc | grep -v display | cut -d\" -f2 | sort -u -r)
|
||||
|
||||
for sdk in $sortedSdks; do
|
||||
url="https://dotnetcli.blob.core.windows.net/dotnet/Sdk/$sdk/dotnet-sdk-$sdk-linux-x64.tar.gz"
|
||||
echo "$url" >> urls
|
||||
echo "Adding $url to list to download later"
|
||||
done
|
||||
|
||||
# Download additional SDKs
|
||||
echo "Downloading release tarballs..."
|
||||
cat urls | xargs -n 1 -P 16 wget -q
|
||||
for tarball in *.tar.gz; do
|
||||
dest="./tmp-$(basename -s .tar.gz $tarball)"
|
||||
echo "Extracting $tarball to $dest"
|
||||
mkdir "$dest" && tar -C "$dest" -xzf "$tarball"
|
||||
rsync -qav "$dest/shared/" /usr/share/dotnet/shared/
|
||||
rsync -qav "$dest/host/" /usr/share/dotnet/host/
|
||||
rsync -qav "$dest/sdk/" /usr/share/dotnet/sdk/
|
||||
rm -rf "$dest"
|
||||
rm "$tarball"
|
||||
done
|
||||
rm urls
|
||||
|
||||
DocumentInstalledItem ".NET Core SDK:"
|
||||
# Smoke test each SDK
|
||||
for sdk in $sortedSdks; do
|
||||
mksamples "$sdk" "console"
|
||||
mksamples "$sdk" "mstest"
|
||||
mksamples "$sdk" "xunit"
|
||||
mksamples "$sdk" "web"
|
||||
mksamples "$sdk" "mvc"
|
||||
mksamples "$sdk" "webapi"
|
||||
DocumentInstalledItemIndent "$sdk"
|
||||
done
|
||||
|
||||
# NuGetFallbackFolder at /usr/share/dotnet/sdk/NuGetFallbackFolder is warmed up by smoke test
|
||||
# Additional FTE will just copy to ~/.dotnet/NuGet which provides no benefit on a fungible machine
|
||||
echo "DOTNET_SKIP_FIRST_TIME_EXPERIENCE=1" | tee -a /etc/environment
|
||||
echo "PATH=\"\$HOME/.dotnet/tools:\$PATH\"" | tee -a /etc/skel/.profile
|
||||
36
images/linux/scripts/installers/1604/go.sh
Normal file
36
images/linux/scripts/installers/1604/go.sh
Normal file
@@ -0,0 +1,36 @@
|
||||
#!/bin/bash
|
||||
################################################################################
|
||||
## File: go.sh
|
||||
## Desc: Installs go, configures GOROOT, and adds go to the path
|
||||
################################################################################
|
||||
|
||||
# Source the helpers for use with the script
|
||||
source $HELPER_SCRIPTS/document.sh
|
||||
|
||||
# This function installs Go using the specified arguments:
|
||||
# $1=MajorVersion (1.11)
|
||||
# $2=MajorAndMinorVersion (1.11.1)
|
||||
# $3=IsDefaultVersion (true or false)
|
||||
function InstallGo () {
|
||||
curl -sL https://dl.google.com/go/go$2.linux-amd64.tar.gz -o go$2.linux-amd64.tar.gz
|
||||
mkdir -p /usr/local/go$1
|
||||
tar -C /usr/local/go$1 -xzf go$2.linux-amd64.tar.gz --strip-components=1 go
|
||||
rm go$2.linux-amd64.tar.gz
|
||||
echo "GOROOT_${1//./_}_X64=/usr/local/go$1" | tee -a /etc/environment
|
||||
DocumentInstalledItem "Go $1 ($(/usr/local/go$1/bin/go version))"
|
||||
|
||||
# If this version of Go is to be the default version,
|
||||
# symlink it into the path and point GOROOT to it.
|
||||
if [ $3 = true ]
|
||||
then
|
||||
ln -s /usr/local/go$1/bin/* /usr/bin/
|
||||
echo "GOROOT=/usr/local/go$1" | tee -a /etc/environment
|
||||
fi
|
||||
}
|
||||
|
||||
# Install Go versions
|
||||
InstallGo 1.9 1.9.7 false
|
||||
InstallGo 1.10 1.10.8 false
|
||||
InstallGo 1.11 1.11.12 false
|
||||
InstallGo 1.12 1.12.7 true
|
||||
InstallGo 1.13 1.13 false
|
||||
40
images/linux/scripts/installers/1604/hosted-tool-cache.sh
Normal file
40
images/linux/scripts/installers/1604/hosted-tool-cache.sh
Normal file
@@ -0,0 +1,40 @@
|
||||
#!/bin/bash
|
||||
################################################################################
|
||||
## File: hosted-tool-cache.sh
|
||||
## Desc: Downloads and installs hosted tools cache
|
||||
################################################################################
|
||||
|
||||
# Source the helpers for use with the script
|
||||
source $HELPER_SCRIPTS/document.sh
|
||||
|
||||
# Fail out if any setups fail
|
||||
set -e
|
||||
|
||||
# Download hosted tool cache
|
||||
AGENT_TOOLSDIRECTORY=/opt/hostedtoolcache
|
||||
echo "AGENT_TOOLSDIRECTORY=$AGENT_TOOLSDIRECTORY" | tee -a /etc/environment
|
||||
azcopy --recursive \
|
||||
--source https://vstsagenttools.blob.core.windows.net/tools/hostedtoolcache/linux \
|
||||
--destination $AGENT_TOOLSDIRECTORY
|
||||
|
||||
# Install tools from hosted tool cache
|
||||
original_directory=$PWD
|
||||
setups=$(find $AGENT_TOOLSDIRECTORY -name setup.sh)
|
||||
for setup in $setups; do
|
||||
chmod +x $setup;
|
||||
cd $(dirname $setup);
|
||||
./$(basename $setup);
|
||||
cd $original_directory;
|
||||
done;
|
||||
|
||||
DocumentInstalledItem "Python (available through the [setup-python](https://github.com/actions/setup-python/blob/master/README.md) task)"
|
||||
pythons=$(ls $AGENT_TOOLSDIRECTORY/Python)
|
||||
for python in $pythons; do
|
||||
DocumentInstalledItemIndent "Python $python"
|
||||
done;
|
||||
|
||||
DocumentInstalledItem "Ruby (available through the [setup-ruby](https://github.com/actions/setup-ruby/blob/master/README.md) task)"
|
||||
rubys=$(ls $AGENT_TOOLSDIRECTORY/Ruby)
|
||||
for ruby in $rubys; do
|
||||
DocumentInstalledItemIndent "Ruby $ruby"
|
||||
done;
|
||||
40
images/linux/scripts/installers/1604/kubernetes-tools.sh
Normal file
40
images/linux/scripts/installers/1604/kubernetes-tools.sh
Normal file
@@ -0,0 +1,40 @@
|
||||
#!/bin/bash
|
||||
################################################################################
|
||||
## File: kubernetes-tools.sh
|
||||
## Desc: Installs kubectl, helm
|
||||
################################################################################
|
||||
|
||||
# Source the helpers for use with the script
|
||||
source $HELPER_SCRIPTS/document.sh
|
||||
source $HELPER_SCRIPTS/apt.sh
|
||||
|
||||
## Install kubectl
|
||||
apt-get install -y apt-transport-https
|
||||
curl -s https://packages.cloud.google.com/apt/doc/apt-key.gpg | apt-key add -
|
||||
touch /etc/apt/sources.list.d/kubernetes.list
|
||||
echo "deb http://apt.kubernetes.io/ kubernetes-$(lsb_release -cs) main" | tee -a /etc/apt/sources.list.d/kubernetes.list
|
||||
apt-get update
|
||||
apt-get install -y kubectl
|
||||
|
||||
# Install Helm
|
||||
curl -L https://git.io/get_helm.sh | bash
|
||||
|
||||
# Run tests to determine that the software installed as expected
|
||||
echo "Testing to make sure that script performed as expected, and basic scenarios work"
|
||||
if ! command -v kubectl; then
|
||||
echo "kubectl was not installed"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
if ! command -v helm; then
|
||||
echo "helm was not installed"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
echo "Initializing helm"
|
||||
helm init --client-only
|
||||
|
||||
# Document what was added to the image
|
||||
echo "Lastly, documenting what we added to the metadata file"
|
||||
DocumentInstalledItem "kubectl ($(kubectl version --short |& head -n 1))"
|
||||
DocumentInstalledItem "helm ($(helm version --short |& head -n 1))"
|
||||
25
images/linux/scripts/installers/1604/mercurial.sh
Normal file
25
images/linux/scripts/installers/1604/mercurial.sh
Normal file
@@ -0,0 +1,25 @@
|
||||
#!/bin/bash
|
||||
################################################################################
|
||||
## File: mercurial.sh
|
||||
## Desc: Installs Mercurial
|
||||
################################################################################
|
||||
|
||||
# Source the helpers for use with the script
|
||||
source $HELPER_SCRIPTS/document.sh
|
||||
source $HELPER_SCRIPTS/apt.sh
|
||||
|
||||
# Install Mercurial from the mercurial-ppa/releases repository for the latest version.
|
||||
# https://www.mercurial-scm.org/wiki/Download
|
||||
add-apt-repository ppa:mercurial-ppa/releases -y
|
||||
apt-get update
|
||||
apt-get install -y --no-install-recommends mercurial
|
||||
|
||||
# Run tests to determine that the software installed as expected
|
||||
echo "Testing to make sure that script performed as expected, and basic scenarios work"
|
||||
if ! command -v hg; then
|
||||
exit 1
|
||||
fi
|
||||
|
||||
# Document what was added to the image
|
||||
echo "Lastly, documenting what we added to the metadata file"
|
||||
DocumentInstalledItem "Mercurial ($(hg --version | head -n 1))"
|
||||
268
images/linux/scripts/installers/1604/php.sh
Normal file
268
images/linux/scripts/installers/1604/php.sh
Normal file
@@ -0,0 +1,268 @@
|
||||
#!/bin/bash
|
||||
################################################################################
|
||||
## File: php.sh
|
||||
## Desc: Installs php
|
||||
################################################################################
|
||||
|
||||
# Source the helpers for use with the script
|
||||
source $HELPER_SCRIPTS/document.sh
|
||||
|
||||
LSB_RELEASE=$(lsb_release -rs)
|
||||
|
||||
set -e
|
||||
|
||||
apt-add-repository ppa:ondrej/php -y
|
||||
|
||||
# Install php5.6
|
||||
apt-get update
|
||||
apt-fast install -y --no-install-recommends \
|
||||
php5.6 \
|
||||
php5.6-amqp \
|
||||
php5.6-bcmath \
|
||||
php5.6-bz2 \
|
||||
php5.6-cgi \
|
||||
php5.6-cli \
|
||||
php5.6-common \
|
||||
php5.6-curl \
|
||||
php5.6-dba \
|
||||
php5.6-dev \
|
||||
php5.6-enchant \
|
||||
php5.6-fpm \
|
||||
php5.6-gd \
|
||||
php5.6-gmp \
|
||||
php5.6-imap \
|
||||
php5.6-interbase \
|
||||
php5.6-intl \
|
||||
php5.6-json \
|
||||
php5.6-ldap \
|
||||
php5.6-mbstring \
|
||||
php5.6-mcrypt \
|
||||
php5.6-mysql \
|
||||
php5.6-odbc \
|
||||
php5.6-opcache \
|
||||
php5.6-pgsql \
|
||||
php5.6-phpdbg \
|
||||
php5.6-pspell \
|
||||
php5.6-readline \
|
||||
php5.6-recode \
|
||||
php5.6-snmp \
|
||||
php5.6-soap \
|
||||
php5.6-sqlite3 \
|
||||
php5.6-sybase \
|
||||
php5.6-tidy \
|
||||
php5.6-xml \
|
||||
php5.6-xmlrpc \
|
||||
php5.6-xsl \
|
||||
php5.6-zip
|
||||
apt-get remove --purge -yq php5.6-dev
|
||||
|
||||
# Install php7.0
|
||||
apt-fast install -y --no-install-recommends \
|
||||
php7.0 \
|
||||
php7.0-amqp \
|
||||
php7.0-bcmath \
|
||||
php7.0-bz2 \
|
||||
php7.0-cgi \
|
||||
php7.0-cli \
|
||||
php7.0-common \
|
||||
php7.0-curl \
|
||||
php7.0-dba \
|
||||
php7.0-dev \
|
||||
php7.0-enchant \
|
||||
php7.0-fpm \
|
||||
php7.0-gd \
|
||||
php7.0-gmp \
|
||||
php7.0-imap \
|
||||
php7.0-interbase \
|
||||
php7.0-intl \
|
||||
php7.0-json \
|
||||
php7.0-ldap \
|
||||
php7.0-mbstring \
|
||||
php7.0-mcrypt \
|
||||
php7.0-mysql \
|
||||
php7.0-odbc \
|
||||
php7.0-opcache \
|
||||
php7.0-pgsql \
|
||||
php7.0-phpdbg \
|
||||
php7.0-pspell \
|
||||
php7.0-readline \
|
||||
php7.0-recode \
|
||||
php7.0-snmp \
|
||||
php7.0-soap \
|
||||
php7.0-sqlite3 \
|
||||
php7.0-sybase \
|
||||
php7.0-tidy \
|
||||
php7.0-xml \
|
||||
php7.0-xmlrpc \
|
||||
php7.0-xsl \
|
||||
php7.0-zip
|
||||
apt-get remove --purge -yq php7.0-dev
|
||||
|
||||
# Install php7.1
|
||||
apt-fast install -y --no-install-recommends \
|
||||
php7.1 \
|
||||
php7.1-amqp \
|
||||
php7.1-bcmath \
|
||||
php7.1-bz2 \
|
||||
php7.1-cgi \
|
||||
php7.1-cli \
|
||||
php7.1-common \
|
||||
php7.1-curl \
|
||||
php7.1-dba \
|
||||
php7.1-dev \
|
||||
php7.1-enchant \
|
||||
php7.1-fpm \
|
||||
php7.1-gd \
|
||||
php7.1-gmp \
|
||||
php7.1-imap \
|
||||
php7.1-interbase \
|
||||
php7.1-intl \
|
||||
php7.1-json \
|
||||
php7.1-ldap \
|
||||
php7.1-mbstring \
|
||||
php7.1-mcrypt \
|
||||
php7.1-mysql \
|
||||
php7.1-odbc \
|
||||
php7.1-opcache \
|
||||
php7.1-pgsql \
|
||||
php7.1-phpdbg \
|
||||
php7.1-pspell \
|
||||
php7.1-readline \
|
||||
php7.1-recode \
|
||||
php7.1-snmp \
|
||||
php7.1-soap \
|
||||
php7.1-sqlite3 \
|
||||
php7.1-sybase \
|
||||
php7.1-tidy \
|
||||
php7.1-xml \
|
||||
php7.1-xmlrpc \
|
||||
php7.1-xsl \
|
||||
php7.1-zip
|
||||
apt-get remove --purge -yq php7.1-dev
|
||||
|
||||
# Install php7.2
|
||||
apt-fast install -y --no-install-recommends \
|
||||
php7.2 \
|
||||
php7.2-apcu \
|
||||
php7.2-amqp \
|
||||
php7.2-bcmath \
|
||||
php7.2-bz2 \
|
||||
php7.2-cgi \
|
||||
php7.2-cli \
|
||||
php7.2-common \
|
||||
php7.2-curl \
|
||||
php7.2-dba \
|
||||
php7.2-dev \
|
||||
php7.2-enchant \
|
||||
php7.2-fpm \
|
||||
php7.2-gd \
|
||||
php7.2-gmp \
|
||||
php7.2-imap \
|
||||
php7.2-interbase \
|
||||
php7.2-intl \
|
||||
php7.2-json \
|
||||
php7.2-ldap \
|
||||
php7.2-mbstring \
|
||||
php7.2-mysql \
|
||||
php7.2-odbc \
|
||||
php7.2-opcache \
|
||||
php7.2-pgsql \
|
||||
php7.2-phpdbg \
|
||||
php7.2-pspell \
|
||||
php7.2-readline \
|
||||
php7.2-recode \
|
||||
php7.2-snmp \
|
||||
php7.2-soap \
|
||||
php7.2-sqlite3 \
|
||||
php7.2-sybase \
|
||||
php7.2-tidy \
|
||||
php7.2-xml \
|
||||
php7.2-xmlrpc \
|
||||
php7.2-xsl \
|
||||
php7.2-zip
|
||||
|
||||
# Install php7.3
|
||||
apt-fast install -y --no-install-recommends \
|
||||
php7.3 \
|
||||
php7.3-apcu \
|
||||
php7.3-amqp \
|
||||
php7.3-bcmath \
|
||||
php7.3-bz2 \
|
||||
php7.3-cgi \
|
||||
php7.3-cli \
|
||||
php7.3-common \
|
||||
php7.3-curl \
|
||||
php7.3-dba \
|
||||
php7.3-dev \
|
||||
php7.3-enchant \
|
||||
php7.3-fpm \
|
||||
php7.3-gd \
|
||||
php7.3-gmp \
|
||||
php7.3-imap \
|
||||
php7.3-interbase \
|
||||
php7.3-intl \
|
||||
php7.3-json \
|
||||
php7.3-ldap \
|
||||
php7.3-mbstring \
|
||||
php7.3-mysql \
|
||||
php7.3-odbc \
|
||||
php7.3-opcache \
|
||||
php7.3-pgsql \
|
||||
php7.3-phpdbg \
|
||||
php7.3-pspell \
|
||||
php7.3-readline \
|
||||
php7.3-recode \
|
||||
php7.3-snmp \
|
||||
php7.3-soap \
|
||||
php7.3-sqlite3 \
|
||||
php7.3-sybase \
|
||||
php7.3-tidy \
|
||||
php7.3-xml \
|
||||
php7.3-xmlrpc \
|
||||
php7.3-xsl \
|
||||
php7.3-zip
|
||||
|
||||
apt-fast install -y --no-install-recommends \
|
||||
php-igbinary \
|
||||
php-memcache \
|
||||
php-memcached \
|
||||
php-mongodb \
|
||||
php-redis \
|
||||
php-xdebug \
|
||||
php-yaml \
|
||||
php-zmq
|
||||
|
||||
apt-get remove --purge -yq php7.2-dev
|
||||
|
||||
apt-fast install -y --no-install-recommends snmp
|
||||
|
||||
# Install composer
|
||||
php -r "copy('https://getcomposer.org/installer', 'composer-setup.php');"
|
||||
php -r "if (hash_file('sha384', 'composer-setup.php') === 'a5c698ffe4b8e849a443b120cd5ba38043260d5c4023dbf93e1558871f1f07f58274fc6f4c93bcfd858c6bd0775cd8d1') { echo 'Installer verified'; } else { echo 'Installer corrupt'; unlink('composer-setup.php'); } echo PHP_EOL;"
|
||||
php composer-setup.php
|
||||
sudo mv composer.phar /usr/bin/composer
|
||||
php -r "unlink('composer-setup.php');"
|
||||
|
||||
# Install phpunit (for PHP)
|
||||
wget -q -O phpunit https://phar.phpunit.de/phpunit-7.phar
|
||||
chmod +x phpunit
|
||||
mv phpunit /usr/local/bin/phpunit
|
||||
|
||||
# Run tests to determine that the software installed as expected
|
||||
echo "Testing to make sure that script performed as expected, and basic scenarios work"
|
||||
for cmd in php php5.6 php7.0 php7.1 php7.2 php7.3 composer phpunit; do
|
||||
if ! command -v $cmd; then
|
||||
echo "$cmd was not installed"
|
||||
exit 1
|
||||
fi
|
||||
done
|
||||
|
||||
# Document what was added to the image
|
||||
echo "Lastly, documenting what we added to the metadata file"
|
||||
DocumentInstalledItem "PHP 5.6 ($(php5.6 --version | head -n 1))"
|
||||
DocumentInstalledItem "PHP 7.0 ($(php7.0 --version | head -n 1))"
|
||||
DocumentInstalledItem "PHP 7.1 ($(php7.1 --version | head -n 1))"
|
||||
DocumentInstalledItem "PHP 7.2 ($(php7.2 --version | head -n 1))"
|
||||
DocumentInstalledItem "PHP 7.3 ($(php7.3 --version | head -n 1))"
|
||||
DocumentInstalledItem "Composer ($(composer --version))"
|
||||
DocumentInstalledItem "PHPUnit ($(phpunit --version))"
|
||||
28
images/linux/scripts/installers/1604/powershellcore.sh
Normal file
28
images/linux/scripts/installers/1604/powershellcore.sh
Normal file
@@ -0,0 +1,28 @@
|
||||
#!/bin/bash
|
||||
################################################################################
|
||||
## File: powershellcore.sh
|
||||
## Desc: Installs powershellcore
|
||||
################################################################################
|
||||
|
||||
# Source the helpers for use with the script
|
||||
source $HELPER_SCRIPTS/document.sh
|
||||
|
||||
LSB_RELEASE=$(lsb_release -rs)
|
||||
|
||||
# Install Powershell
|
||||
apt-get install -y powershell
|
||||
|
||||
# Run tests to determine that the software installed as expected
|
||||
echo "Testing to make sure that script performed as expected, and basic scenarios work"
|
||||
if ! command -v pwsh; then
|
||||
echo "pwsh was not installed"
|
||||
exit 1
|
||||
fi
|
||||
if ! pwsh -c 'Write-Host Hello world'; then
|
||||
echo "pwsh failed to run"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
# Document what was added to the image
|
||||
echo "Lastly, documenting what we added to the metadata file"
|
||||
DocumentInstalledItem "Powershell ($(pwsh --version))"
|
||||
12
images/linux/scripts/installers/1604/preparemetadata.sh
Normal file
12
images/linux/scripts/installers/1604/preparemetadata.sh
Normal file
@@ -0,0 +1,12 @@
|
||||
#!/bin/bash
|
||||
################################################################################
|
||||
## File: preparemetadata.sh
|
||||
## Desc: This script adds a image title information to the metadata
|
||||
## document
|
||||
################################################################################
|
||||
|
||||
source $HELPER_SCRIPTS/document.sh
|
||||
|
||||
AddTitle "Hosted Ubuntu 1604 Image ($(lsb_release -ds))"
|
||||
WriteItem "The following software is installed on machines in the Hosted Ubuntu 1604 ($IMAGE_VERSION) pool"
|
||||
WriteItem "***"
|
||||
133
images/linux/scripts/installers/1804/android.sh
Normal file
133
images/linux/scripts/installers/1804/android.sh
Normal file
@@ -0,0 +1,133 @@
|
||||
#!/bin/bash
|
||||
################################################################################
|
||||
## File: android.sh
|
||||
## Desc: Installs Android SDK
|
||||
################################################################################
|
||||
|
||||
# Source the helpers for use with the script
|
||||
source $HELPER_SCRIPTS/document.sh
|
||||
source $HELPER_SCRIPTS/apt.sh
|
||||
|
||||
# Set env variable for SDK Root (https://developer.android.com/studio/command-line/variables)
|
||||
ANDROID_ROOT=/usr/local/lib/android
|
||||
ANDROID_SDK_ROOT=${ANDROID_ROOT}/sdk
|
||||
echo "ANDROID_SDK_ROOT=${ANDROID_SDK_ROOT}" | tee -a /etc/environment
|
||||
|
||||
# ANDROID_HOME is deprecated, but older versions of Gradle rely on it
|
||||
echo "ANDROID_HOME=${ANDROID_SDK_ROOT}" | tee -a /etc/environment
|
||||
|
||||
# Download the latest command line tools so that we can accept all of the licenses.
|
||||
# See https://developer.android.com/studio/#command-tools
|
||||
wget -O android-sdk.zip https://dl.google.com/android/repository/sdk-tools-linux-4333796.zip
|
||||
unzip android-sdk.zip -d ${ANDROID_ROOT}
|
||||
rm -f android-sdk.zip
|
||||
|
||||
# Install the following SDKs and build tools, passing in "y" to accept licenses.
|
||||
echo "y" | ${ANDROID_ROOT}/tools/bin/sdkmanager --sdk_root=${ANDROID_SDK_ROOT} \
|
||||
"ndk-bundle" \
|
||||
"platform-tools" \
|
||||
"platforms;android-29" \
|
||||
"platforms;android-28" \
|
||||
"platforms;android-27" \
|
||||
"platforms;android-26" \
|
||||
"platforms;android-25" \
|
||||
"platforms;android-24" \
|
||||
"platforms;android-23" \
|
||||
"platforms;android-22" \
|
||||
"platforms;android-21" \
|
||||
"platforms;android-19" \
|
||||
"platforms;android-17" \
|
||||
"build-tools;29.0.2" \
|
||||
"build-tools;29.0.0" \
|
||||
"build-tools;28.0.3" \
|
||||
"build-tools;28.0.2" \
|
||||
"build-tools;28.0.1" \
|
||||
"build-tools;28.0.0" \
|
||||
"build-tools;27.0.3" \
|
||||
"build-tools;27.0.2" \
|
||||
"build-tools;27.0.1" \
|
||||
"build-tools;27.0.0" \
|
||||
"build-tools;26.0.3" \
|
||||
"build-tools;26.0.2" \
|
||||
"build-tools;26.0.1" \
|
||||
"build-tools;26.0.0" \
|
||||
"build-tools;25.0.3" \
|
||||
"build-tools;25.0.2" \
|
||||
"build-tools;25.0.1" \
|
||||
"build-tools;25.0.0" \
|
||||
"build-tools;24.0.3" \
|
||||
"build-tools;24.0.2" \
|
||||
"build-tools;24.0.1" \
|
||||
"build-tools;24.0.0" \
|
||||
"build-tools;23.0.3" \
|
||||
"build-tools;23.0.2" \
|
||||
"build-tools;23.0.1" \
|
||||
"build-tools;22.0.1" \
|
||||
"build-tools;21.1.2" \
|
||||
"build-tools;20.0.0" \
|
||||
"build-tools;19.1.0" \
|
||||
"build-tools;17.0.0" \
|
||||
"extras;android;m2repository" \
|
||||
"extras;google;m2repository" \
|
||||
"extras;google;google_play_services" \
|
||||
"add-ons;addon-google_apis-google-24" \
|
||||
"add-ons;addon-google_apis-google-23" \
|
||||
"add-ons;addon-google_apis-google-22" \
|
||||
"add-ons;addon-google_apis-google-21" \
|
||||
"cmake;3.6.4111459" \
|
||||
"patcher;v4"
|
||||
|
||||
# Document what was added to the image
|
||||
echo "Lastly, document what was added to the metadata file"
|
||||
DocumentInstalledItem "Google Repository $(cat ${ANDROID_SDK_ROOT}/extras/google/m2repository/source.properties 2>&1 | grep Pkg.Revision | cut -d '=' -f 2)"
|
||||
DocumentInstalledItem "Google Play services $(cat ${ANDROID_SDK_ROOT}/extras/google/google_play_services/source.properties 2>&1 | grep Pkg.Revision | cut -d '=' -f 2)"
|
||||
DocumentInstalledItem "Google APIs 24"
|
||||
DocumentInstalledItem "Google APIs 23"
|
||||
DocumentInstalledItem "Google APIs 22"
|
||||
DocumentInstalledItem "Google APIs 21"
|
||||
DocumentInstalledItem "CMake $(ls ${ANDROID_SDK_ROOT}/cmake 2>&1)"
|
||||
DocumentInstalledItem "Android Support Repository 47.0.0"
|
||||
DocumentInstalledItem "Android SDK Platform-Tools $(cat ${ANDROID_SDK_ROOT}/platform-tools/source.properties 2>&1 | grep Pkg.Revision | cut -d '=' -f 2)"
|
||||
DocumentInstalledItem "Android SDK Platform 29"
|
||||
DocumentInstalledItem "Android SDK Platform 28"
|
||||
DocumentInstalledItem "Android SDK Platform 27"
|
||||
DocumentInstalledItem "Android SDK Platform 26"
|
||||
DocumentInstalledItem "Android SDK Platform 25"
|
||||
DocumentInstalledItem "Android SDK Platform 24"
|
||||
DocumentInstalledItem "Android SDK Platform 23"
|
||||
DocumentInstalledItem "Android SDK Platform 22"
|
||||
DocumentInstalledItem "Android SDK Platform 21"
|
||||
DocumentInstalledItem "Android SDK Platform 19"
|
||||
DocumentInstalledItem "Android SDK Platform 17"
|
||||
DocumentInstalledItem "Android SDK Patch Applier v4"
|
||||
DocumentInstalledItem "Android SDK Build-Tools 29.0.2"
|
||||
DocumentInstalledItem "Android SDK Build-Tools 29.0.0"
|
||||
DocumentInstalledItem "Android SDK Build-Tools 28.0.3"
|
||||
DocumentInstalledItem "Android SDK Build-Tools 28.0.2"
|
||||
DocumentInstalledItem "Android SDK Build-Tools 28.0.1"
|
||||
DocumentInstalledItem "Android SDK Build-Tools 28.0.0"
|
||||
DocumentInstalledItem "Android SDK Build-Tools 27.0.3"
|
||||
DocumentInstalledItem "Android SDK Build-Tools 27.0.2"
|
||||
DocumentInstalledItem "Android SDK Build-Tools 27.0.1"
|
||||
DocumentInstalledItem "Android SDK Build-Tools 27.0.0"
|
||||
DocumentInstalledItem "Android SDK Build-Tools 26.0.3"
|
||||
DocumentInstalledItem "Android SDK Build-Tools 26.0.2"
|
||||
DocumentInstalledItem "Android SDK Build-Tools 26.0.1"
|
||||
DocumentInstalledItem "Android SDK Build-Tools 26.0.0"
|
||||
DocumentInstalledItem "Android SDK Build-Tools 25.0.3"
|
||||
DocumentInstalledItem "Android SDK Build-Tools 25.0.2"
|
||||
DocumentInstalledItem "Android SDK Build-Tools 25.0.1"
|
||||
DocumentInstalledItem "Android SDK Build-Tools 25.0.0"
|
||||
DocumentInstalledItem "Android SDK Build-Tools 24.0.3"
|
||||
DocumentInstalledItem "Android SDK Build-Tools 24.0.2"
|
||||
DocumentInstalledItem "Android SDK Build-Tools 24.0.1"
|
||||
DocumentInstalledItem "Android SDK Build-Tools 24.0.0"
|
||||
DocumentInstalledItem "Android SDK Build-Tools 23.0.3"
|
||||
DocumentInstalledItem "Android SDK Build-Tools 23.0.2"
|
||||
DocumentInstalledItem "Android SDK Build-Tools 23.0.1"
|
||||
DocumentInstalledItem "Android SDK Build-Tools 22.0.1"
|
||||
DocumentInstalledItem "Android SDK Build-Tools 21.1.2"
|
||||
DocumentInstalledItem "Android SDK Build-Tools 20.0.0"
|
||||
DocumentInstalledItem "Android SDK Build-Tools 19.1.0"
|
||||
DocumentInstalledItem "Android SDK Build-Tools 17.0.0"
|
||||
DocumentInstalledItem "Android NDK $(cat ${ANDROID_SDK_ROOT}/ndk-bundle/source.properties 2>&1 | grep Pkg.Revision | cut -d ' ' -f 3)"
|
||||
46
images/linux/scripts/installers/1804/azpowershell.sh
Normal file
46
images/linux/scripts/installers/1804/azpowershell.sh
Normal file
@@ -0,0 +1,46 @@
|
||||
#!/bin/bash
|
||||
################################################################################
|
||||
## File: azpowershell.sh
|
||||
## Desc: Installed Azure PowerShell
|
||||
################################################################################
|
||||
|
||||
# Source the helpers for use with the script
|
||||
source $HELPER_SCRIPTS/document.sh
|
||||
|
||||
# Install Azure CLI (instructions taken from https://docs.microsoft.com/en-us/cli/azure/install-azure-cli)
|
||||
sudo pwsh -Command 'Save-Module -Name Az -LiteralPath /usr/share/az_1.0.0 -RequiredVersion 1.0.0 -Force'
|
||||
sudo pwsh -Command 'Save-Module -Name Az -LiteralPath /usr/share/az_1.6.0 -RequiredVersion 1.6.0 -Force'
|
||||
sudo pwsh -Command 'Save-Module -Name Az -LiteralPath /usr/share/az_2.3.2 -RequiredVersion 2.3.2 -Force'
|
||||
sudo pwsh -Command 'Save-Module -Name Az -LiteralPath /usr/share/az_2.6.0 -RequiredVersion 2.6.0 -Force'
|
||||
|
||||
# Run tests to determine that the software installed as expected
|
||||
echo "Testing to make sure that script performed as expected, and basic scenarios work"
|
||||
if ! pwsh -Command '$actualPSModulePath = $env:PSModulePath ; $env:PSModulePath = "/usr/share/az_1.0.0:" + $env:PSModulePath;
|
||||
if (!(get-module -listavailable -name Az.accounts)) {
|
||||
Write-Host "Az Module was not installed"; $env:PSModulePath = $actualPSModulePath; exit 1
|
||||
}
|
||||
$env:PSModulePath = $actualPSModulePath
|
||||
$actualPSModulePath = $env:PSModulePath ; $env:PSModulePath = "/usr/share/az_1.6.0:" + $env:PSModulePath;
|
||||
if (!(get-module -listavailable -name Az.accounts)) {
|
||||
Write-Host "Az Module was not installed"; $env:PSModulePath = $actualPSModulePath; exit 1
|
||||
}
|
||||
$env:PSModulePath = $actualPSModulePath
|
||||
$actualPSModulePath = $env:PSModulePath ; $env:PSModulePath = "/usr/share/az_2.3.2:" + $env:PSModulePath;
|
||||
if (!(get-module -listavailable -name Az.accounts)) {
|
||||
Write-Host "Az Module was not installed"; $env:PSModulePath = $actualPSModulePath; exit 1
|
||||
}
|
||||
$env:PSModulePath = $actualPSModulePath
|
||||
$actualPSModulePath = $env:PSModulePath ; $env:PSModulePath = "/usr/share/az_2.6.0:" + $env:PSModulePath;
|
||||
if (!(get-module -listavailable -name Az.accounts)) {
|
||||
Write-Host "Az Module was not installed"; $env:PSModulePath = $actualPSModulePath; exit 1
|
||||
}
|
||||
$env:PSModulePath = $actualPSModulePath'; then
|
||||
exit 1
|
||||
fi
|
||||
|
||||
# Document what was added to the image
|
||||
echo "Lastly, documenting what we added to the metadata file"
|
||||
DocumentInstalledItem "Az Module (1.0.0)"
|
||||
DocumentInstalledItem "Az Module (1.6.0)"
|
||||
DocumentInstalledItem "Az Module (2.3.2)"
|
||||
DocumentInstalledItem "Az Module (2.6.0)"
|
||||
154
images/linux/scripts/installers/1804/basic.sh
Normal file
154
images/linux/scripts/installers/1804/basic.sh
Normal file
@@ -0,0 +1,154 @@
|
||||
#!/bin/bash
|
||||
################################################################################
|
||||
## File: basic.sh
|
||||
## Desc: Installs basic command line utilities and dev packages
|
||||
################################################################################
|
||||
|
||||
# Source the helpers for use with the script
|
||||
source $HELPER_SCRIPTS/document.sh
|
||||
source $HELPER_SCRIPTS/apt.sh
|
||||
|
||||
set -e
|
||||
|
||||
echo "Install curl"
|
||||
apt-get install -y --no-install-recommends curl
|
||||
|
||||
echo "Install dnsutils"
|
||||
apt-get install -y --no-install-recommends dnsutils
|
||||
|
||||
echo "Install file"
|
||||
apt-get install -y --no-install-recommends file
|
||||
|
||||
echo "Install ftp"
|
||||
apt-get install -y --no-install-recommends ftp
|
||||
|
||||
echo "Install iproute2"
|
||||
apt-get install -y --no-install-recommends iproute2
|
||||
|
||||
echo "Install iputils-ping"
|
||||
apt-get install -y --no-install-recommends iputils-ping
|
||||
|
||||
echo "Install jq"
|
||||
apt-get install -y --no-install-recommends jq
|
||||
|
||||
echo "Install libcurl3"
|
||||
apt-get install -y --no-install-recommends libcurl3
|
||||
|
||||
echo "Install libunwind8"
|
||||
apt-get install -y --no-install-recommends libunwind8
|
||||
|
||||
echo "Install locales"
|
||||
apt-get install -y --no-install-recommends locales
|
||||
|
||||
echo "Install netcat"
|
||||
apt-get install -y --no-install-recommends netcat
|
||||
|
||||
echo "Install openssh-client"
|
||||
apt-get install -y --no-install-recommends openssh-client
|
||||
|
||||
echo "Install rsync"
|
||||
apt-get install -y --no-install-recommends rsync
|
||||
|
||||
echo "Install shellcheck"
|
||||
apt-get install -y --no-install-recommends shellcheck
|
||||
|
||||
echo "Install sudo"
|
||||
apt-get install -y --no-install-recommends sudo
|
||||
|
||||
echo "Install telnet"
|
||||
apt-get install -y --no-install-recommends telnet
|
||||
|
||||
echo "Install time"
|
||||
apt-get install -y --no-install-recommends time
|
||||
|
||||
echo "Install unzip"
|
||||
apt-get install -y --no-install-recommends unzip
|
||||
|
||||
echo "Install wget"
|
||||
apt-get install -y --no-install-recommends wget
|
||||
|
||||
echo "Install zip"
|
||||
apt-get install -y --no-install-recommends zip
|
||||
|
||||
echo "Install tzdata"
|
||||
apt-get install -y --no-install-recommends tzdata
|
||||
|
||||
echo "Install libxkbfile"
|
||||
apt-get install -y --no-install-recommends libxkbfile-dev
|
||||
|
||||
echo "Install pkg-config"
|
||||
apt-get install -y --no-install-recommends pkg-config
|
||||
|
||||
echo "Install libsecret-1-dev"
|
||||
apt-get install -y --no-install-recommends libsecret-1-dev
|
||||
|
||||
echo "Install libxss1"
|
||||
apt-get install -y --no-install-recommends libxss1
|
||||
|
||||
echo "Install libgconf-2-4"
|
||||
apt-get install -y --no-install-recommends libgconf-2-4
|
||||
|
||||
echo "Install dbus"
|
||||
apt-get install -y --no-install-recommends dbus
|
||||
|
||||
echo "Install xvfb"
|
||||
apt-get install -y --no-install-recommends xvfb
|
||||
|
||||
echo "Install libgtk"
|
||||
apt-get install -y --no-install-recommends libgtk-3-0
|
||||
|
||||
echo "Install fakeroot"
|
||||
apt-get install -y --no-install-recommends fakeroot
|
||||
|
||||
echo "Install dpkg"
|
||||
apt-get install -y --no-install-recommends dpkg
|
||||
|
||||
echo "Install rpm"
|
||||
apt-get install -y --no-install-recommends rpm
|
||||
|
||||
echo "Install xz-utils"
|
||||
apt-get install -y --no-install-recommends xz-utils
|
||||
|
||||
echo "Install xorriso"
|
||||
apt-get install -y --no-install-recommends xorriso
|
||||
|
||||
echo "Install zsync"
|
||||
apt-get install -y --no-install-recommends zsync
|
||||
|
||||
echo "Install curl"
|
||||
apt-get install -y --no-install-recommends curl
|
||||
|
||||
# Run tests to determine that the software installed as expected
|
||||
echo "Testing to make sure that script performed as expected, and basic scenarios work"
|
||||
for cmd in curl file ftp jq netcat ssh rsync shellcheck sudo telnet time unzip wget zip; do
|
||||
if ! command -v $cmd; then
|
||||
echo "$cmd was not installed"
|
||||
exit 1
|
||||
fi
|
||||
done
|
||||
|
||||
# Document what was added to the image
|
||||
echo "Lastly, documenting what we added to the metadata file"
|
||||
DocumentInstalledItem "Basic CLI:"
|
||||
DocumentInstalledItemIndent "curl"
|
||||
DocumentInstalledItemIndent "dnsutils"
|
||||
DocumentInstalledItemIndent "file"
|
||||
DocumentInstalledItemIndent "ftp"
|
||||
DocumentInstalledItemIndent "iproute2"
|
||||
DocumentInstalledItemIndent "iputils-ping"
|
||||
DocumentInstalledItemIndent "jq"
|
||||
DocumentInstalledItemIndent "libcurl3"
|
||||
DocumentInstalledItemIndent "libicu55"
|
||||
DocumentInstalledItemIndent "libunwind8"
|
||||
DocumentInstalledItemIndent "locales"
|
||||
DocumentInstalledItemIndent "netcat"
|
||||
DocumentInstalledItemIndent "openssh-client"
|
||||
DocumentInstalledItemIndent "rsync"
|
||||
DocumentInstalledItemIndent "shellcheck"
|
||||
DocumentInstalledItemIndent "sudo"
|
||||
DocumentInstalledItemIndent "telnet"
|
||||
DocumentInstalledItemIndent "time"
|
||||
DocumentInstalledItemIndent "unzip"
|
||||
DocumentInstalledItemIndent "wget"
|
||||
DocumentInstalledItemIndent "zip"
|
||||
DocumentInstalledItemIndent "tzdata"
|
||||
95
images/linux/scripts/installers/1804/dotnetcore-sdk.sh
Normal file
95
images/linux/scripts/installers/1804/dotnetcore-sdk.sh
Normal file
@@ -0,0 +1,95 @@
|
||||
#!/bin/bash
|
||||
################################################################################
|
||||
## File: dotnetcore-sdk.sh
|
||||
## Team: CI-Platform
|
||||
## Desc: Installs .NET Core SDK
|
||||
################################################################################
|
||||
|
||||
source $HELPER_SCRIPTS/apt.sh
|
||||
source $HELPER_SCRIPTS/document.sh
|
||||
|
||||
LATEST_DOTNET_PACKAGE=dotnet-sdk-3.0
|
||||
|
||||
LSB_RELEASE=$(lsb_release -rs)
|
||||
|
||||
mksamples()
|
||||
{
|
||||
sdk=$1
|
||||
sample=$2
|
||||
mkdir "$sdk"
|
||||
cd "$sdk" || exit
|
||||
set -e
|
||||
dotnet help
|
||||
dotnet new globaljson --sdk-version "$sdk"
|
||||
dotnet new "$sample"
|
||||
dotnet restore
|
||||
dotnet build
|
||||
set +e
|
||||
cd .. || exit
|
||||
rm -rf "$sdk"
|
||||
}
|
||||
|
||||
set -e
|
||||
|
||||
echo "Determing if .NET Core ($LATEST_DOTNET_PACKAGE) is installed"
|
||||
if ! IsInstalled $LATEST_DOTNET_PACKAGE; then
|
||||
echo "Could not find .NET Core ($LATEST_DOTNET_PACKAGE), installing..."
|
||||
curl https://packages.microsoft.com/keys/microsoft.asc | gpg --dearmor > microsoft.gpg
|
||||
mv microsoft.gpg /etc/apt/trusted.gpg.d/microsoft.gpg
|
||||
sh -c 'echo "deb [arch=amd64] https://packages.microsoft.com/repos/microsoft-ubuntu-bionic-prod bionic main" > /etc/apt/sources.list.d/dotnetdev.list'
|
||||
apt-get install apt-transport-https
|
||||
apt-get update
|
||||
apt-get install $LATEST_DOTNET_PACKAGE -y
|
||||
else
|
||||
echo ".NET Core ($LATEST_DOTNET_PACKAGE) is already installed"
|
||||
fi
|
||||
|
||||
# Get list of all released SDKs from channels which are not end-of-life or preview
|
||||
release_urls=("https://dotnetcli.blob.core.windows.net/dotnet/release-metadata/2.1/releases.json" "https://dotnetcli.blob.core.windows.net/dotnet/release-metadata/2.2/releases.json" "https://dotnetcli.blob.core.windows.net/dotnet/release-metadata/3.0/releases.json")
|
||||
sdks=()
|
||||
for release_url in ${release_urls[@]}; do
|
||||
echo "${release_url}"
|
||||
releases=$(curl "${release_url}")
|
||||
sdks=("${sdks[@]}" $(echo "${releases}" | jq '.releases[]' | jq '.sdk.version'))
|
||||
sdks=("${sdks[@]}" $(echo "${releases}" | jq '.releases[]' | jq '.sdks[]?' | jq '.version'))
|
||||
done
|
||||
|
||||
sortedSdks=$(echo ${sdks[@]} | tr ' ' '\n' | grep -v preview | grep -v rc | grep -v display | cut -d\" -f2 | sort -u -r)
|
||||
|
||||
for sdk in $sortedSdks; do
|
||||
url="https://dotnetcli.blob.core.windows.net/dotnet/Sdk/$sdk/dotnet-sdk-$sdk-linux-x64.tar.gz"
|
||||
echo "$url" >> urls
|
||||
echo "Adding $url to list to download later"
|
||||
done
|
||||
|
||||
# Download additional SDKs
|
||||
echo "Downloading release tarballs..."
|
||||
cat urls | xargs -n 1 -P 16 wget -q
|
||||
for tarball in *.tar.gz; do
|
||||
dest="./tmp-$(basename -s .tar.gz $tarball)"
|
||||
echo "Extracting $tarball to $dest"
|
||||
mkdir "$dest" && tar -C "$dest" -xzf "$tarball"
|
||||
rsync -qav "$dest/shared/" /usr/share/dotnet/shared/
|
||||
rsync -qav "$dest/host/" /usr/share/dotnet/host/
|
||||
rsync -qav "$dest/sdk/" /usr/share/dotnet/sdk/
|
||||
rm -rf "$dest"
|
||||
rm "$tarball"
|
||||
done
|
||||
rm urls
|
||||
|
||||
DocumentInstalledItem ".NET Core SDK:"
|
||||
# Smoke test each SDK
|
||||
for sdk in $sortedSdks; do
|
||||
mksamples "$sdk" "console"
|
||||
mksamples "$sdk" "mstest"
|
||||
mksamples "$sdk" "xunit"
|
||||
mksamples "$sdk" "web"
|
||||
mksamples "$sdk" "mvc"
|
||||
mksamples "$sdk" "webapi"
|
||||
DocumentInstalledItemIndent "$sdk"
|
||||
done
|
||||
|
||||
# NuGetFallbackFolder at /usr/share/dotnet/sdk/NuGetFallbackFolder is warmed up by smoke test
|
||||
# Additional FTE will just copy to ~/.dotnet/NuGet which provides no benefit on a fungible machine
|
||||
echo "DOTNET_SKIP_FIRST_TIME_EXPERIENCE=1" | tee -a /etc/environment
|
||||
echo "PATH=\"\$HOME/.dotnet/tools:\$PATH\"" | tee -a /etc/skel/.profile
|
||||
34
images/linux/scripts/installers/1804/go.sh
Normal file
34
images/linux/scripts/installers/1804/go.sh
Normal file
@@ -0,0 +1,34 @@
|
||||
#!/bin/bash
|
||||
################################################################################
|
||||
## File: go.sh
|
||||
## Desc: Installs go, configures GOROOT, and adds go to the path
|
||||
################################################################################
|
||||
|
||||
# Source the helpers for use with the script
|
||||
source $HELPER_SCRIPTS/document.sh
|
||||
|
||||
# This function installs Go using the specified arguments:
|
||||
# $1=MajorVersion (1.11)
|
||||
# $2=MajorAndMinorVersion (1.11.1)
|
||||
# $3=IsDefaultVersion (true or false)
|
||||
function InstallGo () {
|
||||
curl -sL https://dl.google.com/go/go$2.linux-amd64.tar.gz -o go$2.linux-amd64.tar.gz
|
||||
mkdir -p /usr/local/go$1
|
||||
tar -C /usr/local/go$1 -xzf go$2.linux-amd64.tar.gz --strip-components=1 go
|
||||
rm go$2.linux-amd64.tar.gz
|
||||
echo "GOROOT_${1//./_}_X64=/usr/local/go$1" | tee -a /etc/environment
|
||||
DocumentInstalledItem "Go $1 ($(/usr/local/go$1/bin/go version))"
|
||||
|
||||
# If this version of Go is to be the default version,
|
||||
# symlink it into the path and point GOROOT to it.
|
||||
if [ $3 = true ]
|
||||
then
|
||||
ln -s /usr/local/go$1/bin/* /usr/bin/
|
||||
echo "GOROOT=/usr/local/go$1" | tee -a /etc/environment
|
||||
fi
|
||||
}
|
||||
|
||||
# Install Go versions
|
||||
InstallGo 1.11 1.11.12 false
|
||||
InstallGo 1.12 1.12.7 true
|
||||
InstallGo 1.13 1.13 false
|
||||
40
images/linux/scripts/installers/1804/hosted-tool-cache.sh
Normal file
40
images/linux/scripts/installers/1804/hosted-tool-cache.sh
Normal file
@@ -0,0 +1,40 @@
|
||||
#!/bin/bash
|
||||
################################################################################
|
||||
## File: hosted-tool-cache.sh
|
||||
## Desc: Downloads and installs hosted tools cache
|
||||
################################################################################
|
||||
|
||||
# Source the helpers for use with the script
|
||||
source $HELPER_SCRIPTS/document.sh
|
||||
|
||||
# Fail out if any setups fail
|
||||
set -e
|
||||
|
||||
# Download hosted tool cache
|
||||
AGENT_TOOLSDIRECTORY=/opt/hostedtoolcache
|
||||
echo "AGENT_TOOLSDIRECTORY=$AGENT_TOOLSDIRECTORY" | tee -a /etc/environment
|
||||
azcopy --recursive \
|
||||
--source https://vstsagenttools.blob.core.windows.net/tools/hostedtoolcache/ubuntu-1804 \
|
||||
--destination $AGENT_TOOLSDIRECTORY
|
||||
|
||||
# Install tools from hosted tool cache
|
||||
original_directory=$PWD
|
||||
setups=$(find $AGENT_TOOLSDIRECTORY -name setup.sh)
|
||||
for setup in $setups; do
|
||||
chmod +x $setup;
|
||||
cd $(dirname $setup);
|
||||
./$(basename $setup);
|
||||
cd $original_directory;
|
||||
done;
|
||||
|
||||
DocumentInstalledItem "Python (available through the [setup-python](https://github.com/actions/setup-python/blob/master/README.md) task)"
|
||||
pythons=$(ls $AGENT_TOOLSDIRECTORY/Python)
|
||||
for python in $pythons; do
|
||||
DocumentInstalledItemIndent "Python $python"
|
||||
done;
|
||||
|
||||
DocumentInstalledItem "Ruby (available through the [setup-ruby](https://github.com/actions/setup-ruby/blob/master/README.md) task)"
|
||||
rubys=$(ls $AGENT_TOOLSDIRECTORY/Ruby)
|
||||
for ruby in $rubys; do
|
||||
DocumentInstalledItemIndent "Ruby $ruby"
|
||||
done;
|
||||
42
images/linux/scripts/installers/1804/kubernetes-tools.sh
Normal file
42
images/linux/scripts/installers/1804/kubernetes-tools.sh
Normal file
@@ -0,0 +1,42 @@
|
||||
#!/bin/bash
|
||||
################################################################################
|
||||
## File: kubernetes-tools.sh
|
||||
## Desc: Installs kubectl, helm
|
||||
################################################################################
|
||||
|
||||
# Source the helpers for use with the script
|
||||
source $HELPER_SCRIPTS/document.sh
|
||||
source $HELPER_SCRIPTS/apt.sh
|
||||
|
||||
## Install kubectl
|
||||
apt-get install -y apt-transport-https
|
||||
curl -s https://packages.cloud.google.com/apt/doc/apt-key.gpg | apt-key add -
|
||||
touch /etc/apt/sources.list.d/kubernetes.list
|
||||
|
||||
# Based on https://kubernetes.io/docs/tasks/tools/install-kubectl/, package is still called xenial
|
||||
echo "deb http://apt.kubernetes.io/ kubernetes-xenial main" | tee -a /etc/apt/sources.list.d/kubernetes.list
|
||||
apt-get update
|
||||
apt-get install -y kubectl
|
||||
|
||||
# Install Helm
|
||||
curl -L https://git.io/get_helm.sh | bash
|
||||
|
||||
# Run tests to determine that the software installed as expected
|
||||
echo "Testing to make sure that script performed as expected, and basic scenarios work"
|
||||
if ! command -v kubectl; then
|
||||
echo "kubectl was not installed"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
if ! command -v helm; then
|
||||
echo "helm was not installed"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
echo "Initializing helm"
|
||||
helm init --client-only
|
||||
|
||||
# Document what was added to the image
|
||||
echo "Lastly, documenting what we added to the metadata file"
|
||||
DocumentInstalledItem "kubectl ($(kubectl version --short |& head -n 1))"
|
||||
DocumentInstalledItem "helm ($(helm version --short |& head -n 1))"
|
||||
21
images/linux/scripts/installers/1804/mercurial.sh
Normal file
21
images/linux/scripts/installers/1804/mercurial.sh
Normal file
@@ -0,0 +1,21 @@
|
||||
#!/bin/bash
|
||||
################################################################################
|
||||
## File: mercurial.sh
|
||||
## Desc: Installs Mercurial
|
||||
################################################################################
|
||||
|
||||
# Source the helpers for use with the script
|
||||
source $HELPER_SCRIPTS/document.sh
|
||||
source $HELPER_SCRIPTS/apt.sh
|
||||
|
||||
apt-get install -y --no-install-recommends mercurial
|
||||
|
||||
# Run tests to determine that the software installed as expected
|
||||
echo "Testing to make sure that script performed as expected, and basic scenarios work"
|
||||
if ! command -v hg; then
|
||||
exit 1
|
||||
fi
|
||||
|
||||
# Document what was added to the image
|
||||
echo "Lastly, documenting what we added to the metadata file"
|
||||
DocumentInstalledItem "Mercurial ($(hg --version | head -n 1))"
|
||||
181
images/linux/scripts/installers/1804/php.sh
Normal file
181
images/linux/scripts/installers/1804/php.sh
Normal file
@@ -0,0 +1,181 @@
|
||||
#!/bin/bash
|
||||
################################################################################
|
||||
## File: php.sh
|
||||
## Desc: Installs php
|
||||
################################################################################
|
||||
|
||||
# Source the helpers for use with the script
|
||||
source $HELPER_SCRIPTS/document.sh
|
||||
|
||||
LSB_RELEASE=$(lsb_release -rs)
|
||||
|
||||
set -e
|
||||
|
||||
apt-add-repository ppa:ondrej/php -y
|
||||
|
||||
# Install php7.1
|
||||
apt-fast install -y --no-install-recommends \
|
||||
php7.1 \
|
||||
php7.1-amqp \
|
||||
php7.1-bcmath \
|
||||
php7.1-bz2 \
|
||||
php7.1-cgi \
|
||||
php7.1-cli \
|
||||
php7.1-common \
|
||||
php7.1-curl \
|
||||
php7.1-dba \
|
||||
php7.1-dev \
|
||||
php7.1-enchant \
|
||||
php7.1-fpm \
|
||||
php7.1-gd \
|
||||
php7.1-gmp \
|
||||
php7.1-imap \
|
||||
php7.1-interbase \
|
||||
php7.1-intl \
|
||||
php7.1-json \
|
||||
php7.1-ldap \
|
||||
php7.1-mbstring \
|
||||
php7.1-mcrypt \
|
||||
php7.1-mysql \
|
||||
php7.1-odbc \
|
||||
php7.1-opcache \
|
||||
php7.1-pgsql \
|
||||
php7.1-phpdbg \
|
||||
php7.1-pspell \
|
||||
php7.1-readline \
|
||||
php7.1-recode \
|
||||
php7.1-snmp \
|
||||
php7.1-soap \
|
||||
php7.1-sqlite3 \
|
||||
php7.1-sybase \
|
||||
php7.1-tidy \
|
||||
php7.1-xml \
|
||||
php7.1-xmlrpc \
|
||||
php7.1-xsl \
|
||||
php7.1-zip
|
||||
apt-get remove --purge -yq php7.1-dev
|
||||
|
||||
# Install php7.2
|
||||
apt-fast install -y --no-install-recommends \
|
||||
php7.2 \
|
||||
php7.2-apcu \
|
||||
php7.2-amqp \
|
||||
php7.2-bcmath \
|
||||
php7.2-bz2 \
|
||||
php7.2-cgi \
|
||||
php7.2-cli \
|
||||
php7.2-common \
|
||||
php7.2-curl \
|
||||
php7.2-dba \
|
||||
php7.2-dev \
|
||||
php7.2-enchant \
|
||||
php7.2-fpm \
|
||||
php7.2-gd \
|
||||
php7.2-gmp \
|
||||
php7.2-imap \
|
||||
php7.2-interbase \
|
||||
php7.2-intl \
|
||||
php7.2-json \
|
||||
php7.2-ldap \
|
||||
php7.2-mbstring \
|
||||
php7.2-mysql \
|
||||
php7.2-odbc \
|
||||
php7.2-opcache \
|
||||
php7.2-pgsql \
|
||||
php7.2-phpdbg \
|
||||
php7.2-pspell \
|
||||
php7.2-readline \
|
||||
php7.2-recode \
|
||||
php7.2-snmp \
|
||||
php7.2-soap \
|
||||
php7.2-sqlite3 \
|
||||
php7.2-sybase \
|
||||
php7.2-tidy \
|
||||
php7.2-xml \
|
||||
php7.2-xmlrpc \
|
||||
php7.2-xsl \
|
||||
php7.2-zip
|
||||
|
||||
# Install php7.3
|
||||
apt-fast install -y --no-install-recommends \
|
||||
php7.3 \
|
||||
php7.3-apcu \
|
||||
php7.3-amqp \
|
||||
php7.3-bcmath \
|
||||
php7.3-bz2 \
|
||||
php7.3-cgi \
|
||||
php7.3-cli \
|
||||
php7.3-common \
|
||||
php7.3-curl \
|
||||
php7.3-dba \
|
||||
php7.3-dev \
|
||||
php7.3-enchant \
|
||||
php7.3-fpm \
|
||||
php7.3-gd \
|
||||
php7.3-gmp \
|
||||
php7.3-imap \
|
||||
php7.3-interbase \
|
||||
php7.3-intl \
|
||||
php7.3-json \
|
||||
php7.3-ldap \
|
||||
php7.3-mbstring \
|
||||
php7.3-mysql \
|
||||
php7.3-odbc \
|
||||
php7.3-opcache \
|
||||
php7.3-pgsql \
|
||||
php7.3-phpdbg \
|
||||
php7.3-pspell \
|
||||
php7.3-readline \
|
||||
php7.3-recode \
|
||||
php7.3-snmp \
|
||||
php7.3-soap \
|
||||
php7.3-sqlite3 \
|
||||
php7.3-sybase \
|
||||
php7.3-tidy \
|
||||
php7.3-xml \
|
||||
php7.3-xmlrpc \
|
||||
php7.3-xsl \
|
||||
php7.3-zip
|
||||
|
||||
apt-fast install -y --no-install-recommends \
|
||||
php-igbinary \
|
||||
php-memcache \
|
||||
php-memcached \
|
||||
php-mongodb \
|
||||
php-redis \
|
||||
php-xdebug \
|
||||
php-yaml \
|
||||
php-zmq
|
||||
|
||||
apt-get remove --purge -yq php7.2-dev
|
||||
|
||||
apt-fast install -y --no-install-recommends snmp
|
||||
|
||||
# Install composer
|
||||
php -r "copy('https://getcomposer.org/installer', 'composer-setup.php');"
|
||||
php -r "if (hash_file('sha384', 'composer-setup.php') === 'a5c698ffe4b8e849a443b120cd5ba38043260d5c4023dbf93e1558871f1f07f58274fc6f4c93bcfd858c6bd0775cd8d1') { echo 'Installer verified'; } else { echo 'Installer corrupt'; unlink('composer-setup.php'); } echo PHP_EOL;"
|
||||
php composer-setup.php
|
||||
sudo mv composer.phar /usr/bin/composer
|
||||
php -r "unlink('composer-setup.php');"
|
||||
|
||||
# Install phpunit (for PHP)
|
||||
wget -q -O phpunit https://phar.phpunit.de/phpunit-7.phar
|
||||
chmod +x phpunit
|
||||
mv phpunit /usr/local/bin/phpunit
|
||||
|
||||
# Run tests to determine that the software installed as expected
|
||||
echo "Testing to make sure that script performed as expected, and basic scenarios work"
|
||||
for cmd in php php7.1 php7.2 php7.3 composer phpunit; do
|
||||
if ! command -v $cmd; then
|
||||
echo "$cmd was not installed"
|
||||
exit 1
|
||||
fi
|
||||
done
|
||||
|
||||
# Document what was added to the image
|
||||
echo "Lastly, documenting what we added to the metadata file"
|
||||
DocumentInstalledItem "PHP 7.1 ($(php7.1 --version | head -n 1))"
|
||||
DocumentInstalledItem "PHP 7.2 ($(php7.2 --version | head -n 1))"
|
||||
DocumentInstalledItem "PHP 7.3 ($(php7.3 --version | head -n 1))"
|
||||
DocumentInstalledItem "Composer ($(composer --version))"
|
||||
DocumentInstalledItem "PHPUnit ($(phpunit --version))"
|
||||
31
images/linux/scripts/installers/1804/powershellcore.sh
Normal file
31
images/linux/scripts/installers/1804/powershellcore.sh
Normal file
@@ -0,0 +1,31 @@
|
||||
#!/bin/bash
|
||||
################################################################################
|
||||
## File: powershellcore.sh
|
||||
## Desc: Installs powershellcore
|
||||
################################################################################
|
||||
|
||||
# Source the helpers for use with the script
|
||||
source $HELPER_SCRIPTS/document.sh
|
||||
|
||||
LSB_RELEASE=$(lsb_release -rs)
|
||||
|
||||
# Install Powershell
|
||||
apt-get install -y powershell
|
||||
|
||||
# Temp fix based on: https://github.com/PowerShell/PowerShell/issues/9746
|
||||
sudo apt remove libicu64
|
||||
|
||||
# Run tests to determine that the software installed as expected
|
||||
echo "Testing to make sure that script performed as expected, and basic scenarios work"
|
||||
if ! command -v pwsh; then
|
||||
echo "pwsh was not installed"
|
||||
exit 1
|
||||
fi
|
||||
if ! pwsh -c 'Write-Host Hello world'; then
|
||||
echo "pwsh failed to run"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
# Document what was added to the image
|
||||
echo "Lastly, documenting what we added to the metadata file"
|
||||
DocumentInstalledItem "Powershell ($(pwsh --version))"
|
||||
12
images/linux/scripts/installers/1804/preparemetadata.sh
Normal file
12
images/linux/scripts/installers/1804/preparemetadata.sh
Normal file
@@ -0,0 +1,12 @@
|
||||
#!/bin/bash
|
||||
################################################################################
|
||||
## File: preparemetadata.sh
|
||||
## Desc: This script adds a image title information to the metadata
|
||||
## document
|
||||
################################################################################
|
||||
|
||||
source $HELPER_SCRIPTS/document.sh
|
||||
|
||||
AddTitle "Hosted Ubuntu 1804 Image ($(lsb_release -ds))"
|
||||
WriteItem "The following software is installed on machines in the Hosted Ubuntu 1804 (v$IMAGE_VERSION) pool"
|
||||
WriteItem "***"
|
||||
23
images/linux/scripts/installers/7-zip.sh
Normal file
23
images/linux/scripts/installers/7-zip.sh
Normal file
@@ -0,0 +1,23 @@
|
||||
#!/bin/bash
|
||||
################################################################################
|
||||
## File: 7-zip.sh
|
||||
## Desc: Installs 7-zip
|
||||
################################################################################
|
||||
|
||||
# Source the helpers for use with the script
|
||||
source $HELPER_SCRIPTS/document.sh
|
||||
|
||||
# Install 7-Zip
|
||||
apt-get update -y
|
||||
apt-get install -y p7zip p7zip-full p7zip-rar
|
||||
|
||||
# Run tests to determine that the software installed as expected
|
||||
echo "Testing to make sure that script performed as expected, and basic scenarios work"
|
||||
if ! command -v 7z; then
|
||||
echo "7-Zip was not installed"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
# Document what was added to the image
|
||||
echo "Lastly, documenting what we added to the metadata file"
|
||||
DocumentInstalledItem "7-Zip $(7z i | head --lines=2 | cut -d ' ' -f 3 | tr -d '\n')"
|
||||
25
images/linux/scripts/installers/ansible.sh
Normal file
25
images/linux/scripts/installers/ansible.sh
Normal file
@@ -0,0 +1,25 @@
|
||||
#!/bin/bash
|
||||
################################################################################
|
||||
## File: ansible.sh
|
||||
## Desc: Installs Ansible
|
||||
################################################################################
|
||||
|
||||
# Source the helpers for use with the script
|
||||
source $HELPER_SCRIPTS/document.sh
|
||||
source $HELPER_SCRIPTS/apt.sh
|
||||
|
||||
# Install Ansible PPA and latest Ansible
|
||||
add-apt-repository ppa:ansible/ansible
|
||||
apt-get update
|
||||
apt-get install -y --no-install-recommends ansible
|
||||
|
||||
# Run tests to determine that the software installed as expected
|
||||
echo "Testing to make sure that script performed as expected, and basic scenarios work"
|
||||
if ! command -v ansible; then
|
||||
echo "Ansible was not installed or found on PATH"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
# Document what was added to the image
|
||||
echo "Lastly, documenting what we added to the metadata file"
|
||||
DocumentInstalledItem "Ansible ($(ansible --version |& head -n 1))"
|
||||
26
images/linux/scripts/installers/aws.sh
Normal file
26
images/linux/scripts/installers/aws.sh
Normal file
@@ -0,0 +1,26 @@
|
||||
#!/bin/bash
|
||||
################################################################################
|
||||
## File: aws.sh
|
||||
## Desc: Installs the AWS CLI
|
||||
################################################################################
|
||||
|
||||
# Source the helpers
|
||||
source $HELPER_SCRIPTS/document.sh
|
||||
|
||||
# Install the AWS CLI
|
||||
curl "https://s3.amazonaws.com/aws-cli/awscli-bundle.zip" -o "awscli-bundle.zip"
|
||||
unzip awscli-bundle.zip
|
||||
./awscli-bundle/install -i /usr/local/aws -b /usr/local/bin/aws
|
||||
rm awscli-bundle.zip
|
||||
rm -rf awscli-bundle
|
||||
|
||||
# Validate the installation
|
||||
echo "Validate the installation"
|
||||
if ! command -v aws; then
|
||||
echo "aws was not installed"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
# Document the installed version
|
||||
echo "Document the installed version"
|
||||
DocumentInstalledItem "AWS CLI ($(aws --version 2>&1))"
|
||||
25
images/linux/scripts/installers/azcopy.sh
Normal file
25
images/linux/scripts/installers/azcopy.sh
Normal file
@@ -0,0 +1,25 @@
|
||||
#!/bin/bash
|
||||
################################################################################
|
||||
## File: azcopy.sh
|
||||
## Desc: Installs AzCopy
|
||||
################################################################################
|
||||
|
||||
# Source the helpers for use with the script
|
||||
source $HELPER_SCRIPTS/document.sh
|
||||
|
||||
# Install AzCopy
|
||||
wget -O azcopy.tar.gz https://aka.ms/downloadazcopylinux64
|
||||
tar -xf azcopy.tar.gz
|
||||
rm azcopy.tar.gz
|
||||
./install.sh
|
||||
|
||||
# Run tests to determine that the software installed as expected
|
||||
echo "Testing to make sure that script performed as expected, and basic scenarios work"
|
||||
if ! command -v azcopy; then
|
||||
echo "azcopy was not installed"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
# Document what was added to the image
|
||||
echo "Lastly, documenting what we added to the metadata file"
|
||||
DocumentInstalledItem "AzCopy ($(azcopy --version))"
|
||||
26
images/linux/scripts/installers/azure-cli.sh
Normal file
26
images/linux/scripts/installers/azure-cli.sh
Normal file
@@ -0,0 +1,26 @@
|
||||
#!/bin/bash
|
||||
################################################################################
|
||||
## File: azure-cli.sh
|
||||
## Desc: Installed Azure CLI (az)
|
||||
################################################################################
|
||||
|
||||
# Source the helpers for use with the script
|
||||
source $HELPER_SCRIPTS/document.sh
|
||||
|
||||
LSB_CODENAME=$(lsb_release -cs)
|
||||
|
||||
# Install Azure CLI (instructions taken from https://docs.microsoft.com/en-us/cli/azure/install-azure-cli)
|
||||
echo "deb [arch=amd64] https://packages.microsoft.com/repos/azure-cli/ $LSB_CODENAME main" | tee /etc/apt/sources.list.d/azure-cli.list
|
||||
apt-key adv --keyserver packages.microsoft.com --recv-keys B02C46DF417A0893
|
||||
apt-get update
|
||||
apt-get install -y --no-install-recommends apt-transport-https azure-cli
|
||||
|
||||
# Run tests to determine that the software installed as expected
|
||||
echo "Testing to make sure that script performed as expected, and basic scenarios work"
|
||||
if ! command -v az; then
|
||||
echo "azure-cli was not installed"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
# Document what was added to the image
|
||||
DocumentInstalledItem "Azure CLI ($(az -v | head -n 1))"
|
||||
23
images/linux/scripts/installers/azure-devops-cli.sh
Normal file
23
images/linux/scripts/installers/azure-devops-cli.sh
Normal file
@@ -0,0 +1,23 @@
|
||||
#!/bin/bash
|
||||
################################################################################
|
||||
## File: azure-devops-cli.sh
|
||||
## Desc: Installed Azure DevOps CLI (az devops)
|
||||
################################################################################
|
||||
|
||||
# Source the helpers for use with the script
|
||||
source $HELPER_SCRIPTS/document.sh
|
||||
|
||||
# install azure devops Cli extension
|
||||
az extension add -n azure-devops
|
||||
|
||||
# check to determine if extension was installed or not
|
||||
if [ $? -eq 0 ]
|
||||
then
|
||||
echo "azure DevOps Cli extension was installed"
|
||||
else
|
||||
echo "azure DevOps Cli extension was not installed"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
# Document what was added to the image
|
||||
DocumentInstalledItem "Azure CLI ($(az -v | grep azure-devops))"
|
||||
31
images/linux/scripts/installers/boost.sh
Normal file
31
images/linux/scripts/installers/boost.sh
Normal file
@@ -0,0 +1,31 @@
|
||||
#!/bin/bash
|
||||
################################################################################
|
||||
## File: boost.sh
|
||||
## Desc: Installs Boost C++ Libraries
|
||||
################################################################################
|
||||
|
||||
# Source the helpers for use with the script
|
||||
source $HELPER_SCRIPTS/document.sh
|
||||
|
||||
BOOST_ZIP_PATH=/opt/hostedtoolcache/Boost
|
||||
BOOST_LIB=/usr/local/share/boost
|
||||
|
||||
# Install Boost
|
||||
for BOOST_VERSION in ${BOOST_VERSIONS//,/ }
|
||||
do
|
||||
BOOST_SYMLINK_VER=`echo "${BOOST_VERSION//[.]/_}"`
|
||||
BOOST_ROOT="BOOST_ROOT_$BOOST_SYMLINK_VER"
|
||||
BOOST_ZIP="boost_`echo $BOOST_VERSION`_gcc.zip"
|
||||
|
||||
unzip $BOOST_ZIP_PATH/$BOOST_ZIP -d $BOOST_LIB
|
||||
|
||||
echo "$BOOST_ROOT=$BOOST_LIB/$BOOST_VERSION" | tee -a /etc/environment
|
||||
if [[ $BOOST_VERSION == $BOOST_DEFAULT ]]; then
|
||||
echo "BOOST_ROOT=$BOOST_LIB/$BOOST_VERSION" | tee -a /etc/environment
|
||||
fi
|
||||
|
||||
DocumentInstalledItem "Boost C++ Libraries $BOOST_VERSION"
|
||||
done
|
||||
|
||||
# Deleting archives with Boost Libraries
|
||||
rm -rf $BOOST_ZIP_PATH
|
||||
24
images/linux/scripts/installers/build-essential.sh
Normal file
24
images/linux/scripts/installers/build-essential.sh
Normal file
@@ -0,0 +1,24 @@
|
||||
#!/bin/bash
|
||||
################################################################################
|
||||
## File: build-essential.sh
|
||||
## Desc: Installs build-essential package
|
||||
################################################################################
|
||||
|
||||
# Source the helpers for use with the script
|
||||
source $HELPER_SCRIPTS/document.sh
|
||||
source $HELPER_SCRIPTS/apt.sh
|
||||
|
||||
PACKAGE=build-essential
|
||||
|
||||
# Test to see if the software in question is already installed, if not install it
|
||||
echo "Checking to see if the installer script has already been run"
|
||||
if ! IsInstalled $PACKAGE; then
|
||||
echo "Installing $PACKAGE"
|
||||
apt-get install -y --no-install-recommends $PACKAGE
|
||||
else
|
||||
echo "$PACKAGE is already installed"
|
||||
fi
|
||||
|
||||
# Document what was added to the image
|
||||
echo "Lastly, documenting what we added to the metadata file"
|
||||
DocumentInstalledItem "$PACKAGE"
|
||||
31
images/linux/scripts/installers/clang.sh
Normal file
31
images/linux/scripts/installers/clang.sh
Normal file
@@ -0,0 +1,31 @@
|
||||
#!/bin/bash
|
||||
################################################################################
|
||||
## File: example.sh
|
||||
## Desc: This is an example script that can be copied to add a new software
|
||||
## installer to the image
|
||||
################################################################################
|
||||
|
||||
# Source the helpers for use with the script
|
||||
source $HELPER_SCRIPTS/document.sh
|
||||
source $HELPER_SCRIPTS/apt.sh
|
||||
|
||||
wget -O - https://apt.llvm.org/llvm-snapshot.gpg.key | apt-key add -
|
||||
apt-add-repository "deb http://apt.llvm.org/$(lsb_release -cs)/ llvm-toolchain-$(lsb_release -cs)-6.0 main"
|
||||
apt-get update
|
||||
apt-get install -y clang-6.0 lldb-6.0 lld-6.0
|
||||
|
||||
update-alternatives --install /usr/bin/clang++ clang++ /usr/bin/clang++-6.0 100
|
||||
update-alternatives --install /usr/bin/clang clang /usr/bin/clang-6.0 100
|
||||
|
||||
# Run tests to determine that the software installed as expected
|
||||
echo "Testing to make sure that script performed as expected, and basic scenarios work"
|
||||
for cmd in clang clang++ clang-6.0 clang++-6.0; do
|
||||
if ! command -v $cmd; then
|
||||
echo "$cmd was not installed"
|
||||
exit 1
|
||||
fi
|
||||
done
|
||||
|
||||
# Document what was added to the image
|
||||
echo "Lastly, documenting what we added to the metadata file"
|
||||
DocumentInstalledItem "Clang 6.0 ($(clang-6.0 --version | head -n 1))"
|
||||
30
images/linux/scripts/installers/cmake.sh
Normal file
30
images/linux/scripts/installers/cmake.sh
Normal file
@@ -0,0 +1,30 @@
|
||||
#!/bin/bash
|
||||
################################################################################
|
||||
## File: cmake.sh
|
||||
## Desc: Installs CMake
|
||||
################################################################################
|
||||
|
||||
# Source the helpers for use with the script
|
||||
source $HELPER_SCRIPTS/document.sh
|
||||
|
||||
# Test to see if the software in question is already installed, if not install it
|
||||
echo "Checking to see if the installer script has already been run"
|
||||
if command -v cmake; then
|
||||
echo "Example variable already set to $EXAMPLE_VAR"
|
||||
else
|
||||
curl -sL https://cmake.org/files/v3.12/cmake-3.12.4-Linux-x86_64.sh -o cmakeinstall.sh \
|
||||
&& chmod +x cmakeinstall.sh \
|
||||
&& ./cmakeinstall.sh --prefix=/usr/local --exclude-subdir \
|
||||
&& rm cmakeinstall.sh
|
||||
fi
|
||||
|
||||
# Run tests to determine that the software installed as expected
|
||||
echo "Testing to make sure that script performed as expected, and basic scenarios work"
|
||||
if ! command -v cmake; then
|
||||
echo "cmake was not installed"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
# Document what was added to the image
|
||||
echo "Lastly, documenting what we added to the metadata file"
|
||||
DocumentInstalledItem "CMake ($(cmake --version | head -n 1))"
|
||||
26
images/linux/scripts/installers/docker-compose.sh
Normal file
26
images/linux/scripts/installers/docker-compose.sh
Normal file
@@ -0,0 +1,26 @@
|
||||
#!/bin/bash
|
||||
################################################################################
|
||||
## File: docker-compose.sh
|
||||
## Desc: Installs Docker Compose
|
||||
################################################################################
|
||||
|
||||
source $HELPER_SCRIPTS/apt.sh
|
||||
source $HELPER_SCRIPTS/document.sh
|
||||
|
||||
version="1.22.0"
|
||||
|
||||
# Install latest docker-compose from releases
|
||||
curl -L "https://github.com/docker/compose/releases/download/$version/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose
|
||||
chmod +x /usr/local/bin/docker-compose
|
||||
|
||||
# Run tests to determine that the software installed as expected
|
||||
echo "Testing to make sure that script performed as expected, and basic scenarios work"
|
||||
if ! command -v docker-compose; then
|
||||
echo "docker-compose was not installed"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
## Add version information to the metadata file
|
||||
echo "Documenting Docker Compose version"
|
||||
docker_compose_version=$(docker-compose -v)
|
||||
DocumentInstalledItem "Docker Compose (${docker_compose_version})"
|
||||
43
images/linux/scripts/installers/docker-moby.sh
Normal file
43
images/linux/scripts/installers/docker-moby.sh
Normal file
@@ -0,0 +1,43 @@
|
||||
#!/bin/bash
|
||||
################################################################################
|
||||
## File: docker-ce.sh
|
||||
## Desc: Installs docker onto the image, but does not pre-pull any images
|
||||
################################################################################
|
||||
|
||||
source $HELPER_SCRIPTS/apt.sh
|
||||
source $HELPER_SCRIPTS/document.sh
|
||||
|
||||
docker_package=moby
|
||||
|
||||
## Check to see if docker is already installed
|
||||
echo "Determing if Docker ($docker_package) is installed"
|
||||
if ! IsInstalled $docker_package; then
|
||||
echo "Docker ($docker_package) was not found. Installing..."
|
||||
apt-get remove -y moby-engine moby-cli
|
||||
apt-get update
|
||||
apt-get install -y apt-transport-https ca-certificates curl software-properties-common
|
||||
curl https://packages.microsoft.com/keys/microsoft.asc | apt-key add -
|
||||
curl https://packages.microsoft.com/config/ubuntu/16.04/prod.list > /etc/apt/sources.list.d/microsoft-prod.list
|
||||
apt-get update
|
||||
apt-get install -y moby-engine moby-cli
|
||||
else
|
||||
echo "Docker ($docker_package) is already installed"
|
||||
fi
|
||||
|
||||
# Run tests to determine that the software installed as expected
|
||||
echo "Testing to make sure that script performed as expected, and basic scenarios work"
|
||||
if ! command -v docker; then
|
||||
echo "docker was not installed"
|
||||
exit 1
|
||||
else
|
||||
# Docker daemon takes time to come up after installing
|
||||
sleep 10
|
||||
set -e
|
||||
docker info
|
||||
set +e
|
||||
fi
|
||||
|
||||
## Add version information to the metadata file
|
||||
echo "Documenting Docker version"
|
||||
docker_version=$(docker -v)
|
||||
DocumentInstalledItem "Docker ($docker_version)"
|
||||
34
images/linux/scripts/installers/docker.sh
Normal file
34
images/linux/scripts/installers/docker.sh
Normal file
@@ -0,0 +1,34 @@
|
||||
#!/bin/bash
|
||||
################################################################################
|
||||
## File: docker.sh
|
||||
## Desc: Installs the correct version of docker onto the image, and pulls
|
||||
## down the default docker image used for building on ubuntu
|
||||
################################################################################
|
||||
|
||||
source $HELPER_SCRIPTS/apt.sh
|
||||
source $HELPER_SCRIPTS/document.sh
|
||||
|
||||
DOCKER_PACKAGE=moby
|
||||
|
||||
apt-get remove -y moby-engine mobi-cli
|
||||
apt-get update
|
||||
apt-get install -y apt-transport-https ca-certificates curl software-properties-common
|
||||
apt-get update
|
||||
apt-get install -y moby-engine mobi-cli
|
||||
|
||||
docker pull node:10
|
||||
docker pull node:12
|
||||
docker pull buildpack-deps:stretch
|
||||
docker pull node:10-alpine
|
||||
docker pull node:12-alpine
|
||||
docker pull debian:8
|
||||
docker pull debian:9
|
||||
docker pull alpine:3.7
|
||||
docker pull alpine:3.8
|
||||
docker pull alpine:3.9
|
||||
docker pull alpine:3.10
|
||||
|
||||
## Add version information to the metadata file
|
||||
echo "Documenting Docker version"
|
||||
DOCKER_VERSION=`docker -v`
|
||||
DocumentInstalledItem "Docker ($DOCKER_VERSION)"
|
||||
39
images/linux/scripts/installers/erlang.sh
Normal file
39
images/linux/scripts/installers/erlang.sh
Normal file
@@ -0,0 +1,39 @@
|
||||
#!/bin/bash
|
||||
################################################################################
|
||||
## File: erlang.sh
|
||||
## Desc: Installs erlang
|
||||
################################################################################
|
||||
|
||||
# Source the helpers for use with the script
|
||||
source $HELPER_SCRIPTS/document.sh
|
||||
source $HELPER_SCRIPTS/apt.sh
|
||||
|
||||
source_list=/etc/apt/sources.list.d/eslerlang.list
|
||||
|
||||
# Install Erlang
|
||||
echo "deb http://binaries.erlang-solutions.com/debian $(lsb_release -cs) contrib" > $source_list
|
||||
wget -O - http://binaries.erlang-solutions.com/debian/erlang_solutions.asc | apt-key add -
|
||||
apt-get update
|
||||
apt-get install -y --no-install-recommends esl-erlang
|
||||
|
||||
# Install rebar3
|
||||
wget -q -O rebar3 https://s3.amazonaws.com/rebar3/rebar3
|
||||
chmod +x rebar3
|
||||
mv rebar3 /usr/local/bin/rebar3
|
||||
|
||||
# Run tests to determine that the software installed as expected
|
||||
echo "Testing to make sure that script performed as expected, and basic scenarios work"
|
||||
for cmd in erl erlc rebar3; do
|
||||
if ! command -v $cmd; then
|
||||
echo "$cmd was not installed or not found on PATH"
|
||||
exit 1
|
||||
fi
|
||||
done
|
||||
|
||||
# Document what was added to the image
|
||||
echo "Lastly, documenting what we added to the metadata file"
|
||||
erlang_version="$(erl -version 2>&1 | tr -d '\n' | tr -d '\r')"
|
||||
DocumentInstalledItem "Erlang ($erlang_version)"
|
||||
|
||||
# Clean up source list
|
||||
rm $source_list
|
||||
31
images/linux/scripts/installers/example.sh
Normal file
31
images/linux/scripts/installers/example.sh
Normal file
@@ -0,0 +1,31 @@
|
||||
#!/bin/bash
|
||||
################################################################################
|
||||
## File: example.sh
|
||||
## Desc: This is an example script that can be copied to add a new software
|
||||
## installer to the image
|
||||
################################################################################
|
||||
|
||||
# Source the helpers for use with the script
|
||||
source $HELPER_SCRIPTS/document.sh
|
||||
source $HELPER_SCRIPTS/apt.sh
|
||||
|
||||
# Test to see if the software in question is already installed, if not install it
|
||||
echo "Checking to see if the installer script has already been run"
|
||||
if [ -z $EXAMPLE_VAR ]; then
|
||||
$EXAMPLE_VAR=1.0.0
|
||||
else
|
||||
echo "Example variable already set to $EXAMPLE_VAR"
|
||||
fi
|
||||
|
||||
# Run tests to determine that the software installed as expected
|
||||
echo "Testing to make sure that script performed as expected, and basic scenarios work"
|
||||
if [ -z $EXAMPLE_VAR ]; then
|
||||
echo "EXAMPLE_VAR variable was not set as expected"
|
||||
exit 1
|
||||
else
|
||||
echo "EXAMPLE_VAR was set properly"
|
||||
fi
|
||||
|
||||
# Document what was added to the image
|
||||
echo "Lastly, documenting what we added to the metadata file"
|
||||
DocumentInstalledItem "Example Var ($EXAMPLE_VAR)"
|
||||
25
images/linux/scripts/installers/firefox.sh
Normal file
25
images/linux/scripts/installers/firefox.sh
Normal file
@@ -0,0 +1,25 @@
|
||||
#!/bin/bash
|
||||
################################################################################
|
||||
## File: firefox.sh
|
||||
## Desc: Installs Firefox
|
||||
################################################################################
|
||||
|
||||
# Source the helpers for use with the script
|
||||
source $HELPER_SCRIPTS/document.sh
|
||||
source $HELPER_SCRIPTS/apt.sh
|
||||
|
||||
# Install Firefox
|
||||
apt-get install -y firefox
|
||||
|
||||
# Run tests to determine that the software installed as expected
|
||||
echo "Testing to make sure that script performed as expected, and basic scenarios work"
|
||||
if ! command -v firefox; then
|
||||
exit 1
|
||||
fi
|
||||
|
||||
# Document what was added to the image
|
||||
echo "Lastly, documenting what we added to the metadata file"
|
||||
# Resolves: Running Firefox as root in a regular user's session is not supported.
|
||||
# ($HOME is /home/packer which is owned by packer.)
|
||||
HOME=/root
|
||||
DocumentInstalledItem "Firefox ($(firefox --version))"
|
||||
25
images/linux/scripts/installers/gcc.sh
Normal file
25
images/linux/scripts/installers/gcc.sh
Normal file
@@ -0,0 +1,25 @@
|
||||
#!/bin/bash
|
||||
################################################################################
|
||||
## File: gcc.sh
|
||||
## Desc: Installs GNU C++
|
||||
################################################################################
|
||||
|
||||
# Source the helpers for use with the script
|
||||
source $HELPER_SCRIPTS/document.sh
|
||||
|
||||
# Install GNU C++ compiler
|
||||
add-apt-repository ppa:ubuntu-toolchain-r/test -y
|
||||
apt-get update -y
|
||||
apt-get install g++-7 -y
|
||||
|
||||
|
||||
# Run tests to determine that the software installed as expected
|
||||
echo "Testing to make sure that script performed as expected, and basic scenarios work"
|
||||
if ! command -v g++-7; then
|
||||
echo "GNU C++ was not installed"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
# Document what was added to the image
|
||||
echo "Lastly, documenting what we added to the metadata file"
|
||||
DocumentInstalledItem "GNU C++ $(g++-7 --version | head -n 1 | cut -d ' ' -f 4)"
|
||||
37
images/linux/scripts/installers/git.sh
Normal file
37
images/linux/scripts/installers/git.sh
Normal file
@@ -0,0 +1,37 @@
|
||||
#!/bin/bash
|
||||
################################################################################
|
||||
## File: git.sh
|
||||
## Desc: Installs Git
|
||||
################################################################################
|
||||
|
||||
# Source the helpers for use with the script
|
||||
source $HELPER_SCRIPTS/document.sh
|
||||
|
||||
## Install git
|
||||
add-apt-repository ppa:git-core/ppa -y
|
||||
apt-get update
|
||||
apt-get install git -y
|
||||
git --version
|
||||
|
||||
# Install git-lfs
|
||||
curl -s https://packagecloud.io/install/repositories/github/git-lfs/script.deb.sh | bash
|
||||
apt-get install -y --no-install-recommends git-lfs
|
||||
|
||||
# Run tests to determine that the software installed as expected
|
||||
echo "Testing git installation"
|
||||
if ! command -v git; then
|
||||
echo "git was not installed"
|
||||
exit 1
|
||||
fi
|
||||
echo "Testing git-lfs installation"
|
||||
if ! command -v git-lfs; then
|
||||
echo "git-lfs was not installed"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
# Document what was added to the image
|
||||
echo "Lastly, document the installed versions"
|
||||
# git version 2.20.1
|
||||
DocumentInstalledItem "Git ($(git --version 2>&1 | cut -d ' ' -f 3))"
|
||||
# git-lfs/2.6.1 (GitHub; linux amd64; go 1.11.1)
|
||||
DocumentInstalledItem "Git Large File Storage (LFS) ($(git-lfs --version 2>&1 | cut -d ' ' -f 1 | cut -d '/' -f 2))"
|
||||
27
images/linux/scripts/installers/google-chrome.sh
Normal file
27
images/linux/scripts/installers/google-chrome.sh
Normal file
@@ -0,0 +1,27 @@
|
||||
#!/bin/bash
|
||||
################################################################################
|
||||
## File: google-chrome.sh
|
||||
## Desc: Installs google-chrome
|
||||
################################################################################
|
||||
|
||||
# Source the helpers for use with the script
|
||||
source $HELPER_SCRIPTS/document.sh
|
||||
|
||||
LSB_RELEASE=$(lsb_release -rs)
|
||||
|
||||
wget -q -O - https://dl-ssl.google.com/linux/linux_signing_key.pub | sudo apt-key add -
|
||||
echo "deb [arch=amd64] http://dl.google.com/linux/chrome/deb/ stable main" | sudo tee /etc/apt/sources.list.d/google-chrome.list
|
||||
apt-get update
|
||||
apt-get install -y google-chrome-stable
|
||||
echo "CHROME_BIN=/usr/bin/google-chrome" | tee -a /etc/environment
|
||||
|
||||
# Run tests to determine that the software installed as expected
|
||||
echo "Testing to make sure that script performed as expected, and basic scenarios work"
|
||||
if ! command -v google-chrome; then
|
||||
echo "google-chrome was not installed"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
# Document what was added to the image
|
||||
echo "Lastly, documenting what we added to the metadata file"
|
||||
DocumentInstalledItem "Google Chrome ($(google-chrome --version))"
|
||||
25
images/linux/scripts/installers/google-cloud-sdk.sh
Normal file
25
images/linux/scripts/installers/google-cloud-sdk.sh
Normal file
@@ -0,0 +1,25 @@
|
||||
#!/bin/bash
|
||||
################################################################################
|
||||
## File: google-cloud-sdk.sh
|
||||
## Desc: Installs the Google Cloud SDK
|
||||
################################################################################
|
||||
|
||||
# Source the helpers
|
||||
source $HELPER_SCRIPTS/document.sh
|
||||
|
||||
# Install the Google Cloud SDK
|
||||
echo "deb [signed-by=/usr/share/keyrings/cloud.google.gpg] http://packages.cloud.google.com/apt cloud-sdk main" | sudo tee -a /etc/apt/sources.list.d/google-cloud-sdk.list
|
||||
curl https://packages.cloud.google.com/apt/doc/apt-key.gpg | sudo apt-key --keyring /usr/share/keyrings/cloud.google.gpg add -
|
||||
sudo apt-get update -y
|
||||
sudo apt-get install -y google-cloud-sdk
|
||||
|
||||
# Validate the installation
|
||||
echo "Validate the installation"
|
||||
if ! command -v gcloud; then
|
||||
echo "gcloud was not installed"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
# Document the installed version
|
||||
echo "Document the installed version"
|
||||
DocumentInstalledItem "Google Cloud SDK ($(gcloud --version | head -n 1 | cut -d ' ' -f 4))"
|
||||
64
images/linux/scripts/installers/haskell.sh
Normal file
64
images/linux/scripts/installers/haskell.sh
Normal file
@@ -0,0 +1,64 @@
|
||||
#!/bin/bash
|
||||
################################################################################
|
||||
## File: haskell.sh
|
||||
## Desc: Installs Haskell
|
||||
################################################################################
|
||||
|
||||
# Source the helpers for use with the script
|
||||
source $HELPER_SCRIPTS/document.sh
|
||||
source $HELPER_SCRIPTS/apt.sh
|
||||
|
||||
# Install Herbert V. Riedel's PPA for managing multiple version of ghc on ubuntu.
|
||||
# https://launchpad.net/~hvr/+archive/ubuntu/ghc
|
||||
apt-get install -y software-properties-common
|
||||
add-apt-repository -y ppa:hvr/ghc
|
||||
apt-get update
|
||||
|
||||
# Install various versions of ghc and cabal
|
||||
apt-get install -y \
|
||||
ghc-8.0.2 \
|
||||
ghc-8.2.2 \
|
||||
ghc-8.4.4 \
|
||||
ghc-8.6.2 \
|
||||
ghc-8.6.3 \
|
||||
ghc-8.6.4 \
|
||||
ghc-8.6.5 \
|
||||
ghc-8.8.1 \
|
||||
cabal-install-2.0 \
|
||||
cabal-install-2.2 \
|
||||
cabal-install-2.4 \
|
||||
cabal-install-3.0
|
||||
|
||||
# Install haskell stack, pinned to v2.1.3
|
||||
curl -sSL https://raw.githubusercontent.com/commercialhaskell/stack/v2.1.3/etc/scripts/get-stack.sh | sh
|
||||
|
||||
# Run tests to determine that the software installed as expected
|
||||
echo "Testing to make sure that script performed as expected, and basic scenarios work"
|
||||
# Check all ghc versions
|
||||
for version in 8.0.2 8.2.2 8.4.4 8.6.2 8.6.3 8.6.4 8.6.5 8.8.1; do
|
||||
if ! command -v /opt/ghc/$version/bin/ghc; then
|
||||
echo "ghc $version was not installed"
|
||||
exit 1
|
||||
fi
|
||||
done
|
||||
# Check all cabal versions
|
||||
for version in 2.0 2.2 2.4 3.0; do
|
||||
if ! command -v /opt/cabal/$version/bin/cabal; then
|
||||
echo "cabal $version was not installed"
|
||||
exit 1
|
||||
fi
|
||||
done
|
||||
# Check stack
|
||||
if ! command -v stack; then
|
||||
exit 1
|
||||
fi
|
||||
|
||||
# Document what was added to the image
|
||||
echo "Lastly, documenting what we added to the metadata file"
|
||||
for version in 2.0 2.2 2.4 3.0; do
|
||||
DocumentInstalledItem "Haskell Cabal ($(/opt/cabal/$version/bin/cabal --version))"
|
||||
done
|
||||
for version in 8.0.2 8.2.2 8.4.4 8.6.2 8.6.3 8.6.4 8.6.5 8.8.1; do
|
||||
DocumentInstalledItem "GHC ($(/opt/ghc/$version/bin/ghc --version))"
|
||||
done
|
||||
DocumentInstalledItem "Haskell Stack ($(stack --version))"
|
||||
22
images/linux/scripts/installers/heroku.sh
Normal file
22
images/linux/scripts/installers/heroku.sh
Normal file
@@ -0,0 +1,22 @@
|
||||
#!/bin/bash
|
||||
################################################################################
|
||||
## File: heroku.sh
|
||||
## Desc: Installs Heroku CLI
|
||||
################################################################################
|
||||
|
||||
# Source the helpers for use with the script
|
||||
source $HELPER_SCRIPTS/document.sh
|
||||
source $HELPER_SCRIPTS/apt.sh
|
||||
|
||||
# Install Heroku CLI
|
||||
curl https://cli-assets.heroku.com/install-ubuntu.sh | sh
|
||||
|
||||
# Run tests to determine that the software installed as expected
|
||||
echo "Testing to make sure that script performed as expected, and basic scenarios work"
|
||||
if ! command -v heroku; then
|
||||
exit 1
|
||||
fi
|
||||
|
||||
# Document what was added to the image
|
||||
echo "Lastly, documenting what we added to the metadata file"
|
||||
DocumentInstalledItem "Heroku ($(heroku version))"
|
||||
37
images/linux/scripts/installers/hhvm.sh
Normal file
37
images/linux/scripts/installers/hhvm.sh
Normal file
@@ -0,0 +1,37 @@
|
||||
#!/bin/bash
|
||||
################################################################################
|
||||
## File: hhvm.sh
|
||||
## Desc: Installs hhvm
|
||||
################################################################################
|
||||
|
||||
# Source the helpers for use with the script
|
||||
source $HELPER_SCRIPTS/document.sh
|
||||
source $HELPER_SCRIPTS/apt.sh
|
||||
|
||||
hhvm_package=hhvm
|
||||
|
||||
# Test to see if the software in question is already installed, if not install it
|
||||
echo "Checking to see if the installer script has already been run"
|
||||
if ! IsInstalled ${hhvm_package}; then
|
||||
apt-key adv --recv-keys --keyserver hkp://keyserver.ubuntu.com:80 0xB4112585D386EB94
|
||||
add-apt-repository https://dl.hhvm.com/ubuntu
|
||||
apt-get update
|
||||
apt-get -qq install -y hhvm
|
||||
else
|
||||
echo "${hhvm_package} already installed"
|
||||
fi
|
||||
|
||||
# Run tests to determine that the software installed as expected
|
||||
echo "Testing to make sure that script performed as expected, and basic scenarios work"
|
||||
if ! IsInstalled ${hhvm_package}; then
|
||||
echo "${hhvm_package} was not installed"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
if ! command -v hhvm; then
|
||||
exit 1
|
||||
fi
|
||||
|
||||
# Document what was added to the image
|
||||
echo "Lastly, documenting what we added to the metadata file"
|
||||
DocumentInstalledItem "HHVM ($(hhvm --version | head -n 1))"
|
||||
20
images/linux/scripts/installers/image-magick.sh
Normal file
20
images/linux/scripts/installers/image-magick.sh
Normal file
@@ -0,0 +1,20 @@
|
||||
#!/bin/bash
|
||||
################################################################################
|
||||
## File: image-magick.sh
|
||||
## Desc: Installs ImageMagick
|
||||
################################################################################
|
||||
|
||||
# Source the helpers for use with the script
|
||||
source $HELPER_SCRIPTS/document.sh
|
||||
source $HELPER_SCRIPTS/apt.sh
|
||||
|
||||
# Install ImageMagick
|
||||
apt-get install -y --no-install-recommends --fix-missing \
|
||||
imagemagick \
|
||||
libmagickcore-dev \
|
||||
libmagickwand-dev \
|
||||
libmagic-dev
|
||||
|
||||
# Document what was added to the image
|
||||
echo "Lastly, documenting what we added to the metadata file"
|
||||
DocumentInstalledItem "ImageMagick"
|
||||
78
images/linux/scripts/installers/java-tools.sh
Normal file
78
images/linux/scripts/installers/java-tools.sh
Normal file
@@ -0,0 +1,78 @@
|
||||
#!/bin/bash
|
||||
################################################################################
|
||||
## File: java-tools.sh
|
||||
## Team: CI-Platform
|
||||
## Desc: Installs Java and related tooling (Ant, Gradle, Maven)
|
||||
################################################################################
|
||||
|
||||
# Source the helpers for use with the script
|
||||
source $HELPER_SCRIPTS/document.sh
|
||||
|
||||
DEFAULT_JDK_VERSION=8
|
||||
|
||||
set -e
|
||||
|
||||
# Install the Azul Systems Zulu JDKs
|
||||
# See https://www.azul.com/downloads/azure-only/zulu/
|
||||
apt-key adv --keyserver hkp://keyserver.ubuntu.com:80 --recv-keys 0xB1998361219BD9C9
|
||||
apt-add-repository "deb http://repos.azul.com/azure-only/zulu/apt stable main"
|
||||
apt-get -q update
|
||||
apt-get -y install zulu-7-azure-jdk=\*
|
||||
apt-get -y install zulu-8-azure-jdk=\*
|
||||
apt-get -y install zulu-11-azure-jdk=\*
|
||||
apt-get -y install zulu-12-azure-jdk=\*
|
||||
update-java-alternatives -s /usr/lib/jvm/zulu-8-azure-amd64
|
||||
echo "JAVA_HOME_7_X64=/usr/lib/jvm/zulu-7-azure-amd64" | tee -a /etc/environment
|
||||
echo "JAVA_HOME_8_X64=/usr/lib/jvm/zulu-8-azure-amd64" | tee -a /etc/environment
|
||||
echo "JAVA_HOME_11_X64=/usr/lib/jvm/zulu-11-azure-amd64" | tee -a /etc/environment
|
||||
echo "JAVA_HOME_12_X64=/usr/lib/jvm/zulu-12-azure-amd64" | tee -a /etc/environment
|
||||
echo "JAVA_HOME=/usr/lib/jvm/zulu-${DEFAULT_JDK_VERSION}-azure-amd64" | tee -a /etc/environment
|
||||
echo "JAVA_TOOL_OPTIONS=-Dfile.encoding=UTF8" | tee -a /etc/environment
|
||||
|
||||
# Install Ant
|
||||
apt-fast install -y --no-install-recommends ant ant-optional
|
||||
echo "ANT_HOME=/usr/share/ant" | tee -a /etc/environment
|
||||
|
||||
# Install Maven
|
||||
curl -sL https://www-eu.apache.org/dist/maven/maven-3/3.6.2/binaries/apache-maven-3.6.2-bin.zip -o maven.zip
|
||||
unzip -d /usr/share maven.zip
|
||||
rm maven.zip
|
||||
ln -s /usr/share/apache-maven-3.6.2/bin/mvn /usr/bin/mvn
|
||||
echo "M2_HOME=/usr/share/apache-maven-3.6.2" | tee -a /etc/environment
|
||||
|
||||
# Install Gradle
|
||||
# This script downloads the latest HTML list of releases at https://gradle.org/releases/.
|
||||
# Then, it extracts the top-most release download URL, relying on the top-most URL being for the latest release.
|
||||
# The release download URL looks like this: https://services.gradle.org/distributions/gradle-5.2.1-bin.zip
|
||||
# The release version is extracted from the download URL (i.e. 5.2.1).
|
||||
# After all of this, the release is downloaded, extracted, a symlink is created that points to it, and GRADLE_HOME is set.
|
||||
wget -O gradleReleases.html https://gradle.org/releases/
|
||||
gradleUrl=$(grep -m 1 -o "https:\/\/services.gradle.org\/distributions\/gradle-.*-bin\.zip" gradleReleases.html | head -1)
|
||||
gradleVersion=$(echo $gradleUrl | sed -nre 's/^[^0-9]*(([0-9]+\.)*[0-9]+).*/\1/p')
|
||||
rm gradleReleases.html
|
||||
echo "gradleUrl=$gradleUrl"
|
||||
echo "gradleVersion=$gradleVersion"
|
||||
curl -sL $gradleUrl -o gradleLatest.zip
|
||||
unzip -d /usr/share gradleLatest.zip
|
||||
rm gradleLatest.zip
|
||||
ln -s /usr/share/gradle-"${gradleVersion}"/bin/gradle /usr/bin/gradle
|
||||
echo "GRADLE_HOME=/usr/share/gradle" | tee -a /etc/environment
|
||||
|
||||
# Run tests to determine that the software installed as expected
|
||||
echo "Testing to make sure that script performed as expected, and basic scenarios work"
|
||||
for cmd in gradle java javac mvn ant; do
|
||||
if ! command -v $cmd; then
|
||||
echo "$cmd was not installed or found on path"
|
||||
exit 1
|
||||
fi
|
||||
done
|
||||
|
||||
# Document what was added to the image
|
||||
echo "Lastly, documenting what we added to the metadata file"
|
||||
DocumentInstalledItem "Azul Zulu OpenJDK (7) ($(/usr/lib/jvm/zulu-7-azure-amd64/bin/java -showversion |& head -n 1))"
|
||||
DocumentInstalledItem "Azul Zulu OpenJDK (8) ($(/usr/lib/jvm/zulu-8-azure-amd64/bin/java -showversion |& head -n 1))"
|
||||
DocumentInstalledItem "Azul Zulu OpenJDK (11) ($(/usr/lib/jvm/zulu-11-azure-amd64/bin/java -showversion |& head -n 1))"
|
||||
DocumentInstalledItem "Azul Zulu OpenJDK (12) ($(/usr/lib/jvm/zulu-12-azure-amd64/bin/java -showversion |& head -n 1))"
|
||||
DocumentInstalledItem "Ant ($(ant -version))"
|
||||
DocumentInstalledItem "Gradle ${gradleVersion}"
|
||||
DocumentInstalledItem "Maven ($(mvn -version | head -n 1))"
|
||||
26
images/linux/scripts/installers/kind.sh
Normal file
26
images/linux/scripts/installers/kind.sh
Normal file
@@ -0,0 +1,26 @@
|
||||
#!/bin/bash
|
||||
################################################################################
|
||||
## File: kind.sh
|
||||
## Desc: Installs kind
|
||||
################################################################################
|
||||
|
||||
# Source the helpers for use with the script
|
||||
source $HELPER_SCRIPTS/document.sh
|
||||
source $HELPER_SCRIPTS/apt.sh
|
||||
|
||||
# Install KIND
|
||||
KIND_VERSION="v0.5.1"
|
||||
|
||||
curl -L -o /usr/local/bin/kind "https://github.com/kubernetes-sigs/kind/releases/download/${KIND_VERSION}/kind-linux-amd64"
|
||||
chmod +x /usr/local/bin/kind
|
||||
|
||||
# Run tests to determine that the software installed as expected
|
||||
echo "Testing to make sure that script performed as expected, and basic scenarios work"
|
||||
if ! command -v kind; then
|
||||
echo "Kind was not installed or found on PATH"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
# Document what was added to the image
|
||||
echo "Lastly, documenting what we added to the metadata file"
|
||||
DocumentInstalledItem "Kind ($(kind version))"
|
||||
35
images/linux/scripts/installers/leiningen.sh
Normal file
35
images/linux/scripts/installers/leiningen.sh
Normal file
@@ -0,0 +1,35 @@
|
||||
#!/bin/bash
|
||||
################################################################################
|
||||
## File: leiningen.sh
|
||||
## Desc: Installs Leiningen
|
||||
################################################################################
|
||||
|
||||
# Source the helpers for use with the script
|
||||
source $HELPER_SCRIPTS/document.sh
|
||||
|
||||
set -e
|
||||
|
||||
LEIN_BIN=/usr/local/bin/lein
|
||||
curl -s https://raw.githubusercontent.com/technomancy/leiningen/stable/bin/lein > $LEIN_BIN
|
||||
chmod 0755 $LEIN_BIN
|
||||
|
||||
# Run lein to trigger self-install
|
||||
export LEIN_HOME=/usr/local/lib/lein
|
||||
lein
|
||||
|
||||
LEIN_JAR=$(find $LEIN_HOME -name "leiningen-*-standalone.jar")
|
||||
echo "LEIN_JAR=$LEIN_JAR" | tee -a /etc/environment
|
||||
echo "LEIN_HOME=$LEIN_HOME" | tee -a /etc/environment
|
||||
|
||||
# Run tests to determine that the software installed as expected
|
||||
echo "Testing to make sure that script performed as expected, and basic scenarios work"
|
||||
if ! command -v lein; then
|
||||
echo "lein was not installed"
|
||||
exit 1
|
||||
else
|
||||
lein new app testapp && rm -rf testapp
|
||||
fi
|
||||
|
||||
# Document what was added to the image
|
||||
echo "Lastly, documenting what we added to the metadata file"
|
||||
DocumentInstalledItem "Leiningen ($(lein -v))"
|
||||
23
images/linux/scripts/installers/miniconda.sh
Normal file
23
images/linux/scripts/installers/miniconda.sh
Normal file
@@ -0,0 +1,23 @@
|
||||
#!/bin/bash
|
||||
################################################################################
|
||||
## File: miniconda.sh
|
||||
## Desc: Installs miniconda
|
||||
################################################################################
|
||||
|
||||
# Source the helpers for use with the script
|
||||
source $HELPER_SCRIPTS/document.sh
|
||||
|
||||
# Install Miniconda
|
||||
curl -sL https://repo.continuum.io/miniconda/Miniconda3-latest-Linux-x86_64.sh -o miniconda.sh \
|
||||
&& chmod +x miniconda.sh \
|
||||
&& ./miniconda.sh -b -p /usr/share/miniconda \
|
||||
&& rm miniconda.sh
|
||||
|
||||
CONDA=/usr/share/miniconda
|
||||
echo "CONDA=$CONDA" | tee -a /etc/environment
|
||||
|
||||
ln -s $CONDA/bin/conda /usr/bin/conda
|
||||
|
||||
# Document what was added to the image
|
||||
echo "Lastly, documenting what we added to the metadata file"
|
||||
DocumentInstalledItem "Miniconda ($($CONDA/bin/conda --version))"
|
||||
29
images/linux/scripts/installers/mono.sh
Normal file
29
images/linux/scripts/installers/mono.sh
Normal file
@@ -0,0 +1,29 @@
|
||||
#!/bin/bash
|
||||
################################################################################
|
||||
## File: cmake.sh
|
||||
## Desc: Installs Mono
|
||||
################################################################################
|
||||
|
||||
# Source the helpers for use with the script
|
||||
source $HELPER_SCRIPTS/document.sh
|
||||
|
||||
LSB_CODENAME=$(lsb_release -cs)
|
||||
|
||||
# Test to see if the software in question is already installed, if not install it
|
||||
# wget "http://keyserver.ubuntu.com/pks/lookup?op=get&search=0x3FA7E0328081BFF6A14DA29AA6A19B38D3D831EF" -O out && sudo apt-key add out && rm out
|
||||
|
||||
apt-key adv --keyserver hkp://keyserver.ubuntu.com:80 --recv-keys 3FA7E0328081BFF6A14DA29AA6A19B38D3D831EF
|
||||
echo "deb https://download.mono-project.com/repo/ubuntu stable-$LSB_CODENAME main" | tee /etc/apt/sources.list.d/mono-official-stable.list
|
||||
apt-get update
|
||||
apt-get install -y --no-install-recommends apt-transport-https mono-complete
|
||||
|
||||
# Run tests to determine that the software installed as expected
|
||||
echo "Testing to make sure that script performed as expected, and basic scenarios work"
|
||||
if ! command -v mono; then
|
||||
echo "mono was not installed"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
# Document what was added to the image
|
||||
echo "Lastly, documenting what we added to the metadata file"
|
||||
DocumentInstalledItem "Mono ($(mono --version | head -n 1))"
|
||||
43
images/linux/scripts/installers/mysql.sh
Normal file
43
images/linux/scripts/installers/mysql.sh
Normal file
@@ -0,0 +1,43 @@
|
||||
#!/bin/bash
|
||||
################################################################################
|
||||
## File: mysql.sh
|
||||
## Desc: Installs MySQL Client
|
||||
################################################################################
|
||||
|
||||
## Source the helpers for use with the script
|
||||
source $HELPER_SCRIPTS/document.sh
|
||||
|
||||
export ACCEPT_EULA=Y
|
||||
|
||||
# Install MySQL Client
|
||||
apt-get install mysql-client -y
|
||||
|
||||
# Install MySQL Server
|
||||
MYSQL_ROOT_PASSWORD=root
|
||||
echo "mysql-server mysql-server/root_password password $MYSQL_ROOT_PASSWORD" | debconf-set-selections
|
||||
echo "mysql-server mysql-server/root_password_again password $MYSQL_ROOT_PASSWORD" | debconf-set-selections
|
||||
|
||||
apt-get install -y mysql-server
|
||||
|
||||
# Install MS SQL Server client tools (https://docs.microsoft.com/en-us/sql/linux/sql-server-linux-setup-tools?view=sql-server-2017)
|
||||
apt-get install -y mssql-tools unixodbc-dev
|
||||
apt-get -f install
|
||||
ln -s /opt/mssql-tools/bin/* /usr/local/bin/
|
||||
|
||||
# Run tests to determine that the software installed as expected
|
||||
echo "Testing to make sure that script performed as expected, and basic scenarios work"
|
||||
if ! command -v mysql; then
|
||||
echo "mysql was not installed"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
set -e
|
||||
mysql -vvv -e 'CREATE DATABASE smoke_test' -uroot -proot
|
||||
mysql -vvv -e 'DROP DATABASE smoke_test' -uroot -proot
|
||||
set +e
|
||||
|
||||
# Document what was added to the image
|
||||
echo "Lastly, documenting what we added to the metadata file"
|
||||
DocumentInstalledItem "MySQL ($(mysql --version))"
|
||||
DocumentInstalledItem "MySQL Server (user:root password:root)"
|
||||
DocumentInstalledItem "MS SQL Server Client Tools"
|
||||
47
images/linux/scripts/installers/nodejs.sh
Normal file
47
images/linux/scripts/installers/nodejs.sh
Normal file
@@ -0,0 +1,47 @@
|
||||
#!/bin/bash
|
||||
################################################################################
|
||||
## File: nodejs.sh
|
||||
## Team: CI-Platform
|
||||
## Desc: Installs Node.js LTS and related tooling (Gulp, Bower, Grunt)
|
||||
################################################################################
|
||||
|
||||
# Source the helpers for use with the script
|
||||
source $HELPER_SCRIPTS/document.sh
|
||||
|
||||
# Install LTS Node.js and related build tools
|
||||
curl -sL https://git.io/n-install | bash -s -- -ny -
|
||||
~/n/bin/n lts
|
||||
npm install -g bower grunt gulp n parcel-bundler typescript
|
||||
npm install -g --save-dev webpack webpack-cli
|
||||
npm install -g npm
|
||||
rm -rf ~/n
|
||||
|
||||
# Install Yarn repository and key
|
||||
curl -sS https://dl.yarnpkg.com/debian/pubkey.gpg | apt-key add -
|
||||
echo "deb https://dl.yarnpkg.com/debian/ stable main" | tee /etc/apt/sources.list.d/yarn.list
|
||||
apt-get update
|
||||
|
||||
# Install yarn
|
||||
apt-get install -y --no-install-recommends yarn
|
||||
|
||||
# Run tests to determine that the software installed as expected
|
||||
echo "Testing to make sure that script performed as expected, and basic scenarios work"
|
||||
for cmd in node bower grunt gulp webpack parcel yarn; do
|
||||
if ! command -v $cmd; then
|
||||
echo "$cmd was not installed"
|
||||
exit 1
|
||||
fi
|
||||
done
|
||||
|
||||
# Document what was added to the image
|
||||
echo "Lastly, documenting what we added to the metadata file"
|
||||
DocumentInstalledItem "Node.js ($(node --version))"
|
||||
DocumentInstalledItem "Bower ($(bower --version))"
|
||||
DocumentInstalledItem "Grunt ($(grunt --version))"
|
||||
DocumentInstalledItem "Gulp ($(gulp --version))"
|
||||
DocumentInstalledItem "n ($(n --version))"
|
||||
DocumentInstalledItem "Parcel ($(parcel --version))"
|
||||
DocumentInstalledItem "TypeScript ($(tsc --version))"
|
||||
DocumentInstalledItem "Webpack ($(webpack --version))"
|
||||
DocumentInstalledItem "Webpack CLI ($(webpack-cli --version))"
|
||||
DocumentInstalledItem "Yarn ($(yarn --version))"
|
||||
29
images/linux/scripts/installers/phantomjs.sh
Normal file
29
images/linux/scripts/installers/phantomjs.sh
Normal file
@@ -0,0 +1,29 @@
|
||||
#!/bin/bash
|
||||
################################################################################
|
||||
## File: phantomjs.sh
|
||||
## Desc: Installs PhantomJS
|
||||
################################################################################
|
||||
|
||||
set -e
|
||||
|
||||
# Source the helpers for use with the script
|
||||
source $HELPER_SCRIPTS/document.sh
|
||||
|
||||
# Install PhantomJS
|
||||
apt-get install -y chrpath libssl-dev libxft-dev libfreetype6 libfreetype6-dev libfontconfig1 libfontconfig1-dev
|
||||
PHANTOM_JS=phantomjs-2.1.1-linux-x86_64
|
||||
wget https://bitbucket.org/ariya/phantomjs/downloads/$PHANTOM_JS.tar.bz2
|
||||
tar xvjf $PHANTOM_JS.tar.bz2
|
||||
mv $PHANTOM_JS /usr/local/share
|
||||
ln -sf /usr/local/share/$PHANTOM_JS/bin/phantomjs /usr/local/bin
|
||||
|
||||
# Run tests to determine that the software installed as expected
|
||||
echo "Testing to make sure that script performed as expected, and basic scenarios work"
|
||||
if ! command -v phantomjs; then
|
||||
echo "phantomjs was not installed"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
# Document what was added to the image
|
||||
echo "Lastly, documenting what we added to the metadata file"
|
||||
DocumentInstalledItem "PhantomJS ($(phantomjs --version))"
|
||||
22
images/linux/scripts/installers/pollinate.sh
Normal file
22
images/linux/scripts/installers/pollinate.sh
Normal file
@@ -0,0 +1,22 @@
|
||||
#!/bin/bash
|
||||
################################################################################
|
||||
## File: pollinate.sh
|
||||
## Desc: Installs Pollinate
|
||||
################################################################################
|
||||
|
||||
# Source the helpers for use with the script
|
||||
source $HELPER_SCRIPTS/document.sh
|
||||
|
||||
# Install Pollinate
|
||||
apt-get install -y --no-install-recommends pollinate
|
||||
|
||||
# Run tests to determine that the software installed as expected
|
||||
echo "Testing to make sure that script performed as expected, and basic scenarios work"
|
||||
if ! command -v pollinate; then
|
||||
echo "pollinate was not installed"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
# Document what was added to the image
|
||||
echo "Lastly, documenting what we added to the metadata file"
|
||||
DocumentInstalledItem "Pollinate"
|
||||
67
images/linux/scripts/installers/python.sh
Normal file
67
images/linux/scripts/installers/python.sh
Normal file
@@ -0,0 +1,67 @@
|
||||
#!/bin/bash
|
||||
################################################################################
|
||||
## File: python.sh
|
||||
## Desc: Installs Python 2/3 and related tools (pip, pypy)
|
||||
################################################################################
|
||||
|
||||
# Source the helpers for use with the script
|
||||
source $HELPER_SCRIPTS/document.sh
|
||||
|
||||
# Install Python, Python 3, pip, pip3
|
||||
apt-get install -y --no-install-recommends python python-dev python-pip python3 python3-dev python3-pip
|
||||
|
||||
# Install PyPy 2.7 to $AGENT_TOOLSDIRECTORY
|
||||
wget -q -P /tmp https://bitbucket.org/pypy/pypy/downloads/pypy2.7-v7.1.0-linux64.tar.bz2
|
||||
tar -x -C /tmp -f /tmp/pypy2.7-v7.1.0-linux64.tar.bz2
|
||||
rm /tmp/pypy2.7-v7.1.0-linux64.tar.bz2
|
||||
mkdir -p $AGENT_TOOLSDIRECTORY/PyPy/2.7.13
|
||||
mv /tmp/pypy2.7-v7.1.0-linux64 $AGENT_TOOLSDIRECTORY/PyPy/2.7.13/x64
|
||||
touch $AGENT_TOOLSDIRECTORY/PyPy/2.7.13/x64.complete
|
||||
|
||||
# add pypy to PATH by default
|
||||
ln -s $AGENT_TOOLSDIRECTORY/PyPy/2.7.13/x64/bin/pypy /usr/local/bin/pypy
|
||||
# pypy will be the python in PATH when its tools cache directory is prepended to PATH
|
||||
# PEP 394-style symlinking; don't bother with minor version
|
||||
ln -s $AGENT_TOOLSDIRECTORY/PyPy/2.7.13/x64/bin/pypy $AGENT_TOOLSDIRECTORY/PyPy/2.7.13/x64/bin/python2
|
||||
ln -s $AGENT_TOOLSDIRECTORY/PyPy/2.7.13/x64/bin/python2 $AGENT_TOOLSDIRECTORY/PyPy/2.7.13/x64/bin/python
|
||||
|
||||
# Install latest Pip for PyPy2
|
||||
$AGENT_TOOLSDIRECTORY/PyPy/2.7.13/x64/bin/pypy -m ensurepip
|
||||
$AGENT_TOOLSDIRECTORY/PyPy/2.7.13/x64/bin/pypy -m pip install --ignore-installed pip
|
||||
|
||||
# Install PyPy 3.5 to $AGENT_TOOLSDIRECTORY
|
||||
wget -q -P /tmp https://bitbucket.org/pypy/pypy/downloads/pypy3.5-v7.0.0-linux64.tar.bz2
|
||||
tar -x -C /tmp -f /tmp/pypy3.5-v7.0.0-linux64.tar.bz2
|
||||
rm /tmp/pypy3.5-v7.0.0-linux64.tar.bz2
|
||||
mkdir -p $AGENT_TOOLSDIRECTORY/PyPy/3.5.3
|
||||
mv /tmp/pypy3.5-v7.0.0-linux64 $AGENT_TOOLSDIRECTORY/PyPy/3.5.3/x64
|
||||
touch $AGENT_TOOLSDIRECTORY/PyPy/3.5.3/x64.complete
|
||||
|
||||
# add pypy3 to PATH by default
|
||||
ln -s $AGENT_TOOLSDIRECTORY/PyPy/3.5.3/x64/bin/pypy3 /usr/local/bin/pypy3
|
||||
# pypy3 will be the python in PATH when its tools cache directory is prepended to PATH
|
||||
# PEP 394-style symlinking; don't bother with minor version
|
||||
ln -s $AGENT_TOOLSDIRECTORY/PyPy/3.5.3/x64/bin/pypy3 $AGENT_TOOLSDIRECTORY/PyPy/3.5.3/x64/bin/python3
|
||||
ln -s $AGENT_TOOLSDIRECTORY/PyPy/3.5.3/x64/bin/python3 $AGENT_TOOLSDIRECTORY/PyPy/3.5.3/x64/bin/python
|
||||
|
||||
# Install latest Pip for PyPy3
|
||||
$AGENT_TOOLSDIRECTORY/PyPy/3.5.3/x64/bin/pypy3 -m ensurepip
|
||||
$AGENT_TOOLSDIRECTORY/PyPy/3.5.3/x64/bin/pypy3 -m pip install --ignore-installed pip
|
||||
|
||||
# Run tests to determine that the software installed as expected
|
||||
echo "Testing to make sure that script performed as expected, and basic scenarios work"
|
||||
for cmd in python pip pypy python3 pip3 pypy3; do
|
||||
if ! command -v $cmd; then
|
||||
echo "$cmd was not installed or not found on PATH"
|
||||
exit 1
|
||||
fi
|
||||
done
|
||||
|
||||
# Document what was added to the image
|
||||
echo "Lastly, documenting what we added to the metadata file"
|
||||
DocumentInstalledItem "Python ($(python --version 2>&1))"
|
||||
DocumentInstalledItem "pip ($(pip --version))"
|
||||
DocumentInstalledItem "Python3 ($(python3 --version))"
|
||||
DocumentInstalledItem "pip3 ($(pip3 --version))"
|
||||
DocumentInstalledItem "PyPy2 ($(pypy --version 2>&1 | grep PyPy))"
|
||||
DocumentInstalledItem "PyPy3 ($(pypy3 --version 2>&1 | grep PyPy))"
|
||||
11
images/linux/scripts/installers/ruby.sh
Normal file
11
images/linux/scripts/installers/ruby.sh
Normal file
@@ -0,0 +1,11 @@
|
||||
#!/bin/bash
|
||||
################################################################################
|
||||
## File: ruby.sh
|
||||
## Desc: Installs Ruby requirements
|
||||
################################################################################
|
||||
|
||||
# Source the helpers for use with the script
|
||||
source $HELPER_SCRIPTS/document.sh
|
||||
|
||||
# Install Ruby requirements
|
||||
apt-get install -y libz-dev openssl libssl-dev
|
||||
54
images/linux/scripts/installers/rust.sh
Normal file
54
images/linux/scripts/installers/rust.sh
Normal file
@@ -0,0 +1,54 @@
|
||||
#!/bin/bash
|
||||
################################################################################
|
||||
## File: rust.sh
|
||||
## Desc: Installs Rust
|
||||
################################################################################
|
||||
|
||||
# Source the helpers for use with the script
|
||||
source $HELPER_SCRIPTS/document.sh
|
||||
|
||||
set -e
|
||||
|
||||
export RUSTUP_HOME=/usr/share/rust/.rustup
|
||||
export CARGO_HOME=/usr/share/rust/.cargo
|
||||
|
||||
curl https://sh.rustup.rs -sSf | sh -s -- -y
|
||||
|
||||
# Add Cargo and Rust binaries to the machine path
|
||||
echo "PATH=${CARGO_HOME}/bin:$PATH" | tee -a /etc/environment
|
||||
source $CARGO_HOME/env
|
||||
|
||||
# Install common tools
|
||||
rustup component add rustfmt
|
||||
rustup component add clippy
|
||||
cargo install bindgen
|
||||
cargo install cbindgen
|
||||
|
||||
echo "Test installation of the Rust toochain"
|
||||
|
||||
# Permissions
|
||||
chmod -R 777 $(dirname $RUSTUP_HOME)
|
||||
|
||||
for cmd in rustup rustc rustdoc cargo rustfmt cargo-clippy bindgen cbindgen; do
|
||||
if ! command -v $cmd --version; then
|
||||
echo "$cmd was not installed or is not found on the path"
|
||||
exit 1
|
||||
fi
|
||||
done
|
||||
|
||||
# Rust Symlinks are added to a default profile /etc/skel
|
||||
pushd /etc/skel
|
||||
ln -sf $RUSTUP_HOME .rustup
|
||||
ln -sf $CARGO_HOME .cargo
|
||||
popd
|
||||
|
||||
# Document what was added to the image
|
||||
echo "Lastly, document what was added to the metadata file"
|
||||
DocumentInstalledItem "rustup ($(rustup --version 2>&1 | cut -d ' ' -f 2))"
|
||||
DocumentInstalledItem "rust ($(rustc --version 2>&1 | cut -d ' ' -f 2))"
|
||||
DocumentInstalledItem "cargo ($(cargo --version 2>&1 | cut -d ' ' -f 2))"
|
||||
DocumentInstalledItem "rustfmt ($(rustfmt --version 2>&1 | cut -d ' ' -f 2))"
|
||||
DocumentInstalledItem "clippy ($(cargo-clippy --version 2>&1 | cut -d ' ' -f 2))"
|
||||
DocumentInstalledItem "rustdoc ($(rustdoc --version 2>&1 | cut -d ' ' -f 2))"
|
||||
DocumentInstalledItem "bindgen ($(bindgen --version 2>&1 | cut -d ' ' -f 2))"
|
||||
DocumentInstalledItem "cbindgen ($(cbindgen --version 2>&1 | cut -d ' ' -f 2))"
|
||||
20
images/linux/scripts/installers/sbt.sh
Normal file
20
images/linux/scripts/installers/sbt.sh
Normal file
@@ -0,0 +1,20 @@
|
||||
#!/bin/bash
|
||||
################################################################################
|
||||
## File: scala.sh
|
||||
## Team: CI-Platform
|
||||
## Desc: Installs sbt
|
||||
################################################################################
|
||||
|
||||
# Source the helpers for use with the script
|
||||
source $HELPER_SCRIPTS/document.sh
|
||||
|
||||
# Install sbt
|
||||
# https://www.scala-sbt.org/1.x/docs/Installing-sbt-on-Linux.html
|
||||
echo "deb https://dl.bintray.com/sbt/debian /" | sudo tee -a /etc/apt/sources.list.d/sbt.list
|
||||
curl -sL "https://keyserver.ubuntu.com/pks/lookup?op=get&search=0x2EE0EA64E40A89B84B2DF73499E82A75642AC823" | apt-key add
|
||||
apt-get -q update
|
||||
apt-get -y install sbt
|
||||
|
||||
# Document what was added to the image
|
||||
echo "Lastly, documenting what we added to the metadata file"
|
||||
DocumentInstalledItem "sbt ($(sbt --script-version))"
|
||||
15
images/linux/scripts/installers/sphinx.sh
Normal file
15
images/linux/scripts/installers/sphinx.sh
Normal file
@@ -0,0 +1,15 @@
|
||||
#!/bin/bash
|
||||
################################################################################
|
||||
## File: sphinx.sh
|
||||
## Desc: Installs Sphinx
|
||||
################################################################################
|
||||
|
||||
# Source the helpers for use with the script
|
||||
source $HELPER_SCRIPTS/document.sh
|
||||
|
||||
# Install Sphinx
|
||||
apt-get install -y sphinxsearch
|
||||
|
||||
# Document what was added to the image
|
||||
echo "Lastly, documenting what we added to the metadata file"
|
||||
DocumentInstalledItem "Sphinx Open Source Search Server"
|
||||
22
images/linux/scripts/installers/subversion.sh
Normal file
22
images/linux/scripts/installers/subversion.sh
Normal file
@@ -0,0 +1,22 @@
|
||||
#!/bin/bash
|
||||
################################################################################
|
||||
## File: subversion.sh
|
||||
## Desc: Installs Subversion client
|
||||
################################################################################
|
||||
|
||||
# Source the helpers for use with the script
|
||||
source $HELPER_SCRIPTS/document.sh
|
||||
|
||||
# Install Subversion
|
||||
apt-get install -y --no-install-recommends subversion
|
||||
|
||||
# Run tests to determine that the software installed as expected
|
||||
echo "Testing to make sure that script performed as expected, and basic scenarios work"
|
||||
if ! command -v svn; then
|
||||
echo "Subversion (svn) was not installed"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
# Document what was added to the image
|
||||
echo "Lastly, documenting what we added to the metadata file"
|
||||
DocumentInstalledItem "Subversion ($(svn --version | head -n 1))"
|
||||
26
images/linux/scripts/installers/terraform.sh
Normal file
26
images/linux/scripts/installers/terraform.sh
Normal file
@@ -0,0 +1,26 @@
|
||||
#!/bin/bash
|
||||
################################################################################
|
||||
## File: terraform.sh
|
||||
## Desc: Installs terraform
|
||||
################################################################################
|
||||
|
||||
# Source the helpers for use with the script
|
||||
source $HELPER_SCRIPTS/document.sh
|
||||
source $HELPER_SCRIPTS/apt.sh
|
||||
|
||||
# Install Terraform
|
||||
TERRAFORM_VERSION=$(curl -s https://checkpoint-api.hashicorp.com/v1/check/terraform | jq -r .current_version)
|
||||
curl -LO "https://releases.hashicorp.com/terraform/${TERRAFORM_VERSION}/terraform_${TERRAFORM_VERSION}_linux_amd64.zip"
|
||||
unzip "terraform_${TERRAFORM_VERSION}_linux_amd64.zip" -d /usr/local/bin
|
||||
rm -f "terraform_${TERRAFORM_VERSION}_linux_amd64.zip"
|
||||
|
||||
# Run tests to determine that the software installed as expected
|
||||
echo "Testing to make sure that script performed as expected, and basic scenarios work"
|
||||
if ! command -v terraform; then
|
||||
echo "Terraform was not installed or found on PATH"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
# Document what was added to the image
|
||||
echo "Lastly, documenting what we added to the metadata file"
|
||||
DocumentInstalledItem "Terraform ($(terraform --version))"
|
||||
70
images/linux/scripts/installers/test-toolcache.sh
Normal file
70
images/linux/scripts/installers/test-toolcache.sh
Normal file
@@ -0,0 +1,70 @@
|
||||
#!/bin/bash
|
||||
################################################################################
|
||||
## File: test-toolcache.sh
|
||||
## Desc: Test Python and Ruby versions in tools cache
|
||||
################################################################################
|
||||
|
||||
# Must be procecessed after tool cache setup(hosted-tool-cache.sh).
|
||||
|
||||
# Fail out if any tests fail
|
||||
set -e
|
||||
|
||||
AGENT_TOOLSDIRECTORY=/opt/hostedtoolcache
|
||||
|
||||
# Python test
|
||||
if [ -d "$AGENT_TOOLSDIRECTORY/Python" ]; then
|
||||
cd $AGENT_TOOLSDIRECTORY/Python
|
||||
python_dirs=($(find . -mindepth 1 -maxdepth 1 -type d | sed "s|^\./||"))
|
||||
echo "Python versions folders: ${python_dirs[@]}"
|
||||
echo "------------------------------------------"
|
||||
if [ -n "$python_dirs" ]; then
|
||||
for version_dir in "${python_dirs[@]}"
|
||||
do
|
||||
echo "Test $AGENT_TOOLSDIRECTORY/Python/$version_dir:"
|
||||
expected_ver=$(echo $version_dir | egrep -o '[0-9]+\.[0-9]+')
|
||||
actual_ver=$($AGENT_TOOLSDIRECTORY/Python/$version_dir/x64/python -c 'import sys;print(sys.version)'| head -1 | egrep -o '[0-9]+\.[0-9]+')
|
||||
|
||||
if [ "$expected_ver" = "$actual_ver" ]; then
|
||||
echo "Passed!"
|
||||
else
|
||||
echo "Expected: $expected_ver; Actual: $actual_ver"
|
||||
exit 1
|
||||
fi
|
||||
done
|
||||
else
|
||||
echo "$AGENT_TOOLSDIRECTORY/Python does not include any folders"
|
||||
exit 1
|
||||
fi
|
||||
else
|
||||
echo "$AGENT_TOOLSDIRECTORY/Python does not exist"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
# Ruby test
|
||||
if [ -d "$AGENT_TOOLSDIRECTORY/Ruby" ]; then
|
||||
cd $AGENT_TOOLSDIRECTORY/Ruby
|
||||
ruby_dirs=($(find . -mindepth 1 -maxdepth 1 -type d | sed "s|^\./||"))
|
||||
echo "Ruby versions folders: ${ruby_dirs[@]}"
|
||||
echo "--------------------------------------"
|
||||
if [ -n "$ruby_dirs" ]; then
|
||||
for version_dir in "${ruby_dirs[@]}"
|
||||
do
|
||||
echo "Test $AGENT_TOOLSDIRECTORY/Ruby/$version_dir:"
|
||||
expected_ver=$(echo $version_dir | egrep -o '[0-9]+\.[0-9]+')
|
||||
actual_ver=$($AGENT_TOOLSDIRECTORY/Ruby/$version_dir/x64/bin/ruby -e "puts RUBY_VERSION" | egrep -o '[0-9]+\.[0-9]+')
|
||||
|
||||
if [ "$expected_ver" = "$actual_ver" ]; then
|
||||
echo "Passed!"
|
||||
else
|
||||
echo "Expected: $expected_ver; Actual: $actual_ver"
|
||||
exit 1
|
||||
fi
|
||||
done
|
||||
else
|
||||
echo "$AGENT_TOOLSDIRECTORY/Ruby does not include any folders"
|
||||
exit 1
|
||||
fi
|
||||
else
|
||||
echo "$AGENT_TOOLSDIRECTORY/Ruby does not exist"
|
||||
exit 1
|
||||
fi
|
||||
30
images/linux/scripts/installers/vcpkg.sh
Normal file
30
images/linux/scripts/installers/vcpkg.sh
Normal file
@@ -0,0 +1,30 @@
|
||||
#!/bin/bash
|
||||
################################################################################
|
||||
## File: vcpkg.sh
|
||||
## Desc: Installs vcpkg
|
||||
################################################################################
|
||||
|
||||
# Source the helpers for use with the script
|
||||
source $HELPER_SCRIPTS/document.sh
|
||||
|
||||
# Set env variable for vcpkg
|
||||
VCPKG_INSTALLATION_ROOT=/usr/local/share/vcpkg
|
||||
echo "VCPKG_INSTALLATION_ROOT=${VCPKG_INSTALLATION_ROOT}" | tee -a /etc/environment
|
||||
|
||||
# Install vcpkg
|
||||
git clone --depth=1 https://github.com/Microsoft/vcpkg $VCPKG_INSTALLATION_ROOT
|
||||
$VCPKG_INSTALLATION_ROOT/bootstrap-vcpkg.sh
|
||||
$VCPKG_INSTALLATION_ROOT/vcpkg integrate install
|
||||
chmod 0777 -R $VCPKG_INSTALLATION_ROOT
|
||||
ln -sf $VCPKG_INSTALLATION_ROOT/vcpkg /usr/local/bin
|
||||
|
||||
# Run tests to determine that the software installed as expected
|
||||
echo "Testing to make sure that script performed as expected, and basic scenarios work"
|
||||
if ! command -v vcpkg; then
|
||||
echo "vcpkg was not installed"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
# Document what was added to the image
|
||||
echo "Lastly, documenting what we added to the metadata file"
|
||||
DocumentInstalledItem "Vcpkg $(vcpkg version | head -n 1 | cut -d ' ' -f 6)"
|
||||
22
images/linux/scripts/installers/zeit-now.sh
Normal file
22
images/linux/scripts/installers/zeit-now.sh
Normal file
@@ -0,0 +1,22 @@
|
||||
#!/bin/bash
|
||||
################################################################################
|
||||
## File: zeit-now.sh
|
||||
## Desc: Installs the Zeit Now CLI
|
||||
################################################################################
|
||||
|
||||
# Source the helpers for use with the script
|
||||
source $HELPER_SCRIPTS/document.sh
|
||||
|
||||
# Install the Zeit Now CLI
|
||||
npm i -g now
|
||||
|
||||
# Validate the installation
|
||||
echo "Validate the installation"
|
||||
if ! command -v now; then
|
||||
echo "Zeit Now CLI was not installed"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
# Document the installed version
|
||||
echo "Document the installed version"
|
||||
DocumentInstalledItem "Zeit Now CLI ($(now --version))"
|
||||
236
images/linux/ubuntu1604.json
Normal file
236
images/linux/ubuntu1604.json
Normal file
@@ -0,0 +1,236 @@
|
||||
{
|
||||
"variables": {
|
||||
"commit_id": "{{env `COMMIT_ID`}}",
|
||||
"client_id": "{{env `ARM_CLIENT_ID`}}",
|
||||
"client_secret": "{{env `ARM_CLIENT_SECRET`}}",
|
||||
"subscription_id": "{{env `ARM_SUBSCRIPTION_ID`}}",
|
||||
"tenant_id": "{{env `ARM_TENANT_ID`}}",
|
||||
"resource_group": "{{env `ARM_RESOURCE_GROUP`}}",
|
||||
"storage_account": "{{env `ARM_STORAGE_ACCOUNT`}}",
|
||||
"temp_resource_group_name": "{{env `TEMP_RESOURCE_GROUP_NAME`}}",
|
||||
"location": "{{env `ARM_RESOURCE_LOCATION`}}",
|
||||
"virtual_network_name": "{{env `VNET_NAME`}}",
|
||||
"virtual_network_resource_group_name": "{{env `VNET_RESOURCE_GROUP`}}",
|
||||
"virtual_network_subnet_name": "{{env `VNET_SUBNET`}}",
|
||||
"private_virtual_network_with_public_ip": "{{env `PRIVATE_VIRTUAL_NETWORK_WITH_PUBLIC_IP`}}",
|
||||
"image_folder": "/imagegeneration",
|
||||
"commit_file": "/imagegeneration/commit.txt",
|
||||
"metadata_file": "/imagegeneration/metadatafile",
|
||||
"installer_script_folder": "/imagegeneration/installers",
|
||||
"helper_script_folder": "/imagegeneration/helpers",
|
||||
"vm_size": "Standard_DS2_v2",
|
||||
"capture_name_prefix": "packer",
|
||||
"image_version": "dev"
|
||||
},
|
||||
"builders": [
|
||||
{
|
||||
"type": "azure-arm",
|
||||
"client_id": "{{user `client_id`}}",
|
||||
"client_secret": "{{user `client_secret`}}",
|
||||
"subscription_id": "{{user `subscription_id`}}",
|
||||
"tenant_id": "{{user `tenant_id`}}",
|
||||
|
||||
"location": "{{user `location`}}",
|
||||
"vm_size": "{{user `vm_size`}}",
|
||||
"resource_group_name": "{{user `resource_group`}}",
|
||||
"storage_account": "{{user `storage_account`}}",
|
||||
"temp_resource_group_name": "{{user `temp_resource_group_name`}}",
|
||||
"capture_container_name": "images",
|
||||
"capture_name_prefix": "{{user `capture_name_prefix`}}",
|
||||
"virtual_network_name": "{{user `virtual_network_name`}}",
|
||||
"virtual_network_resource_group_name": "{{user `virtual_network_resource_group_name`}}",
|
||||
"virtual_network_subnet_name": "{{user `virtual_network_subnet_name`}}",
|
||||
"private_virtual_network_with_public_ip": "{{user `private_virtual_network_with_public_ip`}}",
|
||||
"os_type": "Linux",
|
||||
"image_publisher": "Canonical",
|
||||
"image_offer": "UbuntuServer",
|
||||
"image_sku": "16.04-LTS",
|
||||
"os_disk_size_gb": "86"
|
||||
}
|
||||
],
|
||||
"provisioners": [
|
||||
{
|
||||
"type": "shell",
|
||||
"inline": [
|
||||
"mkdir {{user `image_folder`}}",
|
||||
"chmod 777 {{user `image_folder`}}",
|
||||
"echo {{user `commit_id`}} > {{user `commit_file`}}",
|
||||
"chmod +r {{user `commit_file`}}"
|
||||
],
|
||||
"execute_command": "sudo sh -c '{{ .Vars }} {{ .Path }}'"
|
||||
},
|
||||
{
|
||||
"type": "shell",
|
||||
"scripts":[
|
||||
"{{template_dir}}/scripts/base/repos.sh"
|
||||
],
|
||||
"execute_command": "sudo sh -c '{{ .Vars }} {{ .Path }}'"
|
||||
},
|
||||
{
|
||||
"type": "shell",
|
||||
"inline": [
|
||||
"apt-get update",
|
||||
"apt-get dist-upgrade -y",
|
||||
"systemctl disable apt-daily.service",
|
||||
"systemctl disable apt-daily.timer",
|
||||
"systemctl disable apt-daily-upgrade.timer",
|
||||
"systemctl disable apt-daily-upgrade.service",
|
||||
"echo '* soft nofile 50000 \n* hard nofile 50000' >> /etc/security/limits.conf",
|
||||
"echo 'session required pam_limits.so' >> /etc/pam.d/common-session",
|
||||
"echo 'session required pam_limits.so' >> /etc/pam.d/common-session-noninteractive"
|
||||
],
|
||||
"execute_command": "sudo sh -c '{{ .Vars }} {{ .Path }}'"
|
||||
},
|
||||
{
|
||||
"type": "file",
|
||||
"source": "{{template_dir}}/scripts/helpers",
|
||||
"destination": "{{user `helper_script_folder`}}"
|
||||
},
|
||||
{
|
||||
"type": "file",
|
||||
"source": "{{template_dir}}/scripts/installers",
|
||||
"destination": "{{user `installer_script_folder`}}"
|
||||
},
|
||||
{
|
||||
"type": "shell",
|
||||
"scripts":[
|
||||
"{{template_dir}}/scripts/installers/1604/preparemetadata.sh"
|
||||
],
|
||||
"environment_vars": [
|
||||
"IMAGE_VERSION={{user `image_version`}}",
|
||||
"METADATA_FILE={{user `metadata_file`}}",
|
||||
"HELPER_SCRIPTS={{user `helper_script_folder`}}"
|
||||
],
|
||||
"execute_command": "sudo sh -c '{{ .Vars }} {{ .Path }}'"
|
||||
},
|
||||
{
|
||||
"type": "shell",
|
||||
"inline": [
|
||||
"echo ImageVersion={{user `image_version`}} | tee -a /etc/environment"
|
||||
],
|
||||
"execute_command": "sudo sh -c '{{ .Vars }} {{ .Path }}'"
|
||||
},
|
||||
{
|
||||
"type": "shell",
|
||||
"scripts": [
|
||||
"{{template_dir}}/scripts/installers/7-zip.sh",
|
||||
"{{template_dir}}/scripts/installers/ansible.sh",
|
||||
"{{template_dir}}/scripts/installers/azcopy.sh",
|
||||
"{{template_dir}}/scripts/installers/azure-cli.sh",
|
||||
"{{template_dir}}/scripts/installers/azure-devops-cli.sh",
|
||||
"{{template_dir}}/scripts/installers/1604/basic.sh",
|
||||
"{{template_dir}}/scripts/installers/aws.sh",
|
||||
"{{template_dir}}/scripts/installers/build-essential.sh",
|
||||
"{{template_dir}}/scripts/installers/clang.sh",
|
||||
"{{template_dir}}/scripts/installers/cmake.sh",
|
||||
"{{template_dir}}/scripts/installers/docker-compose.sh",
|
||||
"{{template_dir}}/scripts/installers/docker-moby.sh",
|
||||
"{{template_dir}}/scripts/installers/docker.sh",
|
||||
"{{template_dir}}/scripts/installers/1604/dotnetcore-sdk.sh",
|
||||
"{{template_dir}}/scripts/installers/erlang.sh",
|
||||
"{{template_dir}}/scripts/installers/firefox.sh",
|
||||
"{{template_dir}}/scripts/installers/gcc.sh",
|
||||
"{{template_dir}}/scripts/installers/git.sh",
|
||||
"{{template_dir}}/scripts/installers/1604/go.sh",
|
||||
"{{template_dir}}/scripts/installers/google-chrome.sh",
|
||||
"{{template_dir}}/scripts/installers/google-cloud-sdk.sh",
|
||||
"{{template_dir}}/scripts/installers/haskell.sh",
|
||||
"{{template_dir}}/scripts/installers/heroku.sh",
|
||||
"{{template_dir}}/scripts/installers/hhvm.sh",
|
||||
"{{template_dir}}/scripts/installers/image-magick.sh",
|
||||
"{{template_dir}}/scripts/installers/java-tools.sh",
|
||||
"{{template_dir}}/scripts/installers/kind.sh",
|
||||
"{{template_dir}}/scripts/installers/1604/kubernetes-tools.sh",
|
||||
"{{template_dir}}/scripts/installers/leiningen.sh",
|
||||
"{{template_dir}}/scripts/installers/1604/mercurial.sh",
|
||||
"{{template_dir}}/scripts/installers/miniconda.sh",
|
||||
"{{template_dir}}/scripts/installers/mono.sh",
|
||||
"{{template_dir}}/scripts/installers/mysql.sh",
|
||||
"{{template_dir}}/scripts/installers/nodejs.sh",
|
||||
"{{template_dir}}/scripts/installers/phantomjs.sh",
|
||||
"{{template_dir}}/scripts/installers/1604/php.sh",
|
||||
"{{template_dir}}/scripts/installers/pollinate.sh",
|
||||
"{{template_dir}}/scripts/installers/1604/powershellcore.sh",
|
||||
"{{template_dir}}/scripts/installers/ruby.sh",
|
||||
"{{template_dir}}/scripts/installers/rust.sh",
|
||||
"{{template_dir}}/scripts/installers/sbt.sh",
|
||||
"{{template_dir}}/scripts/installers/sphinx.sh",
|
||||
"{{template_dir}}/scripts/installers/subversion.sh",
|
||||
"{{template_dir}}/scripts/installers/terraform.sh",
|
||||
"{{template_dir}}/scripts/installers/vcpkg.sh",
|
||||
"{{template_dir}}/scripts/installers/zeit-now.sh"
|
||||
],
|
||||
"environment_vars": [
|
||||
"METADATA_FILE={{user `metadata_file`}}",
|
||||
"HELPER_SCRIPTS={{user `helper_script_folder`}}",
|
||||
"DEBIAN_FRONTEND=noninteractive"
|
||||
],
|
||||
"execute_command": "sudo sh -c '{{ .Vars }} {{ .Path }}'"
|
||||
},
|
||||
{
|
||||
"type": "shell",
|
||||
"scripts":[
|
||||
"{{template_dir}}/scripts/installers/1604/android.sh",
|
||||
"{{template_dir}}/scripts/installers/1604/azpowershell.sh",
|
||||
"{{template_dir}}/scripts/helpers/containercache.sh",
|
||||
"{{template_dir}}/scripts/installers/1604/hosted-tool-cache.sh",
|
||||
"{{template_dir}}/scripts/installers/python.sh",
|
||||
"{{template_dir}}/scripts/installers/test-toolcache.sh"
|
||||
],
|
||||
"environment_vars": [
|
||||
"METADATA_FILE={{user `metadata_file`}}",
|
||||
"HELPER_SCRIPTS={{user `helper_script_folder`}}"
|
||||
],
|
||||
"execute_command": "sudo sh -c '{{ .Vars }} {{ .Path }}'"
|
||||
},
|
||||
{
|
||||
"type": "shell",
|
||||
"scripts":[
|
||||
"{{template_dir}}/scripts/installers/boost.sh"
|
||||
],
|
||||
"environment_vars": [
|
||||
"METADATA_FILE={{user `metadata_file`}}",
|
||||
"HELPER_SCRIPTS={{user `helper_script_folder`}}",
|
||||
"BOOST_VERSIONS=1.69.0",
|
||||
"BOOST_DEFAULT=1.69.0"
|
||||
],
|
||||
"execute_command": "sudo sh -c '{{ .Vars }} {{ .Path }}'"
|
||||
},
|
||||
{
|
||||
"type": "file",
|
||||
"source": "{{user `metadata_file`}}",
|
||||
"destination": "{{template_dir}}/Ubuntu1604-README.md",
|
||||
"direction": "download"
|
||||
},
|
||||
{
|
||||
"type": "shell",
|
||||
"inline": [
|
||||
"rm -rf {{user `helper_script_folder`}}",
|
||||
"rm -rf {{user `installer_script_folder`}}",
|
||||
"chmod 755 {{user `image_folder`}}"
|
||||
],
|
||||
"execute_command": "sudo sh -c '{{ .Vars }} {{ .Path }}'"
|
||||
},
|
||||
{
|
||||
"type": "file",
|
||||
"source": "{{template_dir}}/config/ubuntu1604.conf",
|
||||
"destination": "/tmp/"
|
||||
},
|
||||
{
|
||||
"type": "shell",
|
||||
"inline": [
|
||||
"mkdir -p /etc/vsts",
|
||||
"cp /tmp/ubuntu1604.conf /etc/vsts/machine_instance.conf"
|
||||
],
|
||||
"execute_command": "sudo sh -c '{{ .Vars }} {{ .Path }}'"
|
||||
},
|
||||
{
|
||||
"type": "shell",
|
||||
"inline": [
|
||||
"sleep 30",
|
||||
"/usr/sbin/waagent -force -deprovision+user && export HISTSIZE=0 && sync"
|
||||
],
|
||||
"execute_command": "sudo sh -c '{{ .Vars }} {{ .Path }}'"
|
||||
}
|
||||
]
|
||||
}
|
||||
239
images/linux/ubuntu1804.json
Normal file
239
images/linux/ubuntu1804.json
Normal file
@@ -0,0 +1,239 @@
|
||||
{
|
||||
"variables": {
|
||||
"commit_id": "{{env `COMMIT_ID`}}",
|
||||
"client_id": "{{env `ARM_CLIENT_ID`}}",
|
||||
"client_secret": "{{env `ARM_CLIENT_SECRET`}}",
|
||||
"subscription_id": "{{env `ARM_SUBSCRIPTION_ID`}}",
|
||||
"tenant_id": "{{env `ARM_TENANT_ID`}}",
|
||||
"resource_group": "{{env `ARM_RESOURCE_GROUP`}}",
|
||||
"storage_account": "{{env `ARM_STORAGE_ACCOUNT`}}",
|
||||
"temp_resource_group_name": "{{env `TEMP_RESOURCE_GROUP_NAME`}}",
|
||||
"location": "{{env `ARM_RESOURCE_LOCATION`}}",
|
||||
"virtual_network_name": "{{env `VNET_NAME`}}",
|
||||
"virtual_network_resource_group_name": "{{env `VNET_RESOURCE_GROUP`}}",
|
||||
"virtual_network_subnet_name": "{{env `VNET_SUBNET`}}",
|
||||
"private_virtual_network_with_public_ip": "{{env `PRIVATE_VIRTUAL_NETWORK_WITH_PUBLIC_IP`}}",
|
||||
"image_folder": "/imagegeneration",
|
||||
"commit_file": "/imagegeneration/commit.txt",
|
||||
"metadata_file": "/imagegeneration/metadatafile",
|
||||
"installer_script_folder": "/imagegeneration/installers",
|
||||
"helper_script_folder": "/imagegeneration/helpers",
|
||||
"vm_size": "Standard_DS2_v2",
|
||||
"capture_name_prefix": "packer",
|
||||
"image_version": "dev"
|
||||
},
|
||||
"builders": [
|
||||
{
|
||||
"type": "azure-arm",
|
||||
"client_id": "{{user `client_id`}}",
|
||||
"client_secret": "{{user `client_secret`}}",
|
||||
"subscription_id": "{{user `subscription_id`}}",
|
||||
"tenant_id": "{{user `tenant_id`}}",
|
||||
|
||||
"location": "{{user `location`}}",
|
||||
"vm_size": "{{user `vm_size`}}",
|
||||
"resource_group_name": "{{user `resource_group`}}",
|
||||
"storage_account": "{{user `storage_account`}}",
|
||||
"temp_resource_group_name": "{{user `temp_resource_group_name`}}",
|
||||
"capture_container_name": "images",
|
||||
"capture_name_prefix": "{{user `capture_name_prefix`}}",
|
||||
"virtual_network_name": "{{user `virtual_network_name`}}",
|
||||
"virtual_network_resource_group_name": "{{user `virtual_network_resource_group_name`}}",
|
||||
"virtual_network_subnet_name": "{{user `virtual_network_subnet_name`}}",
|
||||
"private_virtual_network_with_public_ip": "{{user `private_virtual_network_with_public_ip`}}",
|
||||
"os_type": "Linux",
|
||||
"image_publisher": "Canonical",
|
||||
"image_offer": "UbuntuServer",
|
||||
"image_sku": "18.04-LTS",
|
||||
"os_disk_size_gb": "86"
|
||||
}
|
||||
],
|
||||
"provisioners": [
|
||||
{
|
||||
"type": "shell",
|
||||
"inline": [
|
||||
"mkdir {{user `image_folder`}}",
|
||||
"chmod 777 {{user `image_folder`}}",
|
||||
"echo {{user `commit_id`}} > {{user `commit_file`}}",
|
||||
"chmod +r {{user `commit_file`}}"
|
||||
],
|
||||
"execute_command": "sudo sh -c '{{ .Vars }} {{ .Path }}'"
|
||||
},
|
||||
{
|
||||
"type": "shell",
|
||||
"scripts":[
|
||||
"{{template_dir}}/scripts/base/repos.sh"
|
||||
],
|
||||
"environment_vars": [
|
||||
"DEBIAN_FRONTEND=noninteractive"
|
||||
],
|
||||
"execute_command": "sudo sh -c '{{ .Vars }} {{ .Path }}'"
|
||||
},
|
||||
{
|
||||
"type": "shell",
|
||||
"inline": [
|
||||
"apt-get update",
|
||||
"apt-get dist-upgrade -y",
|
||||
"systemctl disable apt-daily.service",
|
||||
"systemctl disable apt-daily.timer",
|
||||
"systemctl disable apt-daily-upgrade.timer",
|
||||
"systemctl disable apt-daily-upgrade.service",
|
||||
"echo '* soft nofile 50000 \n* hard nofile 50000' >> /etc/security/limits.conf",
|
||||
"echo 'session required pam_limits.so' >> /etc/pam.d/common-session",
|
||||
"echo 'session required pam_limits.so' >> /etc/pam.d/common-session-noninteractive"
|
||||
],
|
||||
"execute_command": "sudo sh -c '{{ .Vars }} {{ .Path }}'"
|
||||
},
|
||||
{
|
||||
"type": "file",
|
||||
"source": "{{template_dir}}/scripts/helpers",
|
||||
"destination": "{{user `helper_script_folder`}}"
|
||||
},
|
||||
{
|
||||
"type": "file",
|
||||
"source": "{{template_dir}}/scripts/installers",
|
||||
"destination": "{{user `installer_script_folder`}}"
|
||||
},
|
||||
{
|
||||
"type": "shell",
|
||||
"scripts":[
|
||||
"{{template_dir}}/scripts/installers/1804/preparemetadata.sh"
|
||||
],
|
||||
"environment_vars": [
|
||||
"IMAGE_VERSION={{user `image_version`}}",
|
||||
"METADATA_FILE={{user `metadata_file`}}",
|
||||
"HELPER_SCRIPTS={{user `helper_script_folder`}}"
|
||||
],
|
||||
"execute_command": "sudo sh -c '{{ .Vars }} {{ .Path }}'"
|
||||
},
|
||||
{
|
||||
"type": "shell",
|
||||
"inline": [
|
||||
"echo ImageVersion={{user `image_version`}} | tee -a /etc/environment"
|
||||
],
|
||||
"execute_command": "sudo sh -c '{{ .Vars }} {{ .Path }}'"
|
||||
},
|
||||
{
|
||||
"type": "shell",
|
||||
"scripts": [
|
||||
"{{template_dir}}/scripts/installers/7-zip.sh",
|
||||
"{{template_dir}}/scripts/installers/ansible.sh",
|
||||
"{{template_dir}}/scripts/installers/azcopy.sh",
|
||||
"{{template_dir}}/scripts/installers/azure-cli.sh",
|
||||
"{{template_dir}}/scripts/installers/azure-devops-cli.sh",
|
||||
"{{template_dir}}/scripts/installers/1804/basic.sh",
|
||||
"{{template_dir}}/scripts/installers/aws.sh",
|
||||
"{{template_dir}}/scripts/installers/build-essential.sh",
|
||||
"{{template_dir}}/scripts/installers/clang.sh",
|
||||
"{{template_dir}}/scripts/installers/cmake.sh",
|
||||
"{{template_dir}}/scripts/installers/docker-compose.sh",
|
||||
"{{template_dir}}/scripts/installers/docker-moby.sh",
|
||||
"{{template_dir}}/scripts/installers/docker.sh",
|
||||
"{{template_dir}}/scripts/installers/1804/dotnetcore-sdk.sh",
|
||||
"{{template_dir}}/scripts/installers/erlang.sh",
|
||||
"{{template_dir}}/scripts/installers/firefox.sh",
|
||||
"{{template_dir}}/scripts/installers/gcc.sh",
|
||||
"{{template_dir}}/scripts/installers/git.sh",
|
||||
"{{template_dir}}/scripts/installers/1804/go.sh",
|
||||
"{{template_dir}}/scripts/installers/google-chrome.sh",
|
||||
"{{template_dir}}/scripts/installers/google-cloud-sdk.sh",
|
||||
"{{template_dir}}/scripts/installers/haskell.sh",
|
||||
"{{template_dir}}/scripts/installers/heroku.sh",
|
||||
"{{template_dir}}/scripts/installers/hhvm.sh",
|
||||
"{{template_dir}}/scripts/installers/image-magick.sh",
|
||||
"{{template_dir}}/scripts/installers/java-tools.sh",
|
||||
"{{template_dir}}/scripts/installers/kind.sh",
|
||||
"{{template_dir}}/scripts/installers/1804/kubernetes-tools.sh",
|
||||
"{{template_dir}}/scripts/installers/leiningen.sh",
|
||||
"{{template_dir}}/scripts/installers/1804/mercurial.sh",
|
||||
"{{template_dir}}/scripts/installers/miniconda.sh",
|
||||
"{{template_dir}}/scripts/installers/mono.sh",
|
||||
"{{template_dir}}/scripts/installers/mysql.sh",
|
||||
"{{template_dir}}/scripts/installers/nodejs.sh",
|
||||
"{{template_dir}}/scripts/installers/phantomjs.sh",
|
||||
"{{template_dir}}/scripts/installers/1804/php.sh",
|
||||
"{{template_dir}}/scripts/installers/pollinate.sh",
|
||||
"{{template_dir}}/scripts/installers/1804/powershellcore.sh",
|
||||
"{{template_dir}}/scripts/installers/ruby.sh",
|
||||
"{{template_dir}}/scripts/installers/rust.sh",
|
||||
"{{template_dir}}/scripts/installers/sbt.sh",
|
||||
"{{template_dir}}/scripts/installers/sphinx.sh",
|
||||
"{{template_dir}}/scripts/installers/subversion.sh",
|
||||
"{{template_dir}}/scripts/installers/terraform.sh",
|
||||
"{{template_dir}}/scripts/installers/vcpkg.sh",
|
||||
"{{template_dir}}/scripts/installers/zeit-now.sh"
|
||||
],
|
||||
"environment_vars": [
|
||||
"METADATA_FILE={{user `metadata_file`}}",
|
||||
"HELPER_SCRIPTS={{user `helper_script_folder`}}",
|
||||
"DEBIAN_FRONTEND=noninteractive"
|
||||
],
|
||||
"execute_command": "sudo sh -c '{{ .Vars }} {{ .Path }}'"
|
||||
},
|
||||
{
|
||||
"type": "shell",
|
||||
"scripts":[
|
||||
"{{template_dir}}/scripts/installers/1804/android.sh",
|
||||
"{{template_dir}}/scripts/installers/1804/azpowershell.sh",
|
||||
"{{template_dir}}/scripts/helpers/containercache.sh",
|
||||
"{{template_dir}}/scripts/installers/1804/hosted-tool-cache.sh",
|
||||
"{{template_dir}}/scripts/installers/python.sh",
|
||||
"{{template_dir}}/scripts/installers/test-toolcache.sh"
|
||||
],
|
||||
"environment_vars": [
|
||||
"METADATA_FILE={{user `metadata_file`}}",
|
||||
"HELPER_SCRIPTS={{user `helper_script_folder`}}"
|
||||
],
|
||||
"execute_command": "sudo sh -c '{{ .Vars }} {{ .Path }}'"
|
||||
},
|
||||
{
|
||||
"type": "shell",
|
||||
"scripts":[
|
||||
"{{template_dir}}/scripts/installers/boost.sh"
|
||||
],
|
||||
"environment_vars": [
|
||||
"METADATA_FILE={{user `metadata_file`}}",
|
||||
"HELPER_SCRIPTS={{user `helper_script_folder`}}",
|
||||
"BOOST_VERSIONS=1.69.0",
|
||||
"BOOST_DEFAULT=1.69.0"
|
||||
],
|
||||
"execute_command": "sudo sh -c '{{ .Vars }} {{ .Path }}'"
|
||||
},
|
||||
{
|
||||
"type": "file",
|
||||
"source": "{{user `metadata_file`}}",
|
||||
"destination": "{{template_dir}}/Ubuntu1804-README.md",
|
||||
"direction": "download"
|
||||
},
|
||||
{
|
||||
"type": "shell",
|
||||
"inline": [
|
||||
"rm -rf {{user `helper_script_folder`}}",
|
||||
"rm -rf {{user `installer_script_folder`}}",
|
||||
"chmod 755 {{user `image_folder`}}"
|
||||
],
|
||||
"execute_command": "sudo sh -c '{{ .Vars }} {{ .Path }}'"
|
||||
},
|
||||
{
|
||||
"type": "file",
|
||||
"source": "{{template_dir}}/config/ubuntu1804.conf",
|
||||
"destination": "/tmp/"
|
||||
},
|
||||
{
|
||||
"type": "shell",
|
||||
"inline": [
|
||||
"mkdir -p /etc/vsts",
|
||||
"cp /tmp/ubuntu1804.conf /etc/vsts/machine_instance.conf"
|
||||
],
|
||||
"execute_command": "sudo sh -c '{{ .Vars }} {{ .Path }}'"
|
||||
},
|
||||
{
|
||||
"type": "shell",
|
||||
"inline": [
|
||||
"sleep 30",
|
||||
"/usr/sbin/waagent -force -deprovision+user && export HISTSIZE=0 && sync"
|
||||
],
|
||||
"execute_command": "sudo sh -c '{{ .Vars }} {{ .Path }}'"
|
||||
}
|
||||
]
|
||||
}
|
||||
395
images/macos/macos-10.13-Readme.md
Normal file
395
images/macos/macos-10.13-Readme.md
Normal file
@@ -0,0 +1,395 @@
|
||||
# Azure Pipelines hosted macOS image
|
||||
|
||||
The following software is installed on machines in the Azure Pipelines **macOS-10.13** VM image ('Hosted macOS High Sierra' pool).
|
||||
|
||||
#### Xcode 10.1 set by default
|
||||
|
||||
## Operating System
|
||||
|
||||
- OS X 10.13.6 (17G8037) **High Sierra**
|
||||
|
||||
## Installed Software
|
||||
|
||||
### Language and Runtime
|
||||
|
||||
- Java 1.7: OpenJDK Runtime Environment (Zulu 7.34.0.5-CA-macosx) (build 1.7.0_242-b7)
|
||||
- Java 1.8: OpenJDK Runtime Environment (Zulu 8.42.0.21-CA-macosx) (build 1.8.0_232-b18) (default)
|
||||
- Java 11: OpenJDK Runtime Environment Zulu11.35+13-CA (build 11.0.5+10-LTS)
|
||||
- Java 12: OpenJDK Runtime Environment Zulu12.3+11-CA (build 12.0.2+3)
|
||||
- Java 13: OpenJDK Runtime Environment Zulu13.28+11-CA (build 13.0.1+10-MTS)
|
||||
- Node.js 6.17.0
|
||||
- NVM 0.33.11
|
||||
- NVM - Installed node versions:
|
||||
v6.17.1
|
||||
v8.16.2
|
||||
v10.17.0
|
||||
v12.13.0
|
||||
- PowerShell 6.2.3
|
||||
- Python 2.7.17
|
||||
- Python 3.7.4
|
||||
- Ruby 2.6.5p114
|
||||
- .NET Core SDK 1.0.1, 1.0.4, 1.1.4, 1.1.5, 1.1.7, 1.1.8, 1.1.9, 1.1.10, 1.1.11, 1.1.12, 1.1.13, 2.0.0, 2.0.3, 2.1.100, 2.1.101, 2.1.102, 2.1.103, 2.1.104, 2.1.105, 2.1.503, 2.1.504, 2.1.505, 2.1.2, 2.1.200, 2.1.201, 2.1.300, 2.1.301, 2.1.4, 2.1.400, 2.1.401 2.1.402 2.1.502, 2.1.504, 2.2.101, 2.2.102, 2.2.103, 2.2.104, 2.2.105
|
||||
- Go 1.13.3
|
||||
|
||||
### Package Management
|
||||
|
||||
- Bundler 2.0.2
|
||||
- Carthage 0.34.0
|
||||
- CocoaPods 1.8.4
|
||||
- Homebrew 2.1.15
|
||||
- NPM 3.10.10
|
||||
- Yarn 1.19.1
|
||||
- NuGet 4.7.0.5148
|
||||
- pip 19.3.1(python 2.7)
|
||||
- pip 19.2.3(python 3.7)
|
||||
- Miniconda 4.7.12
|
||||
|
||||
### Project Management
|
||||
|
||||
- Apache Maven 3.6.2
|
||||
- Gradle 5.6.3
|
||||
|
||||
### Utilities
|
||||
|
||||
- curl 7.66.0 (x86_64-apple-darwin17.7.0) libcurl/7.66.0 SecureTransport zlib/1.2.11
|
||||
- Git 2.23.0
|
||||
- Git LFS 2.8.0
|
||||
- GNU Wget 1.20.3
|
||||
- Subversion (SVN) 1.12.2
|
||||
- GNU parallel 20190822
|
||||
|
||||
### Tools
|
||||
|
||||
- fastlane 2.134.0
|
||||
- App Center CLI 1.2.2
|
||||
- Azure-CLI 2.0.75
|
||||
|
||||
### Pre-cached tools
|
||||
- Python (available through the [setup-python](https://github.com/actions/setup-python/blob/master/README.md) task)
|
||||
- 2.7.16
|
||||
- 3.4.10
|
||||
- 3.5.7
|
||||
- 3.6.9
|
||||
- 3.7.5
|
||||
- 3.8.0
|
||||
- pypy2
|
||||
- pypy3
|
||||
- Ruby (available through the [setup-ruby](https://github.com/actions/setup-ruby/blob/master/README.md) task)
|
||||
- 2.3.8
|
||||
- 2.4.6
|
||||
- 2.5.5
|
||||
- 2.6.3
|
||||
|
||||
### Xcode
|
||||
| Version | Build | Path |
|
||||
|------------------------|---------|-------------------------------|
|
||||
| 10.1 | 10B61 | /Applications/Xcode_10.1.app |
|
||||
| 10.0 | 10A255 | /Applications/Xcode_10.app |
|
||||
| 9.4.1 | 9F2000 | /Applications/Xcode_9.4.1.app |
|
||||
| 9.4 | 9F1027a | /Applications/Xcode_9.4.app |
|
||||
| 9.3.1 | 9E501 | /Applications/Xcode_9.3.1.app |
|
||||
| 9.3 | 9E145 | /Applications/Xcode_9.3.app |
|
||||
| 9.2 | 9C40b | /Applications/Xcode_9.2.app |
|
||||
| 9.1 | 9B55 | /Applications/Xcode_9.1.app |
|
||||
| 9.0.1 | 9A1004 | /Applications/Xcode_9.0.1.app |
|
||||
| 9.0 | 9A235 | /Applications/Xcode_9.app |
|
||||
| 8.3.3 | 8E3004b | /Applications/Xcode_8.3.3.app |
|
||||
|
||||
### Xcode Support Tools
|
||||
|
||||
- Nomad CLI 3.0.6
|
||||
- Nomad CLI IPA 0.14.3
|
||||
- xcpretty 0.3.0
|
||||
- xctool 0.3.5
|
||||
- xcversion 2.6.1
|
||||
|
||||
### Installed SDKs
|
||||
| SDK | SDK name | Xcode Version |
|
||||
|---------------------------|-------------|---------------|
|
||||
| macOS 10.12 | macosx10.12 | 8.3.3 |
|
||||
| macOS 10.13 | macosx10.13 | 9.0, 9.0.1, 9.1, 9.2, 9.3, 9.3.1, 9.4, 9.4.1 |
|
||||
| macOS 10.14 | macosx10.14 | 10, 10.1 |
|
||||
| iOS 10.3 | iphoneos10.3 | 8.3.3 |
|
||||
| iOS 11.0 | iphoneos11.0 | 9.0, 9.0.1 |
|
||||
| iOS 11.1 | iphoneos11.1 | 9.1 |
|
||||
| iOS 11.2 | iphoneos11.2 | 9.2 |
|
||||
| iOS 11.3 | iphoneos11.3 | 9.3, 9.3.1 |
|
||||
| iOS 11.4 | iphoneos11.4 | 9.4, 9.4.1 |
|
||||
| iOS 12.0 | iphoneos12.0 | 10 |
|
||||
| iOS 12.1 | iphoneos12.1 | 10.1 |
|
||||
| iOS Simulator 10.3 | iphonesimulator10.3 | 8.3.3 |
|
||||
| iOS Simulator 11.0 | iphonesimulator11.0 | 9.0, 9.0.1 |
|
||||
| iOS Simulator 11.1 | iphonesimulator11.1 | 9.1 |
|
||||
| iOS Simulator 11.2 | iphonesimulator11.2 | 9.2 |
|
||||
| iOS Simulator 11.3 | iphonesimulator11.3 | 9.3, 9.3.1 |
|
||||
| iOS Simulator 11.4 | iphonesimulator11.4 | 9.4, 9.4.1 |
|
||||
| iOS Simulator 12.0 | iphonesimulator12.0 | 10 |
|
||||
| iOS Simulator 12.1 | iphonesimulator12.1 | 10.1 |
|
||||
| tvOS 10.2 | appletvos10.2 | 8.3.3 |
|
||||
| tvOS 11.0 | appletvos11.0 | 9.0, 9.0.1 |
|
||||
| tvOS 11.1 | appletvos11.1 | 9.1 |
|
||||
| tvOS 11.2 | appletvos11.2 | 9.2 |
|
||||
| tvOS 11.3 | appletvos11.3 | 9.3, 9.3.1 |
|
||||
| tvOS 11.4 | appletvos11.4 | 9.4, 9.4.1 |
|
||||
| tvOS 12.0 | appletvos12.0 | 10 |
|
||||
| tvOS 12.1 | appletvos12.1 | 10.1 |
|
||||
| tvOS Simulator 10.2 | appletvsimulator10.2 | 8.3.3 |
|
||||
| tvOS Simulator 11.0 | appletvsimulator11.0 | 9.0, 9.0.1 |
|
||||
| tvOS Simulator 11.1 | appletvsimulator11.1 | 9.1 |
|
||||
| tvOS Simulator 11.2 | appletvsimulator11.2 | 9.2 |
|
||||
| tvOS Simulator 11.3 | appletvsimulator11.3 | 9.3, 9.3.1 |
|
||||
| tvOS Simulator 11.4 | appletvsimulator11.4 | 9.4, 9.4.1 |
|
||||
| tvOS Simulator 12.0 | appletvsimulator12.0 | 10 |
|
||||
| tvOS Simulator 12.1 | appletvsimulator12.1 | 10.1 |
|
||||
| watchOS 3.2 | watchos3.2 | 8.3.3 |
|
||||
| watchOS 4.0 | watchos4.0 | 9.0, 9.0.1 |
|
||||
| watchOS 4.1 | watchos4.1 | 9.1 |
|
||||
| watchOS 4.2 | watchos4.2 | 9.2 |
|
||||
| watchOS 4.3 | watchos4.3 | 9.3, 9.3.1, 9.4, 9.4.1 |
|
||||
| watchOS 5.0 | watchos5.0 | 10.0 |
|
||||
| watchOS 5.1 | watchos5.1 | 10.1 |
|
||||
| watchOS Simulator 3.2 | watchsimulator3.2 | 8.3.3 |
|
||||
| watchOS Simulator 4.0 | watchsimulator4.0 | 9.0, 9.0.1 |
|
||||
| watchOS Simulator 4.1 | watchsimulator4.1 | 9.1 |
|
||||
| watchOS Simulator 4.2 | watchsimulator4.2 | 9.2 |
|
||||
| watchOS Simulator 4.3 | watchsimulator4.3 | 9.3, 9.3.1, 9.4, 9.4.1 |
|
||||
| watchOS Simulator 5.0 | watchsimulator5.0 | 10.0 |
|
||||
| watchOS Simulator 5.1 | watchsimulator5.1 | 10.1 |
|
||||
|
||||
### Installed Simulators
|
||||
|
||||
#### Runtimes
|
||||
|
||||
| OS | Xcode Version | Simulators |
|
||||
|---------|---------------------------------|------------|
|
||||
| iOS 8.4 (12H141) | 8.3.3, 9.0, 9.0.1, 9.1, 9.2, 9.3, 9.3.1, 9.4, 9.4.1, 10.0, 10.1 | iPhone 4s<br>iPhone 5<br>iPhone 5s<br>iPhone 6<br>iPhone 6 Plus<br>iPad 2<br>iPad Retina<br>iPad Air |
|
||||
| iOS 9.0 (13A344) | 8.3.3, 9.0, 9.0.1, 9.1, 9.2, 9.3, 9.3.1, 9.4, 9.4.1, 10.0, 10.1 | iPhone 4s<br>iPhone 5<br>iPhone 5s<br>iPhone 6<br>iPhone 6 Plus<br>iPhone 6s<br>iPhone 6s Plus<br>iPad 2<br>iPad Retina<br>iPad Air<br>iPad Air 2 |
|
||||
| iOS 9.1 (13B143)<br>iOS 9.2 (13C75)<br>iOS 9.3 (13E233) | 8.3.3, 9.0, 9.0.1, 9.1, 9.2, 9.3, 9.3.1, 9.4, 9.4.1, 10.0, 10.1 | iPhone 4s<br>iPhone 5<br>iPhone 5s<br>iPhone 6<br>iPhone 6 Plus<br>iPhone 6s<br>iPhone 6s Plus<br>iPad 2<br>iPad Retina<br>iPad Air<br>iPad Air 2<br>iPad Pro |
|
||||
| iOS 10.0 (14A345) | 8.3.3, 9.0, 9.0.1, 9.1, 9.2, 9.3, 9.3.1, 9.4, 9.4.1, 10.0, 10.1 | iPhone 5<br>iPhone 5s<br>iPhone 6<br>iPhone 6 Plus<br>iPhone 6s<br>iPhone 6s Plus<br>iPhone SE<br>iPad Air<br>iPad Air 2<br>iPad Pro (9.7 inch)<br>iPad Pro (12.9 inch) |
|
||||
| iOS 10.1 (14B72)<br>iOS 10.2 (14C89) | 8.3.3, 9.0, 9.0.1, 9.1, 9.2, 9.3, 9.3.1, 9.4, 9.4.1, 10.0, 10.1 | iPhone 5<br>iPhone 5s<br>iPhone 6<br>iPhone 6 Plus<br>iPhone 6s<br>iPhone 6s Plus<br>iPhone 7<br>iPhone 7 Plus<br>iPhone SE<br>iPad Air<br>iPad Air 2<br>iPad Pro (9.7 inch)<br>iPad Pro (12.9 inch) |
|
||||
| iOS 10.3 (14E8301) | 8.3.3 | iPhone 5<br>iPhone 5s<br>iPhone 6<br>iPhone 6 Plus<br>iPhone 6s<br>iPhone 6s Plus<br>iPhone 7<br>iPhone 7 Plus<br>iPhone SE<br>iPad Air<br>iPad Air 2<br>iPad Pro (9.7 inch)<br>iPad Pro (12.9 inch)<br>iPad (5th generation)<br>iPad Pro (12.9-inch) (2nd generation)<br>iPad Pro (10.5-inch) |
|
||||
| iOS 11.0 (15A372) | 9.0 | iPhone 5s <br> iPhone 6 <br> iPhone 6 Plus <br> iPhone 6s <br> iPhone 6s Plus <br> iPhone 7 <br> iPhone 7 Plus <br> iPhone 8 <br> iPhone 8 Plus <br> iPhone SE <br> iPhone X <br> iPad Air <br> iPad Air 2 <br> iPad (5th generation) <br> iPad Pro (9.7-inch) <br> iPad Pro (12.9-inch) <br> iPad Pro (12.9-inch) (2nd generation) <br> iPad Pro (10.5-inch) |
|
||||
| iOS 11.0 (15A8401) | 9.0.1 | iPhone 5s <br> iPhone 6 <br> iPhone 6 Plus <br> iPhone 6s <br> iPhone 6s Plus <br> iPhone 7 <br> iPhone 7 Plus <br> iPhone 8 <br> iPhone 8 Plus <br> iPhone SE <br> iPhone X <br> iPad Air <br> iPad Air 2 <br> iPad (5th generation) <br> iPad Pro (9.7-inch) <br> iPad Pro (12.9-inch) <br> iPad Pro (12.9-inch) (2nd generation) <br> iPad Pro (10.5-inch) |
|
||||
| iOS 11.1 (15B87) | 9.1 | iPhone 5s <br> iPhone 6 <br> iPhone 6 Plus <br> iPhone 6s <br> iPhone 6s Plus <br> iPhone 7 <br> iPhone 7 Plus <br> iPhone 8 <br> iPhone 8 Plus <br> iPhone SE <br> iPhone X <br> iPad Air <br> iPad Air 2 <br> iPad (5th generation) <br> iPad Pro (9.7-inch) <br> iPad Pro (12.9-inch) <br> iPad Pro (12.9-inch) (2nd generation) <br> iPad Pro (10.5-inch) |
|
||||
| iOS 11.2 (15C107) | 9.2 | iPhone 5s <br> iPhone 6 <br> iPhone 6 Plus <br> iPhone 6s <br> iPhone 6s Plus <br> iPhone 7 <br> iPhone 7 Plus <br> iPhone 8 <br> iPhone 8 Plus <br> iPhone SE <br> iPhone X <br> iPad Air <br> iPad Air 2 <br> iPad (5th generation) <br> iPad Pro (9.7-inch) <br> iPad Pro (12.9-inch) <br> iPad Pro (12.9-inch) (2nd generation) <br> iPad Pro (10.5-inch) |
|
||||
| iOS 11.3 (15E217) | 9.3, 9.3.1 | iPhone 5s <br> iPhone 6 <br> iPhone 6 Plus <br> iPhone 6s <br> iPhone 6s Plus <br> iPhone 7 <br> iPhone 7 Plus <br> iPhone 8 <br> iPhone 8 Plus <br> iPhone SE <br> iPhone X <br> iPad Air <br> iPad Air 2 <br> iPad (5th generation) <br> iPad Pro (9.7-inch) <br> iPad Pro (12.9-inch) <br> iPad Pro (12.9-inch) (2nd generation) <br> iPad Pro (10.5-inch) |
|
||||
| iOS 11.4 (15F79) | 9.4, 9.4.1 | iPhone 5s <br> iPhone 6 <br> iPhone 6 Plus <br> iPhone 6s <br> iPhone 6s Plus <br> iPhone 7 <br> iPhone 7 Plus <br> iPhone 8 <br> iPhone 8 Plus <br> iPhone SE <br> iPhone X <br> iPad Air <br> iPad Air 2 <br> iPad (5th generation) <br> iPad Pro (9.7-inch) <br> iPad Pro (12.9-inch) <br> iPad Pro (12.9-inch) (2nd generation) <br> iPad Pro (10.5-inch) |
|
||||
| iOS 12.0 (16A366) | 10.0 | iPhone 5s<br>iPhone 6<br>iPhone 6 Plus<br>iPhone 6s<br>iPhone 6s Plus<br>iPhone 7<br>iPhone 7 Plus<br>iPhone SE<br>iPhone 8<br>iPhone 8 Plus<br>iPhone X<br>iPhone XR<br>iPhone XS<br>iPhone XS Max<br>iPad Air<br>iPad Air 2<br>iPad (5th generation)<br>iPad Pro (9.7-inch)<br>iPad Pro (10.5-inch)<br>iPad Pro (11-inch)<br>iPad Pro (12.9-inch)<br>iPad Pro (12.9-inch) (2nd generation)<br>iPad (6th generation) |
|
||||
| iOS 12.1 (16B91) | 10.1 | iPhone 5s<br>iPhone 6<br>iPhone 6 Plus<br>iPhone 6s<br>iPhone 6s Plus<br>iPhone 7<br>iPhone 7 Plus<br>iPhone SE<br>iPhone 8<br>iPhone 8 Plus<br>iPhone X<br>iPhone X<br>iPhone XS<br>iPhone XS Max<br>iPhone XR<br>iPad Air<br>iPad Air 2<br>iPad (5th generation)<br>iPad Pro (9.7-inch)<br>iPad Pro (12.9-inch)<br>iPad Pro (12.9-inch) (2nd generation)<br>iPad Pro (10.5-inch)<br>iPad (6th generation)<br>iPad Pro (11-inch)<br>iPad Pro (12.9-inch) (3rd generation) |
|
||||
| tvOS 10.2 (14W260) | 8.3.3 | Apple TV 1080p |
|
||||
| tvOS 11.0 (15J380) | 9.0, 9.0.1 | Apple TV <br> Apple TV 4K <br> Apple TV 4K (at 1080p) |
|
||||
| tvOS 11.1 (15J580) | 9.1 | Apple TV <br> Apple TV 4K <br> Apple TV 4K (at 1080p) |
|
||||
| tvOS 11.2 (15K104) | 9.2 | Apple TV <br> Apple TV 4K <br> Apple TV 4K (at 1080p) |
|
||||
| tvOS 11.3 (15L211) | 9.3, 9.3.1 | Apple TV <br> Apple TV 4K <br> Apple TV 4K (at 1080p) |
|
||||
| tvOS 11.4 (15L576) | 9.4, 9.4.1 | Apple TV <br> Apple TV 4K <br> Apple TV 4K (at 1080p) |
|
||||
| tvOS 12.0 (16J364) | 10.0 | Apple TV <br> Apple TV 4K <br> Apple TV 4K (at 1080p) |
|
||||
| tvOS 12.1 (16J602) | 10.1 | Apple TV <br> Apple TV 4K <br> Apple TV 4K (at 1080p) |
|
||||
| watchOS 3.2 (14V243) | 8.3.3 | Apple Watch - 38mm <br> Apple Watch - 42mm <br> Apple Watch Series 2 - 38mm <br> Apple Watch Series 2 - 42mm |
|
||||
| watchOS 4.0 (15R372) | 9.0, 9.0.1 | Apple Watch - 38mm <br> Apple Watch - 42mm <br> Apple Watch Series 2 - 38mm <br> Apple Watch Series 2 - 42mm <br> Apple Watch Series 3 - 38mm <br> Apple Watch Series 3 - 42mm |
|
||||
| watchOS 4.1 (15R844) | 9.1 | Apple Watch - 38mm <br> Apple Watch - 42mm <br> Apple Watch Series 2 - 38mm <br> Apple Watch Series 2 - 42mm <br> Apple Watch Series 3 - 38mm <br> Apple Watch Series 3 - 42mm |
|
||||
| watchOS 4.2 (15S100) | 9.2 | Apple Watch - 38mm <br> Apple Watch - 42mm <br> Apple Watch Series 2 - 38mm <br> Apple Watch Series 2 - 42mm <br> Apple Watch Series 3 - 38mm <br> Apple Watch Series 3 - 42mm |
|
||||
| watchOS 4.3 (15T212) | 9.3, 9.3.1, 9.4, 9.4.1 | Apple Watch - 38mm <br> Apple Watch - 42mm <br> Apple Watch Series 2 - 38mm <br> Apple Watch Series 2 - 42mm <br> Apple Watch Series 3 - 38mm <br> Apple Watch Series 3 - 42mm |
|
||||
| watchOS 5.0 (16R363) | 10.0 | Apple Watch Series 2 - 38mm <br> Apple Watch Series 2 - 42mm <br> Apple Watch Series 3 - 38mm <br> Apple Watch Series 3 - 42mm <br> Apple Watch Series 4 - 40mm <br> Apple Watch Series 4 - 44mm |
|
||||
| watchOS 5.1 (16R591) | 10.1 | Apple Watch Series 2 - 38mm <br> Apple Watch Series 2 - 42mm <br> Apple Watch Series 3 - 38mm <br> Apple Watch Series 3 - 42mm <br> Apple Watch Series 4 - 40mm <br> Apple Watch Series 4 - 44mm |
|
||||
|
||||
#### How to install additional simulators?
|
||||
Image contains only default simulators for each Xcode version. To install a specific simulator for all Xcode version, use xcversion tool:
|
||||
```
|
||||
xcversion simulators --install='iOS 8.4'
|
||||
```
|
||||
**!** - The installation of some simulators may cause compatibility issues.
|
||||
|
||||
### Device Pairs
|
||||
|
||||
| Watch | Phone |
|
||||
|-----------------------------|----------------|
|
||||
| Apple Watch - 38mm | iPhone 6s |
|
||||
| Apple Watch - 42mm | iPhone 6s Plus |
|
||||
| Apple Watch Series 2 - 38mm | iPhone 7 |
|
||||
| Apple Watch Series 2 - 42mm | iPhone 7 Plus |
|
||||
| Apple Watch Series 3 - 38mm | iPhone 8 |
|
||||
| Apple Watch Series 3 - 42mm | iPhone 8 Plus |
|
||||
| Apple Watch Series 4 - 40mm | iPhone XS |
|
||||
| Apple Watch Series 4 - 44mm | iPhone XS Max |
|
||||
|
||||
## Android
|
||||
|
||||
### Android SDK Tools
|
||||
|
||||
| Package name | Description |
|
||||
|-----------------------|---------------------------------------------|
|
||||
| tools | Android SDK Tools, revision 26.1.1 |
|
||||
|
||||
### Android SDK Platform-tools
|
||||
|
||||
| Package name | Description |
|
||||
|-----------------------|---------------------------------------------|
|
||||
| platform-tools | Android SDK Platform-tools, revision 29.0.4 |
|
||||
|
||||
### Android SDK Platforms
|
||||
|
||||
| Package name | Description |
|
||||
|-----------------------|-------------------------------------------|
|
||||
| android-15 | Android SDK Platform 15, Revision 5 |
|
||||
| android-16 | Android SDK Platform 16, Revision 5 |
|
||||
| android-17 | Android SDK Platform 17, Revision 3 |
|
||||
| android-18 | Android SDK Platform 18, Revision 3 |
|
||||
| android-19 | Android SDK Platform 19, Revision 4 |
|
||||
| android-20 | Android SDK Platform 20, Revision 2 |
|
||||
| android-21 | Android SDK Platform 21, Revision 2 |
|
||||
| android-22 | Android SDK Platform 22, Revision 2 |
|
||||
| android-23 | Android SDK Platform 23, Revision 3 |
|
||||
| android-24 | Android SDK Platform 24, Revision 2 |
|
||||
| android-25 | Android SDK Platform 25, Revision 3 |
|
||||
| android-26 | Android SDK Platform 26, Revision 2 |
|
||||
| android-27 | Android SDK Platform 27, Revision 3 |
|
||||
| android-28 | Android SDK Platform 28, Revision 6 |
|
||||
| android-29 | Android SDK Platform 29, Revision 3 |
|
||||
|
||||
### Android SDK Build-tools
|
||||
|
||||
| Package name | Description |
|
||||
|-----------------------|-------------------------------------------|
|
||||
| build-tools-19.1.0 | Android SDK Build-tools, Revision 19.1.0 |
|
||||
| build-tools-20.0.0 | Android SDK Build-tools, Revision 20.0.0 |
|
||||
| build-tools-21.1.2 | Android SDK Build-tools, Revision 21.1.2 |
|
||||
| build-tools-22.0.1 | Android SDK Build-tools, Revision 22.0.1 |
|
||||
| build-tools-23.0.1 | Android SDK Build-tools, Revision 23.0.1 |
|
||||
| build-tools-23.0.2 | Android SDK Build-tools, Revision 23.0.2 |
|
||||
| build-tools-23.0.3 | Android SDK Build-tools, Revision 23.0.3 |
|
||||
| build-tools-24.0.0 | Android SDK Build-tools, Revision 24.0.0 |
|
||||
| build-tools-24.0.1 | Android SDK Build-tools, Revision 24.0.1 |
|
||||
| build-tools-24.0.2 | Android SDK Build-tools, Revision 24.0.2 |
|
||||
| build-tools-24.0.3 | Android SDK Build-tools, Revision 24.0.3 |
|
||||
| build-tools-25.0.0 | Android SDK Build-tools, Revision 25.0.0 |
|
||||
| build-tools-25.0.1 | Android SDK Build-tools, Revision 25.0.1 |
|
||||
| build-tools-25.0.2 | Android SDK Build-tools, Revision 25.0.2 |
|
||||
| build-tools-25.0.3 | Android SDK Build-tools, Revision 25.0.3 |
|
||||
| build-tools-26.0.0 | Android SDK Build-tools, Revision 26.0.0 |
|
||||
| build-tools-26.0.1 | Android SDK Build-tools, Revision 26.0.1 |
|
||||
| build-tools-26.0.2 | Android SDK Build-tools, Revision 26.0.2 |
|
||||
| build-tools-26.0.3 | Android SDK Build-tools, Revision 26.0.3 |
|
||||
| build-tools-27.0.0 | Android SDK Build-tools, Revision 27.0.0 |
|
||||
| build-tools-27.0.1 | Android SDK Build-tools, Revision 27.0.1 |
|
||||
| build-tools-27.0.2 | Android SDK Build-tools, Revision 27.0.2 |
|
||||
| build-tools-27.0.3 | Android SDK Build-tools, Revision 27.0.3 |
|
||||
| build-tools-28.0.0 | Android SDK Build-tools, Revision 28.0.0 |
|
||||
| build-tools-28.0.1 | Android SDK Build-tools, Revision 28.0.1 |
|
||||
| build-tools-28.0.2 | Android SDK Build-tools, Revision 28.0.2 |
|
||||
| build-tools-28.0.3 | Android SDK Build-tools, Revision 28.0.3 |
|
||||
| build-tools-29.0.0 | Android SDK Build-tools, Revision 29.0.0 |
|
||||
| build-tools-29.0.1 | Android SDK Build-tools, Revision 29.0.1 |
|
||||
| build-tools-29.0.2 | Android SDK Build-tools, Revision 29.0.2 |
|
||||
|
||||
### Utils
|
||||
|
||||
| Package name | Description |
|
||||
|-----------------------|-------------------------------------------|
|
||||
| cmake | 3.6.4111459 |
|
||||
| lldb | 3.1.4508709 |
|
||||
| ndk-bundle | 18.1.5063045 |
|
||||
| ProGuard | 5.3.3 |
|
||||
| Android Emulator | 29.2.1 |
|
||||
|
||||
### Google APIs
|
||||
|
||||
| Package name | Description |
|
||||
|-----------------------|-------------------------------------------|
|
||||
| google_apis-google-21 | Google APIs, Android API 21, revision 1 |
|
||||
| google_apis-google-22 | Google APIs, Android API 22, revision 1 |
|
||||
| google_apis-google-23 | Google APIs, Android API 23, revision 1 |
|
||||
| google_apis-google-24 | Google APIs, Android API 24, revision 1 |
|
||||
|
||||
### Extra packages
|
||||
|
||||
| Package name | Description |
|
||||
|-----------------------------------|------------------------------------------|
|
||||
| extra-android-m2repository | Android Support Repository, revision 47 |
|
||||
| extra-google-google_play_services | Google Play services, revision 49 |
|
||||
| extra-google-m2repository | Google Repository, revision 58 |
|
||||
| Hardware_Accelerated_Execution_Manager | Intel x86 Emulator Accelerator 7.5.1 |
|
||||
|
||||
## Xamarin
|
||||
|
||||
### Visual Studio for Mac
|
||||
|
||||
- 8.3.4.8
|
||||
|
||||
### Mono
|
||||
|
||||
- 6.4.0
|
||||
- 6.0.0
|
||||
- 5.18.1
|
||||
- 5.16.1
|
||||
- 5.12.0
|
||||
- 5.10.1
|
||||
- 5.8.1
|
||||
- 5.8.0
|
||||
- 5.4.1.7
|
||||
- 5.4.0.201
|
||||
- 5.2.0.224
|
||||
- 5.0.1.1
|
||||
- 4.8.1.0
|
||||
|
||||
### Xamarin.iOS SDK
|
||||
|
||||
- 13.4.0.2
|
||||
- 13.2.0.47
|
||||
- 12.14.0.114
|
||||
- 12.8.0.2
|
||||
- 12.6.0.25
|
||||
- 12.2.1.16
|
||||
- 12.2.1.11
|
||||
- 12.0.0.15
|
||||
- 11.14.0.13
|
||||
- 11.12.0.4
|
||||
- 11.9.1.24
|
||||
- 11.8.0.20
|
||||
- 11.6.1.4
|
||||
- 11.2.0.11
|
||||
- 11.0.0.0
|
||||
- 10.10.0.36
|
||||
- 10.6.0.10
|
||||
|
||||
|
||||
### Xamarin.Android SDK
|
||||
|
||||
- 10.0.3.0
|
||||
- 9.4.1.0
|
||||
- 9.3.0-23
|
||||
- 9.2.3-0
|
||||
- 9.1.8-0
|
||||
- 9.0.0-20
|
||||
- 9.0.0-18
|
||||
- 8.3.3-2
|
||||
- 8.2.0-16
|
||||
- 8.2.0-15
|
||||
- 8.1.5-0
|
||||
- 8.0.0-33
|
||||
- 7.4.5-1
|
||||
- 7.3.1-2
|
||||
- 7.1.0-43
|
||||
|
||||
### Xamarin.Mac SDK
|
||||
|
||||
- 6.4.0.2
|
||||
- 6.2.0.47
|
||||
- 5.16.1.24
|
||||
- 5.8.0.0
|
||||
- 5.6.0.25
|
||||
- 5.3.1.28
|
||||
- 5.2.1.16
|
||||
- 5.2.1.9
|
||||
- 4.6.0.13
|
||||
- 4.4.1.193
|
||||
- 4.2.1.28
|
||||
- 4.2.0.20
|
||||
- 4.0.0.216
|
||||
- 3.8.0.49
|
||||
- 3.6.3.3
|
||||
- 3.4.0.36
|
||||
- 3.0.0.398
|
||||
|
||||
### Unit Test Framework
|
||||
|
||||
- NUnit: 3.6.1
|
||||
390
images/macos/macos-10.14-Readme.md
Normal file
390
images/macos/macos-10.14-Readme.md
Normal file
@@ -0,0 +1,390 @@
|
||||
# Azure Pipelines hosted macOS image
|
||||
|
||||
The following software is installed on machines in the Azure Pipelines **macOS-10.14** VM image ('Hosted macOS' pool).
|
||||
|
||||
#### Xcode 11.1 set by default
|
||||
|
||||
## Operating System
|
||||
|
||||
- OS X 10.14.6 (18G103) **Mojave**
|
||||
|
||||
## Installed Software
|
||||
|
||||
### Language and Runtime
|
||||
|
||||
- Java 1.7: OpenJDK Runtime Environment (Zulu 7.34.0.5-CA-macosx) (build 1.7.0_242-b7)
|
||||
- Java 1.8: OpenJDK Runtime Environment (Zulu 8.42.0.21-CA-macosx) (build 1.8.0_232-b18) (default)
|
||||
- Java 11: OpenJDK Runtime Environment Zulu11.35+13-CA (build 11.0.5+10-LTS)
|
||||
- Java 12: OpenJDK Runtime Environment Zulu12.3+11-CA (build 12.0.2+3)
|
||||
- Java 13: OpenJDK Runtime Environment Zulu13.28+11-CA (build 13.0.1+10-MTS)
|
||||
- Node.js 6.17.0
|
||||
- NVM 0.33.11
|
||||
- NVM - Installed node versions:
|
||||
v6.17.1
|
||||
v8.16.2
|
||||
v10.17.0
|
||||
v12.13.0
|
||||
- PowerShell 6.2.3
|
||||
- Python 2.7.16
|
||||
- Python 3.7.4
|
||||
- Ruby 2.6.5p114
|
||||
- .NET Core SDK 1.0.1 1.0.4 1.1.10 1.1.11 1.1.12 1.1.13 1.1.4 1.1.5 1.1.7 1.1.8 1.1.9 2.0.0 2.0.3 2.1.100 2.1.101 2.1.102 2.1.103 2.1.104 2.1.105 2.1.2 2.1.200 2.1.201 2.1.202 2.1.300 2.1.301 2.1.302 2.1.4 2.1.400 2.1.401 2.1.402 2.1.403 2.1.500 2.1.502 2.1.503 2.1.504 2.1.505 2.2.100 2.2.101 2.2.102 2.2.103 2.2.104 2.2.105
|
||||
- Go 1.13.3
|
||||
|
||||
|
||||
### Package Management
|
||||
|
||||
- Bundler 2.0.2
|
||||
- Carthage 0.34.0
|
||||
- CocoaPods 1.8.4
|
||||
- Homebrew 2.1.15
|
||||
- NPM 3.10.10
|
||||
- Yarn 1.19.1
|
||||
- NuGet 4.7.0.5148
|
||||
- pip 19.1.1(python 2.7)
|
||||
- pip 19.2.3(python 3.7)
|
||||
- Miniconda 4.7.12
|
||||
|
||||
### Project Management
|
||||
|
||||
- Apache Maven 3.6.2
|
||||
- Gradle 5.6.3
|
||||
|
||||
### Utilities
|
||||
|
||||
- curl 7.66.0 (libcurl/7.66.0 SecureTransport zlib/1.2.11)
|
||||
- Git 2.23.0
|
||||
- Git LFS 2.8.0
|
||||
- GNU Wget 1.20.3
|
||||
- Subversion (SVN) 1.12.2
|
||||
- GNU parallel 20190922
|
||||
|
||||
### Tools
|
||||
|
||||
- fastlane 2.134.0
|
||||
- App Center CLI 1.2.2
|
||||
- Azure-CLI 2.0.75
|
||||
|
||||
### Pre-cached tools
|
||||
|
||||
- Python (available through the [setup-python](https://github.com/actions/setup-python/blob/master/README.md) task)
|
||||
- 2.7.16
|
||||
- 3.4.10
|
||||
- 3.5.7
|
||||
- 3.6.9
|
||||
- 3.7.5
|
||||
- 3.8.0
|
||||
- pypy2
|
||||
- pypy3
|
||||
- Ruby (available through the [setup-ruby](https://github.com/actions/setup-ruby/blob/master/README.md) task)
|
||||
- 2.3.8
|
||||
- 2.4.6
|
||||
- 2.5.5
|
||||
- 2.6.3
|
||||
|
||||
### Xcode
|
||||
|
||||
| Version | Build | Path |
|
||||
|------------------------|---------|---------------------------------|
|
||||
| 11.2_beta 2 | 11B44 | /Applications/Xcode_11.2.app |
|
||||
| 11.1 | 11A1027 | /Applications/Xcode_11.1.app |
|
||||
| 11.0 | 11A420a | /Applications/Xcode_11.app |
|
||||
| 10.3 | 10G8 | /Applications/Xcode_10.3.app |
|
||||
| 10.2.1 | 10E1001 | /Applications/Xcode_10.2.1.app |
|
||||
| 10.2 | 10E125 | /Applications/Xcode_10.2.app |
|
||||
| 10.1 | 10B61 | /Applications/Xcode_10.1.app |
|
||||
| 10.0 | 10A255 | /Applications/Xcode_10.app |
|
||||
| 9.4.1 | 9F2000 | /Applications/Xcode_9.4.1.app |
|
||||
|
||||
### Xcode Support Tools
|
||||
|
||||
- Nomad CLI 3.0.6
|
||||
- Nomad CLI IPA 0.14.3
|
||||
- xcpretty 0.3.0
|
||||
- xctool 0.3.6
|
||||
- xcversion 2.6.1
|
||||
|
||||
### Installed SDKs
|
||||
|
||||
| SDK | SDK name |Xcode Version |
|
||||
|---------------------------|-------------|--------------|
|
||||
| macOS 10.13 | macosx10.13 | 9.4.1 |
|
||||
| macOS 10.14 | macosx10.14 | 10.0, 10.1, 10.2, 10.2.1, 10.3 |
|
||||
| macOS 10.15 | macosx10.15 | 11.0, 11.1, 11.2_beta 2 |
|
||||
| iOS 11.4 | iphoneos11.4 | 9.4.1 |
|
||||
| iOS 12.0 | iphoneos12.0 | 10.0 |
|
||||
| iOS 12.1 | iphoneos12.1 | 10.1 |
|
||||
| iOS 12.2 | iphoneos12.2 | 10.2, 10.2.1|
|
||||
| iOS 12.4 | iphoneos12.4 | 10.3 |
|
||||
| iOS 13.0 | iphoneos13.0 | 11.0 |
|
||||
| iOS 13.1 | iphoneos13.1 | 11.1 |
|
||||
| iOS 13.2 | iphoneos13.2 | 11.2_beta 2 |
|
||||
| iOS Simulator 11.4 | iphonesimulator11.4 | 9.4.1 |
|
||||
| iOS Simulator 12.0 | iphonesimulator12.0 | 10.0 |
|
||||
| iOS Simulator 12.1 | iphonesimulator12.1 | 10.1 |
|
||||
| iOS Simulator 12.2 | iphonesimulator12.2 | 10.2, 10.2.1 |
|
||||
| iOS Simulator 12.4 | iphonesimulator12.4 | 10.3 |
|
||||
| iOS Simulator 13.0 | iphonesimulator13.0 | 11.0 |
|
||||
| iOS Simulator 13.1 | iphonesimulator13.1 | 11.1 |
|
||||
| iOS Simulator 13.2 | iphonesimulator13.2 | 11.2_beta 2 |
|
||||
| tvOS 11.4 | appletvos11.4 | 9.4.1 |
|
||||
| tvOS 12.0 | appletvos12.0 | 10.0 |
|
||||
| tvOS 12.1 | appletvos12.1 | 10.1 |
|
||||
| tvOS 12.2 | appletvos12.2 | 10.2, 10.2.1 |
|
||||
| tvOS 12.4 | appletvos12.4 | 10.3 |
|
||||
| tvOS 13.0 | appletvos13.0 | 11.0, 11.1 |
|
||||
| tvOS 13.2 | appletvos13.2 | 11.2_beta 2 |
|
||||
| tvOS Simulator 11.4 | appletvsimulator11.4 | 9.4.1 |
|
||||
| tvOS Simulator 12.0 | appletvsimulator12.0 | 10.0 |
|
||||
| tvOS Simulator 12.1 | appletvsimulator12.1 | 10.1 |
|
||||
| tvOS Simulator 12.2 | appletvsimulator12.2 | 10.2, 10.2.1 |
|
||||
| tvOS Simulator 12.4 | appletvsimulator12.4 | 10.3 |
|
||||
| tvOS Simulator 13.0 | appletvsimulator13.0 | 11.0, 11.1 |
|
||||
| tvOS Simulator 13.2 | appletvsimulator13.2 | 11.2_beta 2 |
|
||||
| watchOS 4.3 | watchos4.3 | 9.4.1 |
|
||||
| watchOS 5.0 | watchos5.0 | 10.0 |
|
||||
| watchOS 5.1 | watchos5.1 | 10.1 |
|
||||
| watchOS 5.2 | watchos5.2 | 10.2, 10.2.1 |
|
||||
| watchOS 5.3 | watchos5.3 | 10.3 |
|
||||
| watchOS 6.0 | watchos6.0 | 11.0, 11.1 |
|
||||
| watchOS 6.1 | watchos6.1 | 11.2_beta 2 |
|
||||
| watchOS Simulator 4.3 | watchsimulator4.3 | 9.4.1 |
|
||||
| watchOS Simulator 5.0 | watchsimulator5.0 | 10.0 |
|
||||
| watchOS Simulator 5.1 | watchsimulator5.1 | 10.1 |
|
||||
| watchOS Simulator 5.2 | watchsimulator5.2 | 10.2, 10.2.1 |
|
||||
| watchOS Simulator 5.3 | watchsimulator5.3 | 10.3 |
|
||||
| watchOS Simulator 6.0 | watchsimulator6.0 | 11.0, 11.1 |
|
||||
| watchOS Simulator 6.1 | watchsimulator6.1 | 11.2_beta 2 |
|
||||
| DriverKit 19.0 | driverkit.macosx19.0 | 11.0, 11.1, 11.2_beta 2 |
|
||||
|
||||
|
||||
### Installed Simulators
|
||||
|
||||
#### Runtimes
|
||||
|
||||
| OS | Xcode Version | Simulators |
|
||||
|---------|---------------------------------|------------|
|
||||
| iOS 8.4 (12H141) | 9.4.1, 10.0, 10.1, 10.2, 10.2.1, 11, 11.1, 11.2_beta 2 | iPhone 4s<br>iPhone 5<br>iPhone 5s<br>iPhone 6<br>iPhone 6 Plus<br>iPad 2<br>iPad Retina<br>iPad Air |
|
||||
| iOS 9.0 (13A344) | 9.4.1, 10.0, 10.1, 10.2, 10.2.1, 11, 11.1, 11.2_beta 2 | iPhone 4s<br>iPhone 5<br>iPhone 5s<br>iPhone 6<br>iPhone 6 Plus<br>iPhone 6s<br>iPhone 6s Plus<br>iPad 2<br>iPad Retina<br>iPad Air<br>iPad Air 2 |
|
||||
| iOS 9.1 (13B143)<br>iOS 9.2 (13C75)<br>iOS 9.3 (13E233) | 9.4.1, 10.0, 10.1, 10.2, 10.2.1, 11, 11.1, 11.2_beta 2 | iPhone 4s<br>iPhone 5<br>iPhone 5s<br>iPhone 6<br>iPhone 6 Plus<br>iPhone 6s<br>iPhone 6s Plus<br>iPad 2<br>iPad Retina<br>iPad Air<br>iPad Air 2<br>iPad Pro |
|
||||
| iOS 10.0 (14A345) | 9.4.1, 10.0, 10.1, 10.2, 10.2.1, 11, 11.1, 11.2_beta 2 | iPhone 5<br>iPhone 5s<br>iPhone 6<br>iPhone 6 Plus<br>iPhone 6s<br>iPhone 6s Plus<br>iPhone SE<br>iPad Air<br>iPad Air 2<br>iPad Pro (9.7 inch)<br>iPad Pro (12.9 inch) |
|
||||
| iOS 10.1 (14B72)<br>iOS 10.2 (14C89) | 9.4.1, 10.0, 10.1, 10.2, 10.2.1, 11, 11.1, 11.2_beta 2 | iPhone 5<br>iPhone 5s<br>iPhone 6<br>iPhone 6 Plus<br>iPhone 6s<br>iPhone 6s Plus<br>iPhone 7<br>iPhone 7 Plus<br>iPhone SE<br>iPad Air<br>iPad Air 2<br>iPad Pro (9.7 inch)<br>iPad Pro (12.9 inch) |
|
||||
| iOS 11.4 (15F79) | 9.4.1 | iPhone 5s<br>iPhone 6<br>iPhone 6 Plus<br>iPhone 6s<br>iPhone 6s Plus<br>iPhone 7<br>iPhone 7 Plus<br>iPhone SE<br>iPhone 8<br>iPhone 8 Plus<br>iPhone X<br>iPad Air<br>iPad Air 2<br>iPad (5th generation)<br>iPad Pro (9.7-inch)<br>iPad Pro (12.9-inch)<br>iPad Pro (12.9-inch) (2nd generation)<br>iPad Pro (10.5-inch) |
|
||||
| iOS 12.0 (16A5288q) | 10.0 | iPhone 5s<br>iPhone 6<br>iPhone 6 Plus<br>iPhone 6s<br>iPhone 6s Plus<br>iPhone 7<br>iPhone 7 Plus<br>iPhone SE<br>iPhone 8<br>iPhone 8 Plus<br>iPhone X<br>iPhone XR<br>iPhone XS<br>iPhone XS Max<br>iPad Air<br>iPad Air 2<br>iPad (5th generation)<br>iPad Pro (9.7-inch)<br>iPad Pro (10.5-inch)<br>iPad Pro (11-inch)<br>iPad Pro (12.9-inch)<br>iPad Pro (12.9-inch) (2nd generation)<br>iPad (6th generation) |
|
||||
| iOS 12.1 (16B91) | 10.1 | iPhone 5s<br>iPhone 6<br>iPhone 6 Plus<br>iPhone 6s<br>iPhone 6s Plus<br>iPhone 7<br>iPhone 7 Plus<br>iPhone SE<br>iPhone 8<br>iPhone 8 Plus<br>iPhone X<br>iPhone X<br>iPhone XS<br>iPhone XS Max<br>iPhone XR<br>iPad Air<br>iPad Air 2<br>iPad (5th generation)<br>iPad Pro (9.7-inch)<br>iPad Pro (12.9-inch)<br>iPad Pro (12.9-inch) (2nd generation)<br>iPad Pro (10.5-inch)<br>iPad (6th generation)<br>iPad Pro (11-inch)<br>iPad Pro (12.9-inch) (3rd generation) |
|
||||
| iOS 12.2 (16E226)<br>iOS 12.4 (16G73) | 10.2, 10.2.1<br>10.3 | iPhone 5s<br>iPhone 6<br>iPhone 6 Plus<br>iPhone 6s<br>iPhone 6s Plus<br>iPhone 7<br>iPhone 7 Plus<br>iPhone SE<br>iPhone 8<br>iPhone 8 Plus<br>iPhone X<br>iPhone X<br>iPhone XS<br>iPhone XS Max<br>iPhone XR<br>iPad Air<br>iPad Air 2<br>iPad Air (3rd generation)<br>iPad mini 2<br>iPad mini 3<br>iPad mini 4<br>iPad mini (5th generation)<br>iPad (5th generation)<br>iPad Pro (9.7-inch)<br>iPad Pro (12.9-inch)<br>iPad Pro (12.9-inch) (2nd generation)<br>iPad Pro (10.5-inch)<br>iPad (6th generation)<br>iPad Pro (11-inch)<br>iPad Pro (12.9-inch) (3rd generation) |
|
||||
| iOS 13.0 (17A577a) | 11 | iPhone 8<br>iPhone 8 Plus<br>iPhone 11<br>iPhone 11 Pro<br>iPhone 11 Pro Max<br>iPad Pro (9.7-inch)<br>iPad Pro<br>iPad Pro (12.9-inch) (3rd generation)<br>iPad Air (3rd generation) |
|
||||
| iOS 13.1 (17A844) | 11.1 | iPhone 8<br>iPhone 8 Plus<br>iPhone 11<br>iPhone 11 Pro<br>iPhone 11 Pro Max<br>iPad Pro (9.7-inch)<br>iPad Pro<br>iPad Pro (12.9-inch) (3rd generation)<br>iPad Air (3rd generation) |
|
||||
| iOS 13.2 (17B5068e) | 11.2_beta 2 | iPhone 8<br>iPhone 8 Plus<br>iPhone 11<br>iPhone 11 Pro<br>iPhone 11 Pro Max<br>iPad Pro (9.7-inch)<br>iPad Pro<br>iPad Pro (12.9-inch) (3rd generation)<br>iPad Air (3rd generation) |
|
||||
| tvOS 11.4 (15L576)<br>tvOS 12.0 (16J5283n)<br>tvOS 12.1 (16J602)<br>tvOS 12.2 (16L225)<br>tvOS 12.4 (16M567)<br>tvOS 13.0 (17J559)<br>tvOS 13.2 (17K5068b) | 9.4.1<br>10.0<br>10.1<br>10.2, 10.2.1<br>10.3<br>11.0<br>11.1 | Apple TV<br>Apple TV 4K<br>Apple TV 4K (at 1080p) |
|
||||
| watchOS 4.3 (15T212) | 9.4.1 | Apple Watch 38mm<br>Apple Watch 42mm<br>Apple Watch Series 2 38mm<br>Apple Watch Series 2 42mm<br>Apple Watch Series 3 38mm<br>Apple Watch Series 3 42mm |
|
||||
| watchOS 5.0 (16R5283q)<br>watchOS 5.1 (16R591)<br>watchOS 5.2 (16T224)<br>watchOS 5.3 (16U567) | 10.0<br>10.1<br>10.2, 10.2.1<br>10.3 | Apple Watch Series 2 38mm<br>Apple Watch Series 2 42mm<br>Apple Watch Series 3 38mm<br>Apple Watch Series 3 42mm<br>Apple Watch Series 4 40mm<br>Apple Watch Series 4 44mm |
|
||||
| watchOS 6.0 (17R566)<br><br>watchOS 6.1 (17S5068e) | 11.0<br>11.1<br>11.2_beta 2 | Apple Watch Series 4 40mm<br>Apple Watch Series 4 44mm<br>Apple Watch Series 5 40mm<br>Apple Watch Series 5 44mm |
|
||||
|
||||
|
||||
#### How to install additional simulators?
|
||||
Image contains only default simulators for each Xcode version. To install a specific simulator for all Xcode version, use xcversion tool:
|
||||
```
|
||||
xcversion simulators --install='iOS 8.4'
|
||||
```
|
||||
**!** - The installation of some simulators may cause compatibility issues.
|
||||
|
||||
### Device Pairs
|
||||
|
||||
| Watch | Phone |
|
||||
|-----------------------------|-------------------|
|
||||
| Apple Watch - 38mm | iPhone 6s |
|
||||
| Apple Watch - 42mm | iPhone 6s Plus |
|
||||
| Apple Watch Series 2 - 38mm | iPhone 7 |
|
||||
| Apple Watch Series 2 - 42mm | iPhone 7 Plus |
|
||||
| Apple Watch Series 3 - 38mm | iPhone 8 |
|
||||
| Apple Watch Series 3 - 42mm | iPhone 8 Plus |
|
||||
| Apple Watch Series 4 - 40mm | iPhone XS |
|
||||
| Apple Watch Series 4 - 44mm | iPhone XS Max |
|
||||
| Apple Watch Series 5 - 40mm | iPhone 11 Pro |
|
||||
| Apple Watch Series 5 - 44mm | iPhone 11 Pro Max |
|
||||
|
||||
## Android
|
||||
|
||||
### Android SDK Tools
|
||||
|
||||
| Package name | Description |
|
||||
|-----------------------|---------------------------------------------|
|
||||
| tools | Android SDK Tools, revision 26.1.1 |
|
||||
|
||||
### Android SDK Platform-tools
|
||||
|
||||
| Package name | Description |
|
||||
|-----------------------|---------------------------------------------|
|
||||
| platform-tools | Android SDK Platform-tools, revision 29.0.4 |
|
||||
|
||||
### Android SDK Platforms
|
||||
|
||||
| Package name | Description |
|
||||
|-----------------------|-------------------------------------------|
|
||||
| android-15 | Android SDK Platform 15, Revision 5 |
|
||||
| android-16 | Android SDK Platform 16, Revision 5 |
|
||||
| android-17 | Android SDK Platform 17, Revision 3 |
|
||||
| android-18 | Android SDK Platform 18, Revision 3 |
|
||||
| android-19 | Android SDK Platform 19, Revision 4 |
|
||||
| android-20 | Android SDK Platform 20, Revision 2 |
|
||||
| android-21 | Android SDK Platform 21, Revision 2 |
|
||||
| android-22 | Android SDK Platform 22, Revision 2 |
|
||||
| android-23 | Android SDK Platform 23, Revision 3 |
|
||||
| android-24 | Android SDK Platform 24, Revision 2 |
|
||||
| android-25 | Android SDK Platform 25, Revision 3 |
|
||||
| android-26 | Android SDK Platform 26, Revision 2 |
|
||||
| android-27 | Android SDK Platform 27, Revision 3 |
|
||||
| android-28 | Android SDK Platform 28, Revision 6 |
|
||||
| android-29 | Android SDK Platform 29, Revision 3 |
|
||||
|
||||
### Android SDK Build-tools
|
||||
|
||||
| Package name | Description |
|
||||
|-----------------------|-------------------------------------------|
|
||||
| build-tools-19.1.0 | Android SDK Build-tools, Revision 19.1.0 |
|
||||
| build-tools-20.0.0 | Android SDK Build-tools, Revision 20.0.0 |
|
||||
| build-tools-21.1.2 | Android SDK Build-tools, Revision 21.1.2 |
|
||||
| build-tools-22.0.1 | Android SDK Build-tools, Revision 22.0.1 |
|
||||
| build-tools-23.0.1 | Android SDK Build-tools, Revision 23.0.1 |
|
||||
| build-tools-23.0.2 | Android SDK Build-tools, Revision 23.0.2 |
|
||||
| build-tools-23.0.3 | Android SDK Build-tools, Revision 23.0.3 |
|
||||
| build-tools-24.0.0 | Android SDK Build-tools, Revision 24.0.0 |
|
||||
| build-tools-24.0.1 | Android SDK Build-tools, Revision 24.0.1 |
|
||||
| build-tools-24.0.2 | Android SDK Build-tools, Revision 24.0.2 |
|
||||
| build-tools-24.0.3 | Android SDK Build-tools, Revision 24.0.3 |
|
||||
| build-tools-25.0.0 | Android SDK Build-tools, Revision 25.0.0 |
|
||||
| build-tools-25.0.1 | Android SDK Build-tools, Revision 25.0.1 |
|
||||
| build-tools-25.0.2 | Android SDK Build-tools, Revision 25.0.2 |
|
||||
| build-tools-25.0.3 | Android SDK Build-tools, Revision 25.0.3 |
|
||||
| build-tools-26.0.0 | Android SDK Build-tools, Revision 26.0.0 |
|
||||
| build-tools-26.0.1 | Android SDK Build-tools, Revision 26.0.1 |
|
||||
| build-tools-26.0.2 | Android SDK Build-tools, Revision 26.0.2 |
|
||||
| build-tools-26.0.3 | Android SDK Build-tools, Revision 26.0.3 |
|
||||
| build-tools-27.0.0 | Android SDK Build-tools, Revision 27.0.0 |
|
||||
| build-tools-27.0.1 | Android SDK Build-tools, Revision 27.0.1 |
|
||||
| build-tools-27.0.2 | Android SDK Build-tools, Revision 27.0.2 |
|
||||
| build-tools-27.0.3 | Android SDK Build-tools, Revision 27.0.3 |
|
||||
| build-tools-28.0.0 | Android SDK Build-tools, Revision 28.0.0 |
|
||||
| build-tools-28.0.1 | Android SDK Build-tools, Revision 28.0.1 |
|
||||
| build-tools-28.0.2 | Android SDK Build-tools, Revision 28.0.2 |
|
||||
| build-tools-28.0.3 | Android SDK Build-tools, Revision 28.0.3 |
|
||||
| build-tools-29.0.0 | Android SDK Build-tools, Revision 29.0.0 |
|
||||
| build-tools-29.0.1 | Android SDK Build-tools, Revision 29.0.1 |
|
||||
| build-tools-29.0.2 | Android SDK Build-tools, Revision 29.0.2 |
|
||||
|
||||
### Utils
|
||||
|
||||
| Package name | Description |
|
||||
|-----------------------|-------------------------------------------|
|
||||
| cmake | 3.6.4111459 |
|
||||
| lldb | 2.3.3614996 |
|
||||
| ndk-bundle | 18.1.5063045 |
|
||||
| ProGuard | 5.3.3 |
|
||||
| Android Emulator | 29.2.1 |
|
||||
|
||||
### Google APIs
|
||||
|
||||
| Package name | Description |
|
||||
|-----------------------|-------------------------------------------|
|
||||
| google_apis-google-21 | Google APIs, Android API 21, revision 1 |
|
||||
| google_apis-google-22 | Google APIs, Android API 22, revision 1 |
|
||||
| google_apis-google-23 | Google APIs, Android API 23, revision 1 |
|
||||
| google_apis-google-24 | Google APIs, Android API 24, revision 1 |
|
||||
|
||||
### Extra packages
|
||||
|
||||
| Package name | Description |
|
||||
|-----------------------------------|------------------------------------------|
|
||||
| extra-android-m2repository | Android Support Repository, revision 47 |
|
||||
| extra-google-google_play_services | Google Play services, revision 49 |
|
||||
| extra-google-m2repository | Google Repository, revision 58 |
|
||||
| Hardware_Accelerated_Execution_Manager | Intel x86 Emulator Accelerator 7.3.2 |
|
||||
|
||||
## Xamarin
|
||||
|
||||
### Visual Studio for Mac
|
||||
|
||||
- 8.3.4.8
|
||||
|
||||
|
||||
### Mono
|
||||
|
||||
- 6.4.0
|
||||
- 6.0.0
|
||||
- 5.18.1
|
||||
- 5.16.1
|
||||
- 5.12.0
|
||||
- 5.10.1
|
||||
- 5.8.1
|
||||
- 5.8.0
|
||||
- 5.4.1.7
|
||||
- 5.4.0.201
|
||||
- 5.2.0.224
|
||||
- 5.0.1.1
|
||||
- 4.8.1.0
|
||||
|
||||
### Xamarin.iOS SDK
|
||||
|
||||
- 13.4.0.2
|
||||
- 13.2.0.47
|
||||
- 12.14.0.114
|
||||
- 12.10.0.157
|
||||
- 12.8.0.2
|
||||
- 12.6.0.25
|
||||
- 12.2.1.16
|
||||
- 12.2.1.11
|
||||
- 12.0.0.15
|
||||
- 11.14.0.13
|
||||
- 11.12.0.4
|
||||
- 11.9.1.24
|
||||
- 11.8.0.20
|
||||
- 11.6.1.4
|
||||
- 11.2.0.11
|
||||
- 11.0.0.0
|
||||
- 10.10.0.36
|
||||
- 10.6.0.10
|
||||
|
||||
|
||||
### Xamarin.Android SDK
|
||||
|
||||
- 10.0.3.0
|
||||
- 9.4.1.0
|
||||
- 9.3.0-23
|
||||
- 9.2.3-0
|
||||
- 9.1.8-0
|
||||
- 9.0.0-20
|
||||
- 9.0.0-18
|
||||
- 8.3.3-2
|
||||
- 8.2.0-16
|
||||
- 8.2.0-15
|
||||
- 8.1.5-0
|
||||
- 8.0.0-33
|
||||
- 7.4.5-1
|
||||
- 7.3.1-2
|
||||
- 7.1.0-43
|
||||
|
||||
### Xamarin.Mac SDK
|
||||
|
||||
- 6.4.0.2
|
||||
- 6.2.0.47
|
||||
- 5.16.1.24
|
||||
- 5.10.0.157
|
||||
- 5.8.0.0
|
||||
- 5.6.0.25
|
||||
- 5.3.1.28
|
||||
- 5.2.1.16
|
||||
- 5.2.1.9
|
||||
- 4.6.0.13
|
||||
- 4.4.1.193
|
||||
- 4.2.1.28
|
||||
- 4.2.0.20
|
||||
- 4.0.0.216
|
||||
- 3.8.0.49
|
||||
- 3.6.3.3
|
||||
- 3.4.0.36
|
||||
- 3.0.0.398
|
||||
|
||||
### Unit Test Framework
|
||||
|
||||
- NUnit: 3.6.1
|
||||
782
images/win/Windows2019-Azure.json
Normal file
782
images/win/Windows2019-Azure.json
Normal file
@@ -0,0 +1,782 @@
|
||||
{
|
||||
"variables": {
|
||||
"client_id": "{{env `ARM_CLIENT_ID`}}",
|
||||
"client_secret": "{{env `ARM_CLIENT_SECRET`}}",
|
||||
"subscription_id": "{{env `ARM_SUBSCRIPTION_ID`}}",
|
||||
"tenant_id": "{{env `ARM_TENANT_ID`}}",
|
||||
"object_id": "{{env `ARM_OBJECT_ID`}}",
|
||||
"resource_group": "{{env `ARM_RESOURCE_GROUP`}}",
|
||||
"storage_account": "{{env `ARM_STORAGE_ACCOUNT`}}",
|
||||
"temp_resource_group_name": "{{env `TEMP_RESOURCE_GROUP_NAME`}}",
|
||||
"location": "{{env `ARM_RESOURCE_LOCATION`}}",
|
||||
"ssh_password": "{{env `SSH_PASSWORD`}}",
|
||||
"virtual_network_name": "{{env `VNET_NAME`}}",
|
||||
"virtual_network_resource_group_name": "{{env `VNET_RESOURCE_GROUP`}}",
|
||||
"virtual_network_subnet_name": "{{env `VNET_SUBNET`}}",
|
||||
"private_virtual_network_with_public_ip": "{{env `PRIVATE_VIRTUAL_NETWORK_WITH_PUBLIC_IP`}}",
|
||||
"vm_size": "Standard_DS4_v2",
|
||||
|
||||
"image_folder": "C:\\image",
|
||||
"commit_file": "C:\\image\\commit.txt",
|
||||
"metadata_file": "C:\\image\\metadata.txt",
|
||||
"helper_script_folder": "C:\\Program Files\\WindowsPowerShell\\Modules\\",
|
||||
"commit_id": "LATEST",
|
||||
"install_user": "installer",
|
||||
"install_password": null,
|
||||
"capture_name_prefix": "packer",
|
||||
"image_version": "dev"
|
||||
},
|
||||
"sensitive-variables": ["install_password", "ssh_password", "client_secret"],
|
||||
"builders": [
|
||||
{
|
||||
"name": "vhd",
|
||||
"type": "azure-arm",
|
||||
"client_id": "{{user `client_id`}}",
|
||||
"client_secret": "{{user `client_secret`}}",
|
||||
"subscription_id": "{{user `subscription_id`}}",
|
||||
"object_id": "{{user `object_id`}}",
|
||||
"tenant_id": "{{user `tenant_id`}}",
|
||||
"os_disk_size_gb": "128",
|
||||
"location": "{{user `location`}}",
|
||||
"vm_size": "{{user `vm_size`}}",
|
||||
"resource_group_name": "{{user `resource_group`}}",
|
||||
"storage_account": "{{user `storage_account`}}",
|
||||
"temp_resource_group_name": "{{user `temp_resource_group_name`}}",
|
||||
"capture_container_name": "images",
|
||||
"capture_name_prefix": "{{user `capture_name_prefix`}}",
|
||||
"virtual_network_name": "{{user `virtual_network_name`}}",
|
||||
"virtual_network_resource_group_name": "{{user `virtual_network_resource_group_name`}}",
|
||||
"virtual_network_subnet_name": "{{user `virtual_network_subnet_name`}}",
|
||||
"private_virtual_network_with_public_ip": "{{user `private_virtual_network_with_public_ip`}}",
|
||||
"os_type": "Windows",
|
||||
"image_publisher": "MicrosoftWindowsServer",
|
||||
"image_offer": "WindowsServer",
|
||||
"image_sku": "2019-Datacenter",
|
||||
"communicator": "winrm",
|
||||
"winrm_use_ssl": "true",
|
||||
"winrm_insecure": "true",
|
||||
"winrm_username": "packer"
|
||||
}
|
||||
],
|
||||
"provisioners": [
|
||||
{
|
||||
"type": "powershell",
|
||||
"inline":[
|
||||
"New-Item -Path {{user `image_folder`}} -ItemType Directory -Force",
|
||||
"Write-Output {{user `commit_id`}} > {{user `commit_file`}}",
|
||||
"Write-Host (Get-Content -Path {{user `commit_file`}})"
|
||||
]
|
||||
},
|
||||
{
|
||||
"type": "file",
|
||||
"source": "{{ template_dir }}/scripts/ImageHelpers",
|
||||
"destination": "{{user `helper_script_folder`}}"
|
||||
},
|
||||
{
|
||||
"type": "windows-shell",
|
||||
"inline": [
|
||||
"net user {{user `install_user`}} {{user `install_password`}} /add /passwordchg:no /passwordreq:yes /active:yes /Y" ,
|
||||
"net localgroup Administrators {{user `install_user`}} /add",
|
||||
"winrm set winrm/config/service/auth @{Basic=\"true\"}",
|
||||
"winrm get winrm/config/service/auth"
|
||||
]
|
||||
},
|
||||
{
|
||||
"type": "powershell",
|
||||
"inline": [
|
||||
"if (-not ((net localgroup Administrators) -contains '{{user `install_user`}}')) { exit 1 }"
|
||||
]
|
||||
},
|
||||
{
|
||||
"type": "powershell",
|
||||
"environment_vars": [
|
||||
"ImageVersion={{user `image_version`}}"
|
||||
],
|
||||
"scripts":[
|
||||
"{{ template_dir }}/scripts/Installers/Vs2019/Initialize-VM.ps1"
|
||||
]
|
||||
},
|
||||
{
|
||||
"type": "windows-restart",
|
||||
"restart_timeout": "10m"
|
||||
},
|
||||
{
|
||||
"type": "powershell",
|
||||
"scripts":[
|
||||
"{{ template_dir }}/scripts/Installers/Install-ContainersFeature.ps1"
|
||||
]
|
||||
},
|
||||
{
|
||||
"type": "windows-restart",
|
||||
"restart_timeout": "10m"
|
||||
},
|
||||
{
|
||||
"type": "powershell",
|
||||
"inline": [
|
||||
"setx ImageVersion {{user `image_version` }} /m"
|
||||
]
|
||||
},
|
||||
{
|
||||
"type": "powershell",
|
||||
"scripts":[
|
||||
"{{ template_dir }}/scripts/Installers/Install-Docker.ps1"
|
||||
]
|
||||
},
|
||||
{
|
||||
"type": "powershell",
|
||||
"scripts":[
|
||||
"{{ template_dir }}/scripts/Installers/Install-PowershellCore.ps1"
|
||||
]
|
||||
},
|
||||
{
|
||||
"type": "windows-restart",
|
||||
"restart_timeout": "10m"
|
||||
},
|
||||
{
|
||||
"type": "powershell",
|
||||
"scripts":[
|
||||
"{{ template_dir }}/scripts/Installers/Validate-Docker.ps1"
|
||||
]
|
||||
},
|
||||
{
|
||||
"type": "powershell",
|
||||
"scripts":[
|
||||
"{{ template_dir }}/scripts/Installers/Validate-PowershellCore.ps1"
|
||||
]
|
||||
},
|
||||
{
|
||||
"type": "powershell",
|
||||
"scripts":[
|
||||
"{{ template_dir }}/scripts/Installers/Vs2019/Update-DockerImages.ps1"
|
||||
]
|
||||
},
|
||||
{
|
||||
"type": "powershell",
|
||||
"scripts": [
|
||||
"{{ template_dir }}/scripts/Installers/Vs2019/Install-WDK.ps1"
|
||||
]
|
||||
},
|
||||
{
|
||||
"type": "powershell",
|
||||
"valid_exit_codes": [
|
||||
0,
|
||||
3010
|
||||
],
|
||||
"scripts":[
|
||||
"{{ template_dir }}/scripts/Installers/Vs2019/Install-VS2019.ps1"
|
||||
],
|
||||
"elevated_user": "{{user `install_user`}}",
|
||||
"elevated_password": "{{user `install_password`}}"
|
||||
},
|
||||
{
|
||||
"type": "powershell",
|
||||
"scripts":[
|
||||
"{{ template_dir }}/scripts/Installers/Vs2019/Install-Wix.ps1"
|
||||
]
|
||||
},
|
||||
{
|
||||
"type": "powershell",
|
||||
"valid_exit_codes": [
|
||||
0,
|
||||
3010
|
||||
],
|
||||
"scripts":[
|
||||
"{{ template_dir }}/scripts/Installers/Install-NET48.ps1"
|
||||
]
|
||||
},
|
||||
{
|
||||
"type": "powershell",
|
||||
"scripts":[
|
||||
"{{ template_dir }}/scripts/Installers/Install-ServiceFabricSDK.ps1"
|
||||
]
|
||||
},
|
||||
{
|
||||
"type": "windows-restart",
|
||||
"restart_timeout": "10m"
|
||||
},
|
||||
{
|
||||
"type": "powershell",
|
||||
"scripts":[
|
||||
"{{ template_dir }}/scripts/Installers/Vs2019/Validate-Wix.ps1"
|
||||
]
|
||||
},
|
||||
{
|
||||
"type": "powershell",
|
||||
"scripts":[
|
||||
"{{ template_dir }}/scripts/Installers/Validate-NET48.ps1"
|
||||
]
|
||||
},
|
||||
{
|
||||
"type": "powershell",
|
||||
"scripts":[
|
||||
"{{ template_dir }}/scripts/Installers/Vs2019/Validate-WDK.ps1"
|
||||
]
|
||||
},
|
||||
{
|
||||
"type": "powershell",
|
||||
"scripts":[
|
||||
"{{ template_dir }}/scripts/Installers/Validate-ServiceFabricSDK.ps1"
|
||||
]
|
||||
},
|
||||
{
|
||||
"type": "powershell",
|
||||
"scripts":[
|
||||
"{{ template_dir }}/scripts/Installers/Update-DotnetTLS.ps1"
|
||||
]
|
||||
},
|
||||
{
|
||||
"type": "powershell",
|
||||
"scripts":[
|
||||
"{{ template_dir }}/scripts/Installers/Install-AzureCli.ps1"
|
||||
]
|
||||
},
|
||||
{
|
||||
"type": "powershell",
|
||||
"scripts":[
|
||||
"{{ template_dir }}/scripts/Installers/Install-AzureDevOpsCli.ps1"
|
||||
]
|
||||
},
|
||||
{
|
||||
"type": "powershell",
|
||||
"scripts":[
|
||||
"{{ template_dir }}/scripts/Installers/Download-ToolCache.ps1"
|
||||
]
|
||||
},
|
||||
{
|
||||
"type": "powershell",
|
||||
"scripts":[
|
||||
"{{ template_dir }}/scripts/Installers/Vs2019/Install-Python.ps1"
|
||||
]
|
||||
},
|
||||
{
|
||||
"type": "powershell",
|
||||
"scripts":[
|
||||
"{{ template_dir }}/scripts/Installers/Install-Git.ps1"
|
||||
]
|
||||
},
|
||||
{
|
||||
"type": "powershell",
|
||||
"environment_vars": [
|
||||
"GO_VERSIONS=1.10.8,1.11.12,1.12.7,1.13",
|
||||
"GO_DEFAULT=1.12.7"
|
||||
],
|
||||
"scripts":[
|
||||
"{{ template_dir }}/scripts/Installers/Install-Go.ps1"
|
||||
]
|
||||
},
|
||||
{
|
||||
"type": "powershell",
|
||||
"scripts":[
|
||||
"{{ template_dir }}/scripts/Installers/Install-PHP.ps1"
|
||||
]
|
||||
},
|
||||
{
|
||||
"type": "powershell",
|
||||
"scripts":[
|
||||
"{{ template_dir }}/scripts/Installers/Install-Ruby.ps1"
|
||||
]
|
||||
},
|
||||
{
|
||||
"type": "powershell",
|
||||
"scripts":[
|
||||
"{{ template_dir }}/scripts/Installers/Install-Rust.ps1"
|
||||
]
|
||||
},
|
||||
{
|
||||
"type": "powershell",
|
||||
"scripts":[
|
||||
"{{ template_dir }}/scripts/Installers/Install-Sbt.ps1"
|
||||
]
|
||||
},
|
||||
{
|
||||
"type": "powershell",
|
||||
"scripts":[
|
||||
"{{ template_dir }}/scripts/Installers/Install-Svn.ps1"
|
||||
]
|
||||
},
|
||||
{
|
||||
"type": "powershell",
|
||||
"scripts":[
|
||||
"{{ template_dir }}/scripts/Installers/Install-Chrome.ps1"
|
||||
]
|
||||
},
|
||||
{
|
||||
"type": "powershell",
|
||||
"scripts":[
|
||||
"{{ template_dir }}/scripts/Installers/Install-Firefox.ps1"
|
||||
]
|
||||
},
|
||||
{
|
||||
"type": "powershell",
|
||||
"scripts":[
|
||||
"{{ template_dir }}/scripts/Installers/Install-SeleniumWebDrivers.ps1"
|
||||
]
|
||||
},
|
||||
{
|
||||
"type": "powershell",
|
||||
"scripts":[
|
||||
"{{ template_dir }}/scripts/Installers/Enable-DeveloperMode.ps1"
|
||||
],
|
||||
"elevated_user": "{{user `install_user`}}",
|
||||
"elevated_password": "{{user `install_password`}}"
|
||||
},
|
||||
{
|
||||
"type": "powershell",
|
||||
"scripts":[
|
||||
"{{ template_dir }}/scripts/Installers/Install-WinAppDriver.ps1"
|
||||
]
|
||||
},
|
||||
{
|
||||
"type": "powershell",
|
||||
"scripts":[
|
||||
"{{ template_dir }}/scripts/Installers/Validate-WinAppDriver.ps1"
|
||||
]
|
||||
},
|
||||
{
|
||||
"type": "powershell",
|
||||
"scripts":[
|
||||
"{{ template_dir }}/scripts/Installers/Install-NodeLts.ps1"
|
||||
]
|
||||
},
|
||||
{
|
||||
"type": "powershell",
|
||||
"scripts":[
|
||||
"{{ template_dir }}/scripts/Installers/Install-JavaTools.ps1"
|
||||
]
|
||||
},
|
||||
{
|
||||
"type": "powershell",
|
||||
"scripts":[
|
||||
"{{ template_dir }}/scripts/Installers/Install-Cmake.ps1"
|
||||
]
|
||||
},
|
||||
{
|
||||
"type": "powershell",
|
||||
"scripts":[
|
||||
"{{ template_dir }}/scripts/Installers/Install-DACFx.ps1"
|
||||
]
|
||||
},
|
||||
{
|
||||
"type": "powershell",
|
||||
"scripts":[
|
||||
"{{ template_dir }}/scripts/Installers/Update-AndroidSDK.ps1"
|
||||
]
|
||||
},
|
||||
{
|
||||
"type": "powershell",
|
||||
"scripts":[
|
||||
"{{ template_dir }}/scripts/Installers/Install-MysqlCli.ps1"
|
||||
]
|
||||
},
|
||||
{
|
||||
"type": "powershell",
|
||||
"scripts":[
|
||||
"{{ template_dir }}/scripts/Installers/Install-SQLPowerShellTools.ps1"
|
||||
]
|
||||
},
|
||||
{
|
||||
"type": "powershell",
|
||||
"scripts":[
|
||||
"{{ template_dir }}/scripts/Installers/Install-DotnetSDK.ps1"
|
||||
]
|
||||
},
|
||||
{
|
||||
"type": "powershell",
|
||||
"scripts":[
|
||||
"{{ template_dir }}/scripts/Installers/Install-WindowsUpdates.ps1"
|
||||
]
|
||||
},
|
||||
{
|
||||
"type": "windows-shell",
|
||||
"inline": ["wmic product where \"name like '%%microsoft azure powershell%%'\" call uninstall /nointeractive"]
|
||||
},
|
||||
{
|
||||
"type": "powershell",
|
||||
"scripts":[
|
||||
"{{ template_dir }}/scripts/Installers/Install-AzureModules.ps1"
|
||||
]
|
||||
},
|
||||
{
|
||||
"type": "powershell",
|
||||
"scripts":[
|
||||
"{{ template_dir }}/scripts/Installers/Install-MinGW.ps1"
|
||||
]
|
||||
},
|
||||
{
|
||||
"type": "powershell",
|
||||
"scripts":[
|
||||
"{{ template_dir }}/scripts/Installers/Install-TypeScript.ps1"
|
||||
]
|
||||
},
|
||||
{
|
||||
"type": "powershell",
|
||||
"scripts":[
|
||||
"{{ template_dir }}/scripts/Installers/Install-Miniconda.ps1"
|
||||
]
|
||||
},
|
||||
{
|
||||
"type": "powershell",
|
||||
"scripts":[
|
||||
"{{ template_dir }}/scripts/Installers/Install-AzureCosmosDbEmulator.ps1"
|
||||
]
|
||||
},
|
||||
{
|
||||
"type": "powershell",
|
||||
"scripts":[
|
||||
"{{ template_dir }}/scripts/Installers/Install-7zip.ps1"
|
||||
]
|
||||
},
|
||||
{
|
||||
"type": "powershell",
|
||||
"environment_vars": [
|
||||
"BOOST_VERSIONS=1.69.0",
|
||||
"BOOST_DEFAULT=1.69.0"
|
||||
],
|
||||
"scripts":[
|
||||
"{{ template_dir }}/scripts/Installers/Install-Boost.ps1"
|
||||
]
|
||||
},
|
||||
{
|
||||
"type": "powershell",
|
||||
"scripts":[
|
||||
"{{ template_dir }}/scripts/Installers/Install-Mercurial.ps1"
|
||||
]
|
||||
},
|
||||
{
|
||||
"type": "powershell",
|
||||
"scripts":[
|
||||
"{{ template_dir }}/scripts/Installers/Install-Jq.ps1"
|
||||
]
|
||||
},
|
||||
{
|
||||
"type": "powershell",
|
||||
"scripts":[
|
||||
"{{ template_dir }}/scripts/Installers/Install-InnoSetup.ps1"
|
||||
]
|
||||
},
|
||||
{
|
||||
"type": "powershell",
|
||||
"scripts":[
|
||||
"{{ template_dir }}/scripts/Installers/Install-Perl.ps1"
|
||||
]
|
||||
},
|
||||
{
|
||||
"type": "powershell",
|
||||
"scripts":[
|
||||
"{{ template_dir }}/scripts/Installers/Install-GitVersion.ps1"
|
||||
]
|
||||
},
|
||||
{
|
||||
"type": "powershell",
|
||||
"scripts":[
|
||||
"{{ template_dir }}/scripts/Installers/Install-OpenSSL.ps1"
|
||||
]
|
||||
},
|
||||
{
|
||||
"type": "powershell",
|
||||
"scripts":[
|
||||
"{{ template_dir }}/scripts/Installers/Install-NSIS.ps1"
|
||||
]
|
||||
},
|
||||
{
|
||||
"type": "powershell",
|
||||
"scripts":[
|
||||
"{{ template_dir }}/scripts/Installers/Install-CloudFoundryCli.ps1"
|
||||
]
|
||||
},
|
||||
{
|
||||
"type": "powershell",
|
||||
"scripts":[
|
||||
"{{ template_dir }}/scripts/Installers/Install-Vcpkg.ps1"
|
||||
]
|
||||
},
|
||||
{
|
||||
"type": "powershell",
|
||||
"scripts":[
|
||||
"{{ template_dir }}/scripts/Installers/Install-KubernetesCli.ps1"
|
||||
]
|
||||
},
|
||||
{
|
||||
"type": "powershell",
|
||||
"scripts":[
|
||||
"{{ template_dir }}/scripts/Installers/Install-Kind.ps1"
|
||||
]
|
||||
},
|
||||
{
|
||||
"type": "windows-restart",
|
||||
"restart_timeout": "10m"
|
||||
},
|
||||
{
|
||||
"type": "powershell",
|
||||
"scripts":[
|
||||
"{{ template_dir }}/scripts/Installers/Validate-AzureModules.ps1"
|
||||
]
|
||||
},
|
||||
{
|
||||
"type": "powershell",
|
||||
"scripts":[
|
||||
"{{ template_dir }}/scripts/Installers/Validate-DotnetTLS.ps1"
|
||||
]
|
||||
},
|
||||
{
|
||||
"type": "powershell",
|
||||
"scripts":[
|
||||
"{{ template_dir }}/scripts/Installers/Validate-AzureCli.ps1"
|
||||
]
|
||||
},
|
||||
{
|
||||
"type": "powershell",
|
||||
"scripts":[
|
||||
"{{ template_dir }}/scripts/Installers/Validate-AzureDevOpsCli.ps1"
|
||||
]
|
||||
},
|
||||
{
|
||||
"type": "powershell",
|
||||
"scripts":[
|
||||
"{{ template_dir }}/scripts/Installers/Validate-ToolCache.ps1"
|
||||
]
|
||||
},
|
||||
{
|
||||
"type": "powershell",
|
||||
"scripts":[
|
||||
"{{ template_dir }}/scripts/Installers/Validate-Python.ps1"
|
||||
]
|
||||
},
|
||||
{
|
||||
"type": "powershell",
|
||||
"scripts":[
|
||||
"{{ template_dir }}/scripts/Installers/Validate-Git.ps1"
|
||||
]
|
||||
},
|
||||
{
|
||||
"type": "powershell",
|
||||
"environment_vars": [
|
||||
"GO_VERSIONS=1.10.8,1.11.12,1.12.7,1.13",
|
||||
"GO_DEFAULT=1.12.7"
|
||||
],
|
||||
"scripts":[
|
||||
"{{ template_dir }}/scripts/Installers/Validate-Go.ps1"
|
||||
]
|
||||
},
|
||||
{
|
||||
"type": "powershell",
|
||||
"environment_vars": [
|
||||
"BOOST_VERSIONS=1.69.0",
|
||||
"BOOST_DEFAULT=1.69.0"
|
||||
],
|
||||
"scripts":[
|
||||
"{{ template_dir }}/scripts/Installers/Validate-Boost.ps1"
|
||||
]
|
||||
},
|
||||
{
|
||||
"type": "powershell",
|
||||
"scripts":[
|
||||
"{{ template_dir }}/scripts/Installers/Validate-PHP.ps1"
|
||||
]
|
||||
},
|
||||
{
|
||||
"type": "powershell",
|
||||
"scripts":[
|
||||
"{{ template_dir }}/scripts/Installers/Validate-Ruby.ps1"
|
||||
]
|
||||
},
|
||||
{
|
||||
"type": "powershell",
|
||||
"scripts":[
|
||||
"{{ template_dir }}/scripts/Installers/Validate-Rust.ps1"
|
||||
]
|
||||
},
|
||||
{
|
||||
"type": "powershell",
|
||||
"scripts":[
|
||||
"{{ template_dir }}/scripts/Installers/Validate-Svn.ps1"
|
||||
]
|
||||
},
|
||||
{
|
||||
"type": "powershell",
|
||||
"scripts":[
|
||||
"{{ template_dir }}/scripts/Installers/Validate-Sbt.ps1"
|
||||
]
|
||||
},
|
||||
{
|
||||
"type": "powershell",
|
||||
"scripts":[
|
||||
"{{ template_dir }}/scripts/Installers/Validate-Chrome.ps1"
|
||||
]
|
||||
},
|
||||
{
|
||||
"type": "powershell",
|
||||
"scripts":[
|
||||
"{{ template_dir }}/scripts/Installers/Validate-Firefox.ps1"
|
||||
]
|
||||
},
|
||||
{
|
||||
"type": "powershell",
|
||||
"scripts":[
|
||||
"{{ template_dir }}/scripts/Installers/Validate-SeleniumWebDrivers.ps1"
|
||||
]
|
||||
},
|
||||
{
|
||||
"type": "powershell",
|
||||
"scripts":[
|
||||
"{{ template_dir }}/scripts/Installers/Validate-NodeLts.ps1"
|
||||
]
|
||||
},
|
||||
{
|
||||
"type": "powershell",
|
||||
"scripts":[
|
||||
"{{ template_dir }}/scripts/Installers/Validate-JavaTools.ps1"
|
||||
]
|
||||
},
|
||||
{
|
||||
"type": "powershell",
|
||||
"scripts":[
|
||||
"{{ template_dir }}/scripts/Installers/Validate-Cmake.ps1"
|
||||
]
|
||||
},
|
||||
{
|
||||
"type": "powershell",
|
||||
"scripts":[
|
||||
"{{ template_dir }}/scripts/Installers/Validate-DACFx.ps1"
|
||||
]
|
||||
},
|
||||
{
|
||||
"type": "powershell",
|
||||
"scripts":[
|
||||
"{{ template_dir }}/scripts/Installers/Validate-DotnetSDK.ps1"
|
||||
]
|
||||
},
|
||||
{
|
||||
"type": "powershell",
|
||||
"scripts":[
|
||||
"{{ template_dir }}/scripts/Installers/Validate-MysqlCli.ps1"
|
||||
]
|
||||
},
|
||||
{
|
||||
"type": "powershell",
|
||||
"scripts":[
|
||||
"{{ template_dir }}/scripts/Installers/Validate-MinGW.ps1"
|
||||
]
|
||||
},
|
||||
{
|
||||
"type": "powershell",
|
||||
"scripts":[
|
||||
"{{ template_dir }}/scripts/Installers/Validate-TypeScript.ps1"
|
||||
]
|
||||
},
|
||||
{
|
||||
"type": "powershell",
|
||||
"scripts":[
|
||||
"{{ template_dir }}/scripts/Installers/Validate-Miniconda.ps1"
|
||||
]
|
||||
},
|
||||
{
|
||||
"type": "powershell",
|
||||
"scripts":[
|
||||
"{{ template_dir }}/scripts/Installers/Validate-AzureCosmosDbEmulator.ps1"
|
||||
]
|
||||
},
|
||||
{
|
||||
"type": "powershell",
|
||||
"scripts":[
|
||||
"{{ template_dir }}/scripts/Installers/Validate-7zip.ps1"
|
||||
]
|
||||
},
|
||||
{
|
||||
"type": "powershell",
|
||||
"scripts":[
|
||||
"{{ template_dir }}/scripts/Installers/Validate-Mercurial.ps1"
|
||||
]
|
||||
},
|
||||
{
|
||||
"type": "powershell",
|
||||
"scripts":[
|
||||
"{{ template_dir }}/scripts/Installers/Validate-Jq.ps1"
|
||||
]
|
||||
},
|
||||
{
|
||||
"type": "powershell",
|
||||
"scripts":[
|
||||
"{{ template_dir }}/scripts/Installers/Validate-InnoSetup.ps1"
|
||||
]
|
||||
},
|
||||
{
|
||||
"type": "powershell",
|
||||
"scripts":[
|
||||
"{{ template_dir }}/scripts/Installers/Validate-Perl.ps1"
|
||||
]
|
||||
},
|
||||
{
|
||||
"type": "powershell",
|
||||
"scripts":[
|
||||
"{{ template_dir }}/scripts/Installers/Validate-GitVersion.ps1"
|
||||
]
|
||||
},
|
||||
{
|
||||
"type": "powershell",
|
||||
"scripts":[
|
||||
"{{ template_dir }}/scripts/Installers/Validate-OpenSSL.ps1"
|
||||
]
|
||||
},
|
||||
{
|
||||
"type": "powershell",
|
||||
"scripts":[
|
||||
"{{ template_dir }}/scripts/Installers/Validate-NSIS.ps1"
|
||||
]
|
||||
},
|
||||
{
|
||||
"type": "powershell",
|
||||
"scripts":[
|
||||
"{{ template_dir }}/scripts/Installers/Validate-CloudFoundryCli.ps1"
|
||||
]
|
||||
},
|
||||
{
|
||||
"type": "powershell",
|
||||
"scripts":[
|
||||
"{{ template_dir }}/scripts/Installers/Validate-Vcpkg.ps1"
|
||||
]
|
||||
},
|
||||
{
|
||||
"type": "powershell",
|
||||
"scripts":[
|
||||
"{{ template_dir }}/scripts/Installers/Validate-KubernetesCli.ps1"
|
||||
]
|
||||
},
|
||||
{
|
||||
"type": "powershell",
|
||||
"scripts":[
|
||||
"{{ template_dir }}/scripts/Installers/Validate-Kind.ps1"
|
||||
]
|
||||
},
|
||||
{
|
||||
"type": "file",
|
||||
"source": "C:\\InstalledSoftware.md",
|
||||
"destination": "{{ template_dir }}/Vs2019-Server2019-Readme.md",
|
||||
"direction": "download"
|
||||
},
|
||||
{
|
||||
"type": "powershell",
|
||||
"scripts":[
|
||||
"{{ template_dir }}/scripts/Installers/Finalize-VM.ps1"
|
||||
]
|
||||
},
|
||||
{
|
||||
"type": "windows-restart",
|
||||
"restart_timeout": "10m"
|
||||
},
|
||||
{
|
||||
"type": "powershell",
|
||||
"scripts":[
|
||||
"{{ template_dir }}/scripts/Installers/Vs2019/Run-Antivirus.ps1"
|
||||
]
|
||||
},
|
||||
{
|
||||
"type": "powershell",
|
||||
"inline": [
|
||||
"if( Test-Path $Env:SystemRoot\\System32\\Sysprep\\unattend.xml ){ rm $Env:SystemRoot\\System32\\Sysprep\\unattend.xml -Force}",
|
||||
"& $env:SystemRoot\\System32\\Sysprep\\Sysprep.exe /oobe /generalize /quiet /quit",
|
||||
"while($true) { $imageState = Get-ItemProperty HKLM:\\SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\Setup\\State | Select ImageState; if($imageState.ImageState -ne 'IMAGE_STATE_GENERALIZE_RESEAL_TO_OOBE') { Write-Output $imageState.ImageState; Start-Sleep -s 10 } else { break } }"
|
||||
]
|
||||
}
|
||||
]
|
||||
}
|
||||
124
images/win/scripts/ImageHelpers/ImageHelpers.psd1
Normal file
124
images/win/scripts/ImageHelpers/ImageHelpers.psd1
Normal file
@@ -0,0 +1,124 @@
|
||||
#
|
||||
# Module manifest for module 'ImageHelpers'
|
||||
#
|
||||
# Generated by: chrispat
|
||||
#
|
||||
# Generated on: 11/1/2017
|
||||
#
|
||||
|
||||
@{
|
||||
|
||||
# Script module or binary module file associated with this manifest.
|
||||
RootModule = 'ImageHelpers.psm1'
|
||||
|
||||
# Version number of this module.
|
||||
ModuleVersion = '0.0.1'
|
||||
|
||||
# Supported PSEditions
|
||||
# CompatiblePSEditions = @()
|
||||
|
||||
# ID used to uniquely identify this module
|
||||
GUID = 'c9334909-16a1-48f1-a94a-c7baf1b961d9'
|
||||
|
||||
# Author of this module
|
||||
Author = 'chrispat'
|
||||
|
||||
# Company or vendor of this module
|
||||
CompanyName = 'Unknown'
|
||||
|
||||
# Copyright statement for this module
|
||||
Copyright = '(c) 2017 chrispat. All rights reserved.'
|
||||
|
||||
# Description of the functionality provided by this module
|
||||
Description = 'Helper functions for creating vsts images'
|
||||
|
||||
# Minimum version of the Windows PowerShell engine required by this module
|
||||
# PowerShellVersion = ''
|
||||
|
||||
# Name of the Windows PowerShell host required by this module
|
||||
# PowerShellHostName = ''
|
||||
|
||||
# Minimum version of the Windows PowerShell host required by this module
|
||||
# PowerShellHostVersion = ''
|
||||
|
||||
# Minimum version of Microsoft .NET Framework required by this module. This prerequisite is valid for the PowerShell Desktop edition only.
|
||||
# DotNetFrameworkVersion = ''
|
||||
|
||||
# Minimum version of the common language runtime (CLR) required by this module. This prerequisite is valid for the PowerShell Desktop edition only.
|
||||
# CLRVersion = ''
|
||||
|
||||
# Processor architecture (None, X86, Amd64) required by this module
|
||||
# ProcessorArchitecture = ''
|
||||
|
||||
# Modules that must be imported into the global environment prior to importing this module
|
||||
# RequiredModules = @()
|
||||
|
||||
# Assemblies that must be loaded prior to importing this module
|
||||
# RequiredAssemblies = @()
|
||||
|
||||
# Script files (.ps1) that are run in the caller's environment prior to importing this module.
|
||||
# ScriptsToProcess = @()
|
||||
|
||||
# Type files (.ps1xml) to be loaded when importing this module
|
||||
# TypesToProcess = @()
|
||||
|
||||
# Format files (.ps1xml) to be loaded when importing this module
|
||||
# FormatsToProcess = @()
|
||||
|
||||
# Modules to import as nested modules of the module specified in RootModule/ModuleToProcess
|
||||
# NestedModules = @()
|
||||
|
||||
# Functions to export from this module, for best performance, do not use wildcards and do not delete the entry, use an empty array if there are no functions to export.
|
||||
FunctionsToExport = '*'
|
||||
|
||||
# Cmdlets to export from this module, for best performance, do not use wildcards and do not delete the entry, use an empty array if there are no cmdlets to export.
|
||||
CmdletsToExport = '*'
|
||||
|
||||
# Variables to export from this module
|
||||
VariablesToExport = '*'
|
||||
|
||||
# Aliases to export from this module, for best performance, do not use wildcards and do not delete the entry, use an empty array if there are no aliases to export.
|
||||
AliasesToExport = '*'
|
||||
|
||||
# DSC resources to export from this module
|
||||
# DscResourcesToExport = @()
|
||||
|
||||
# List of all modules packaged with this module
|
||||
# ModuleList = @()
|
||||
|
||||
# List of all files packaged with this module
|
||||
# FileList = @()
|
||||
|
||||
# Private data to pass to the module specified in RootModule/ModuleToProcess. This may also contain a PSData hashtable with additional module metadata used by PowerShell.
|
||||
PrivateData = @{
|
||||
|
||||
PSData = @{
|
||||
|
||||
# Tags applied to this module. These help with module discovery in online galleries.
|
||||
# Tags = @()
|
||||
|
||||
# A URL to the license for this module.
|
||||
# LicenseUri = ''
|
||||
|
||||
# A URL to the main website for this project.
|
||||
# ProjectUri = ''
|
||||
|
||||
# A URL to an icon representing this module.
|
||||
# IconUri = ''
|
||||
|
||||
# ReleaseNotes of this module
|
||||
# ReleaseNotes = ''
|
||||
|
||||
} # End of PSData hashtable
|
||||
|
||||
} # End of PrivateData hashtable
|
||||
|
||||
# HelpInfo URI of this module
|
||||
# HelpInfoURI = ''
|
||||
|
||||
# Default prefix for commands exported from this module. Override the default prefix using Import-Module -Prefix.
|
||||
# DefaultCommandPrefix = ''
|
||||
|
||||
}
|
||||
|
||||
|
||||
19
images/win/scripts/ImageHelpers/ImageHelpers.psm1
Normal file
19
images/win/scripts/ImageHelpers/ImageHelpers.psm1
Normal file
@@ -0,0 +1,19 @@
|
||||
[CmdletBinding()]
|
||||
param()
|
||||
|
||||
. $PSScriptRoot\PathHelpers.ps1
|
||||
. $PSScriptRoot\InstallHelpers.ps1
|
||||
. $PSScriptRoot\MarkdownHelpers.ps1
|
||||
|
||||
Export-ModuleMember -Function @(
|
||||
'Test-MachinePath'
|
||||
'Get-MachinePath'
|
||||
'Set-MachinePath'
|
||||
'Add-MachinePathItem'
|
||||
'Get-SystemVariable'
|
||||
'Set-SystemVariable'
|
||||
'Install-MSI'
|
||||
'Install-EXE'
|
||||
'Add-ContentToMarkdown'
|
||||
'Add-SoftwareDetailsToMarkdown'
|
||||
)
|
||||
83
images/win/scripts/ImageHelpers/InstallHelpers.ps1
Normal file
83
images/win/scripts/ImageHelpers/InstallHelpers.ps1
Normal file
@@ -0,0 +1,83 @@
|
||||
function Install-MSI
|
||||
{
|
||||
Param
|
||||
(
|
||||
[String]$MsiUrl,
|
||||
[String]$MsiName
|
||||
)
|
||||
|
||||
$exitCode = -1
|
||||
|
||||
try
|
||||
{
|
||||
Write-Host "Downloading $MsiName..."
|
||||
$FilePath = "${env:Temp}\$MsiName"
|
||||
|
||||
Invoke-WebRequest -Uri $MsiUrl -OutFile $FilePath
|
||||
|
||||
$Arguments = ('/i', $FilePath, '/QN', '/norestart' )
|
||||
|
||||
Write-Host "Starting Install $MsiName..."
|
||||
$process = Start-Process -FilePath msiexec.exe -ArgumentList $Arguments -Wait -PassThru
|
||||
$exitCode = $process.ExitCode
|
||||
|
||||
if ($exitCode -eq 0 -or $exitCode -eq 3010)
|
||||
{
|
||||
Write-Host -Object 'Installation successful'
|
||||
return $exitCode
|
||||
}
|
||||
else
|
||||
{
|
||||
Write-Host -Object "Non zero exit code returned by the installation process : $exitCode."
|
||||
exit $exitCode
|
||||
}
|
||||
}
|
||||
catch
|
||||
{
|
||||
Write-Host -Object "Failed to install the MSI $MsiName"
|
||||
Write-Host -Object $_.Exception.Message
|
||||
exit -1
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
function Install-EXE
|
||||
{
|
||||
Param
|
||||
(
|
||||
[String]$Url,
|
||||
[String]$Name,
|
||||
[String[]]$ArgumentList
|
||||
)
|
||||
|
||||
$exitCode = -1
|
||||
|
||||
try
|
||||
{
|
||||
Write-Host "Downloading $Name..."
|
||||
$FilePath = "${env:Temp}\$Name"
|
||||
|
||||
Invoke-WebRequest -Uri $Url -OutFile $FilePath
|
||||
|
||||
Write-Host "Starting Install $Name..."
|
||||
$process = Start-Process -FilePath $FilePath -ArgumentList $ArgumentList -Wait -PassThru
|
||||
$exitCode = $process.ExitCode
|
||||
|
||||
if ($exitCode -eq 0 -or $exitCode -eq 3010)
|
||||
{
|
||||
Write-Host -Object 'Installation successful'
|
||||
return $exitCode
|
||||
}
|
||||
else
|
||||
{
|
||||
Write-Host -Object "Non zero exit code returned by the installation process : $exitCode."
|
||||
return $exitCode
|
||||
}
|
||||
}
|
||||
catch
|
||||
{
|
||||
Write-Host -Object "Failed to install the Executable $Name"
|
||||
Write-Host -Object $_.Exception.Message
|
||||
return -1
|
||||
}
|
||||
}
|
||||
25
images/win/scripts/ImageHelpers/MarkdownHelpers.ps1
Normal file
25
images/win/scripts/ImageHelpers/MarkdownHelpers.ps1
Normal file
@@ -0,0 +1,25 @@
|
||||
function Add-ContentToMarkdown {
|
||||
[CmdletBinding()]
|
||||
param(
|
||||
$Content = ""
|
||||
)
|
||||
|
||||
Add-Content 'C:\InstalledSoftware.md' $Content
|
||||
}
|
||||
|
||||
|
||||
function Add-SoftwareDetailsToMarkdown {
|
||||
[CmdletBinding()]
|
||||
param(
|
||||
$SoftwareName = "",
|
||||
$DescriptionMarkdown = ""
|
||||
)
|
||||
|
||||
$Content = @"
|
||||
|
||||
## $SoftwareName
|
||||
|
||||
$DescriptionMarkdown
|
||||
"@
|
||||
Add-ContentToMarkdown -Content $Content
|
||||
}
|
||||
68
images/win/scripts/ImageHelpers/PathHelpers.ps1
Normal file
68
images/win/scripts/ImageHelpers/PathHelpers.ps1
Normal file
@@ -0,0 +1,68 @@
|
||||
function Test-MachinePath{
|
||||
[CmdletBinding()]
|
||||
param(
|
||||
[string]$PathItem
|
||||
)
|
||||
|
||||
$currentPath = Get-MachinePath
|
||||
|
||||
$pathItems = $currentPath.Split(';')
|
||||
|
||||
if($pathItems.Contains($PathItem))
|
||||
{
|
||||
return $true
|
||||
}
|
||||
else
|
||||
{
|
||||
return $false
|
||||
}
|
||||
}
|
||||
|
||||
function Set-MachinePath{
|
||||
[CmdletBinding()]
|
||||
param(
|
||||
[string]$NewPath
|
||||
)
|
||||
Set-ItemProperty -Path 'Registry::HKEY_LOCAL_MACHINE\System\CurrentControlSet\Control\Session Manager\Environment' -Name Path -Value $NewPath
|
||||
return $NewPath
|
||||
}
|
||||
|
||||
function Add-MachinePathItem
|
||||
{
|
||||
[CmdletBinding()]
|
||||
param(
|
||||
[string]$PathItem
|
||||
)
|
||||
|
||||
$currentPath = Get-MachinePath
|
||||
$newPath = $PathItem + ';' + $currentPath
|
||||
return Set-MachinePath -NewPath $newPath
|
||||
}
|
||||
|
||||
function Get-MachinePath{
|
||||
[CmdletBinding()]
|
||||
param(
|
||||
|
||||
)
|
||||
$currentPath = (Get-ItemProperty -Path 'Registry::HKEY_LOCAL_MACHINE\System\CurrentControlSet\Control\Session Manager\Environment' -Name PATH).Path
|
||||
return $currentPath
|
||||
}
|
||||
|
||||
function Get-SystemVariable{
|
||||
[CmdletBinding()]
|
||||
param(
|
||||
[string]$SystemVariable
|
||||
)
|
||||
$currentPath = (Get-ItemProperty -Path 'Registry::HKEY_LOCAL_MACHINE\System\CurrentControlSet\Control\Session Manager\Environment' -Name $SystemVariable).$SystemVariable
|
||||
return $currentPath
|
||||
}
|
||||
|
||||
function Set-SystemVariable{
|
||||
[CmdletBinding()]
|
||||
param(
|
||||
[string]$SystemVariable,
|
||||
[string]$Value
|
||||
)
|
||||
Set-ItemProperty -Path 'Registry::HKEY_LOCAL_MACHINE\System\CurrentControlSet\Control\Session Manager\Environment' -Name $SystemVariable -Value $Value
|
||||
return $Value
|
||||
}
|
||||
13
images/win/scripts/ImageHelpers/test/ImageHelpers.Tests.ps1
Normal file
13
images/win/scripts/ImageHelpers/test/ImageHelpers.Tests.ps1
Normal file
@@ -0,0 +1,13 @@
|
||||
$ModuleManifestName = 'ImageHelpers.psd1'
|
||||
$ModuleManifestPath = "$PSScriptRoot\..\$ModuleManifestName"
|
||||
|
||||
|
||||
|
||||
Describe 'Module Manifest Tests' {
|
||||
It 'Passes Test-ModuleManifest' {
|
||||
Test-ModuleManifest -Path $ModuleManifestPath | Should Not BeNullOrEmpty
|
||||
$? | Should Be $true
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user