diff --git a/images.CI/linux-and-win/azure-pipelines/ubuntu2204.yml b/images.CI/linux-and-win/azure-pipelines/ubuntu2204.yml new file mode 100644 index 000000000..8fc4c7b69 --- /dev/null +++ b/images.CI/linux-and-win/azure-pipelines/ubuntu2204.yml @@ -0,0 +1,20 @@ +schedules: +- cron: "0 0 * * *" + displayName: Daily + branches: + include: + - main + always: true + +trigger: none +pr: + autoCancel: true + branches: + include: + - main + +jobs: +- template: image-generation.yml + parameters: + image_type: ubuntu2204 + image_readme_name: Ubuntu2204-Readme.md \ No newline at end of file diff --git a/images/linux/config/ubuntu2204.conf b/images/linux/config/ubuntu2204.conf new file mode 100644 index 000000000..8a7f60ed6 --- /dev/null +++ b/images/linux/config/ubuntu2204.conf @@ -0,0 +1,2 @@ +# Name of pool supported by this image +POOL_NAME="Ubuntu 2204" diff --git a/images/linux/scripts/SoftwareReport/SoftwareReport.CachedTools.psm1 b/images/linux/scripts/SoftwareReport/SoftwareReport.CachedTools.psm1 index 66b85a38a..bb184ba4f 100755 --- a/images/linux/scripts/SoftwareReport/SoftwareReport.CachedTools.psm1 +++ b/images/linux/scripts/SoftwareReport/SoftwareReport.CachedTools.psm1 @@ -47,17 +47,21 @@ function Build-CachedToolsSection { $output += New-MDHeader "Go" -Level 4 $output += New-MDList -Lines (Get-ToolcacheGoVersions) -Style Unordered - $output += New-MDHeader "Node.js" -Level 4 - $output += New-MDList -Lines (Get-ToolcacheNodeVersions) -Style Unordered + if ((Test-IsUbuntu18) -or (Test-IsUbuntu20)) { + $output += New-MDHeader "Node.js" -Level 4 + $output += New-MDList -Lines (Get-ToolcacheNodeVersions) -Style Unordered + } $output += New-MDHeader "PyPy" -Level 4 $output += New-MDList -Lines (Get-ToolcachePyPyVersions) -Style Unordered - $output += New-MDHeader "Python" -Level 4 - $output += New-MDList -Lines (Get-ToolcachePythonVersions) -Style Unordered + if ((Test-IsUbuntu18) -or (Test-IsUbuntu20)) { + $output += New-MDHeader "Python" -Level 4 + $output += New-MDList -Lines (Get-ToolcachePythonVersions) -Style Unordered - $output += New-MDHeader "Ruby" -Level 4 - $output += New-MDList -Lines (Get-ToolcacheRubyVersions) -Style Unordered + $output += New-MDHeader "Ruby" -Level 4 + $output += New-MDList -Lines (Get-ToolcacheRubyVersions) -Style Unordered + } return $output } diff --git a/images/linux/scripts/SoftwareReport/SoftwareReport.Databases.psm1 b/images/linux/scripts/SoftwareReport/SoftwareReport.Databases.psm1 index 6966527f7..8ba9ea151 100644 --- a/images/linux/scripts/SoftwareReport/SoftwareReport.Databases.psm1 +++ b/images/linux/scripts/SoftwareReport/SoftwareReport.Databases.psm1 @@ -17,7 +17,7 @@ function Get-SqliteVersion { function Get-MySQLVersion { $mySQLVersion = mysqld --version | Take-OutputPart -Part 2 - if (-not (Test-IsUbuntu20)) { + if (Test-IsUbuntu18) { $mySQLVersion = $mySQLVersion | Take-OutputPart -Part 0 -Delimiter "-" } return "MySQL $mySQLVersion" diff --git a/images/linux/scripts/SoftwareReport/SoftwareReport.Generator.ps1 b/images/linux/scripts/SoftwareReport/SoftwareReport.Generator.ps1 index d824002ef..1e146b128 100644 --- a/images/linux/scripts/SoftwareReport/SoftwareReport.Generator.ps1 +++ b/images/linux/scripts/SoftwareReport/SoftwareReport.Generator.ps1 @@ -41,22 +41,27 @@ $runtimesList = @( (Get-BashVersion), (Get-CPPVersions), (Get-FortranVersions), - (Get-ErlangVersion), - (Get-ErlangRebar3Version), - (Get-MonoVersion), - (Get-MsbuildVersion), (Get-NodeVersion), (Get-PerlVersion), (Get-PythonVersion), (Get-Python3Version), (Get-RubyVersion), - (Get-SwiftVersion), (Get-JuliaVersion), - (Get-KotlinVersion), (Get-ClangVersions), (Get-ClangFormatVersions) ) +if ((Test-IsUbuntu18) -or (Test-IsUbuntu20)) { + $runtimesList += @( + (Get-MsbuildVersion), + (Get-KotlinVersion), + (Get-MonoVersion), + (Get-ErlangVersion), + (Get-ErlangRebar3Version), + (Get-SwiftVersion) + ) +} + $markdown += New-MDList -Style Unordered -Lines ($runtimesList | Sort-Object) $markdown += New-MDHeader "Package Management" -Level 3 @@ -81,14 +86,17 @@ $markdown += Build-PackageManagementEnvironmentTable | New-MDTable $markdown += New-MDNewLine $markdown += New-MDHeader "Project Management" -Level 3 -$projectManagementList = @( - (Get-AntVersion), - (Get-GradleVersion), - (Get-MavenVersion), - (Get-SbtVersion) -) +$projectManagementList = @() +if ((Test-IsUbuntu18) -or (Test-IsUbuntu20)) { + $projectManagementList += @( + (Get-AntVersion), + (Get-GradleVersion), + (Get-MavenVersion), + (Get-SbtVersion) + ) +} -if (Test-IsUbuntu20) { +if ((Test-IsUbuntu20) -or (Test-IsUbuntu22)) { $projectManagementList += @( (Get-LernaVersion) ) @@ -103,7 +111,6 @@ $toolsList = @( (Get-BazelVersion), (Get-BazeliskVersion), (Get-BicepVersion), - (Get-BuildahVersion), (Get-CodeQLBundleVersion), (Get-CMakeVersion), (Get-DockerMobyClientVersion), @@ -116,14 +123,12 @@ $toolsList = @( (Get-GitFTPVersion), (Get-HavegedVersion), (Get-HerokuVersion), - (Get-HHVMVersion), (Get-SVNVersion), (Get-JqVersion), (Get-YqVersion), (Get-KindVersion), (Get-KubectlVersion), (Get-KustomizeVersion), - (Get-LeiningenVersion), (Get-MediainfoVersion), (Get-HGVersion), (Get-MinikubeVersion), @@ -133,18 +138,26 @@ $toolsList = @( (Get-OpensslVersion), (Get-PackerVersion), (Get-ParcelVersion), - (Get-PhantomJSVersion), - (Get-PodManVersion), (Get-PulumiVersion), (Get-RVersion), - (Get-SkopeoVersion), (Get-SphinxVersion), (Get-TerraformVersion), (Get-YamllintVersion), (Get-ZstdVersion) ) -if (Test-IsUbuntu20) { +if ((Test-IsUbuntu18) -or (Test-IsUbuntu20)) { + $toolsList += @( + (Get-BuildahVersion), + (Get-PhantomJSVersion), + (Get-LeiningenVersion), + (Get-HHVMVersion), + (Get-PodManVersion), + (Get-SkopeoVersion) + ) +} + +if ((Test-IsUbuntu20) -or (Test-IsUbuntu22)) { $toolsList += (Get-FastlaneVersion) } @@ -168,11 +181,13 @@ $markdown += New-MDList -Style Unordered -Lines (@( ) | Sort-Object ) -$markdown += New-MDHeader "Java" -Level 3 -$markdown += Get-JavaVersions | New-MDTable -$markdown += New-MDNewLine +if ((Test-IsUbuntu18) -or (Test-IsUbuntu20)) { + $markdown += New-MDHeader "Java" -Level 3 + $markdown += Get-JavaVersions | New-MDTable + $markdown += New-MDNewLine +} -if (Test-IsUbuntu20) { +if ((Test-IsUbuntu20) -or (Test-IsUbuntu22)) { $markdown += New-MDHeader "GraalVM" -Level 3 $markdown += Build-GraalVMTable | New-MDTable $markdown += New-MDNewLine @@ -214,12 +229,17 @@ $markdown += New-MDHeader "Browsers and Drivers" -Level 3 $browsersAndDriversList = @( (Get-ChromeVersion), (Get-ChromeDriverVersion), - (Get-FirefoxVersion), - (Get-GeckodriverVersion), - (Get-ChromiumVersion), - (Get-SeleniumVersion) + (Get-ChromiumVersion) ) +if ((Test-IsUbuntu18) -or (Test-IsUbuntu20)) { + $browsersAndDriversList += @( + (Get-FirefoxVersion), + (Get-GeckodriverVersion), + (Get-SeleniumVersion) + ) +} + $markdown += New-MDList -Style Unordered -Lines $browsersAndDriversList $markdown += New-MDHeader "Environment variables" -Level 4 $markdown += Build-BrowserWebdriversEnvironmentTable | New-MDTable @@ -235,15 +255,23 @@ $tools = Get-DotnetTools $markdown += New-MDList -Lines $tools -Style Unordered $markdown += New-MDHeader "Databases" -Level 3 -$markdown += New-MDList -Style Unordered -Lines (@( - (Get-MongoDbVersion), +$databaseLists = @( (Get-SqliteVersion) - ) | Sort-Object ) +if ((Test-IsUbuntu18) -or (Test-IsUbuntu20)) { + $databaseLists += @( + (Get-MongoDbVersion) + ) +} + +$markdown += New-MDList -Style Unordered -Lines ( $databaseLists | Sort-Object ) + $markdown += Build-PostgreSqlSection $markdown += Build-MySQLSection -$markdown += Build-MSSQLToolsSection +if ((Test-IsUbuntu18) -or (Test-IsUbuntu20)) { + $markdown += Build-MSSQLToolsSection +} $markdown += New-MDHeader "Cached Tools" -Level 3 $markdown += Build-CachedToolsSection @@ -265,12 +293,14 @@ $markdown += New-MDList -Style Unordered -Lines @( $markdown += Build-WebServersSection -$markdown += New-MDHeader "Android" -Level 3 -$markdown += Build-AndroidTable | New-MDTable -$markdown += New-MDNewLine -$markdown += New-MDHeader "Environment variables" -Level 4 -$markdown += Build-AndroidEnvironmentTable | New-MDTable -$markdown += New-MDNewLine +if ((Test-IsUbuntu18) -or (Test-IsUbuntu20)) { + $markdown += New-MDHeader "Android" -Level 3 + $markdown += Build-AndroidTable | New-MDTable + $markdown += New-MDNewLine + $markdown += New-MDHeader "Environment variables" -Level 4 + $markdown += Build-AndroidEnvironmentTable | New-MDTable + $markdown += New-MDNewLine +} $markdown += New-MDHeader "Cached Docker images" -Level 3 $markdown += Get-CachedDockerImagesTableData | New-MDTable diff --git a/images/linux/scripts/base/configure-legacy-ssh.sh b/images/linux/scripts/base/configure-legacy-ssh.sh new file mode 100644 index 000000000..a59e9b7d4 --- /dev/null +++ b/images/linux/scripts/base/configure-legacy-ssh.sh @@ -0,0 +1,4 @@ +#!/bin/bash -e +# https://github.com/hashicorp/packer/issues/11656 +echo PubkeyAcceptedKeyTypes=+ssh-rsa >> /etc/ssh/sshd_config +systemctl reload sshd.service \ No newline at end of file diff --git a/images/linux/scripts/helpers/Common.Helpers.psm1 b/images/linux/scripts/helpers/Common.Helpers.psm1 index eab83e204..b55a910be 100644 --- a/images/linux/scripts/helpers/Common.Helpers.psm1 +++ b/images/linux/scripts/helpers/Common.Helpers.psm1 @@ -46,6 +46,10 @@ function Test-IsUbuntu20 { return (lsb_release -rs) -eq "20.04" } +function Test-IsUbuntu22 { + return (lsb_release -rs) -eq "22.04" +} + function Get-ToolsetContent { $toolset = Join-Path $env:INSTALLER_SCRIPT_FOLDER "toolset.json" Get-Content $toolset -Raw | ConvertFrom-Json @@ -69,7 +73,7 @@ function Get-ToolsetValue { function Get-AndroidPackages { $androidSDKManagerPath = "/usr/local/lib/android/sdk/cmdline-tools/latest/bin/sdkmanager" - $androidPackages = & $androidSDKManagerPath --list --verbose + $androidPackages = & $androidSDKManagerPath --list --verbose 2>&1 return $androidPackages } diff --git a/images/linux/scripts/helpers/os.sh b/images/linux/scripts/helpers/os.sh index 6bb38f51a..f3a71bbd9 100644 --- a/images/linux/scripts/helpers/os.sh +++ b/images/linux/scripts/helpers/os.sh @@ -14,6 +14,11 @@ function isUbuntu20 lsb_release -d | grep -q 'Ubuntu 20' } +function isUbuntu22 +{ + lsb_release -d | grep -q 'Ubuntu 22' +} + function getOSVersionLabel { lsb_release -cs diff --git a/images/linux/scripts/installers/android.sh b/images/linux/scripts/installers/android.sh index cb56acde7..3c44f86dc 100644 --- a/images/linux/scripts/installers/android.sh +++ b/images/linux/scripts/installers/android.sh @@ -102,7 +102,7 @@ filter_components_by_version $minimumBuildToolVersion "${availableBuildTools[@]} echo "y" | $SDKMANAGER ${components[@]} # Old skdmanager from sdk tools doesn't work with Java > 8, set version 8 explicitly -if isUbuntu20; then +if isUbuntu20 || isUbuntu22; then sed -i "2i export JAVA_HOME=${JAVA_HOME_8_X64}" ${ANDROID_SDK_ROOT}/tools/bin/sdkmanager fi diff --git a/images/linux/scripts/installers/aws.sh b/images/linux/scripts/installers/aws.sh index c7f851e64..0549180b7 100644 --- a/images/linux/scripts/installers/aws.sh +++ b/images/linux/scripts/installers/aws.sh @@ -8,18 +8,16 @@ source $HELPER_SCRIPTS/os.sh source $HELPER_SCRIPTS/install.sh -# Install the AWS CLI v1 Ubuntu18 and AWS CLI v2 on Ubuntu20 -if isUbuntu20 ; then - download_with_retries "https://awscli.amazonaws.com/awscli-exe-linux-x86_64.zip" "/tmp" "awscliv2.zip" - unzip -qq /tmp/awscliv2.zip -d /tmp - /tmp/aws/install -i /usr/local/aws-cli -b /usr/local/bin -fi - +# Install the AWS CLI v1 Ubuntu18 and AWS CLI v2 on Ubuntu20, Ubuntu22 # The installation should be run after python3 is installed as aws-cli V1 dropped python2 support if isUbuntu18 ; then download_with_retries "https://s3.amazonaws.com/aws-cli/awscli-bundle.zip" "/tmp" "awscli-bundle.zip" unzip -qq /tmp/awscli-bundle.zip -d /tmp python3 /tmp/awscli-bundle/install -i /usr/local/aws -b /usr/local/bin/aws +else + download_with_retries "https://awscli.amazonaws.com/awscli-exe-linux-x86_64.zip" "/tmp" "awscliv2.zip" + unzip -qq /tmp/awscliv2.zip -d /tmp + /tmp/aws/install -i /usr/local/aws-cli -b /usr/local/bin fi download_with_retries "https://s3.amazonaws.com/session-manager-downloads/plugin/latest/ubuntu_64bit/session-manager-plugin.deb" "/tmp" "session-manager-plugin.deb" diff --git a/images/linux/scripts/installers/php.sh b/images/linux/scripts/installers/php.sh index e230a3808..12101b40c 100644 --- a/images/linux/scripts/installers/php.sh +++ b/images/linux/scripts/installers/php.sh @@ -103,8 +103,8 @@ mv phpunit /usr/local/bin/phpunit # ubuntu 20.04 libzip-dev is libzip5 based and is not compatible libzip-dev of ppa:ondrej/php # see https://github.com/actions/virtual-environments/issues/1084 -if isUbuntu20 ; then - rm /etc/apt/sources.list.d/ondrej-ubuntu-php-focal.list +if isUbuntu20 || isUbuntu22; then + rm /etc/apt/sources.list.d/ondrej-*.list apt-get update fi diff --git a/images/linux/scripts/installers/powershellcore.sh b/images/linux/scripts/installers/powershellcore.sh index fa319c40c..9aa3fe705 100644 --- a/images/linux/scripts/installers/powershellcore.sh +++ b/images/linux/scripts/installers/powershellcore.sh @@ -4,5 +4,19 @@ ## Desc: Installs powershellcore ################################################################################ -# Install Powershell -apt-get install -y powershell \ No newline at end of file +# Source the helpers for use with the script +source $HELPER_SCRIPTS/os.sh +source $HELPER_SCRIPTS/install.sh + +if isUbuntu22; then + # Install libssl1.1 + download_with_retries "http://security.ubuntu.com/ubuntu/pool/main/o/openssl/libssl1.1_1.1.1l-1ubuntu1.2_amd64.deb" "/tmp" + dpkg -i /tmp/libssl1.1_1.1.1l-1ubuntu1.2_amd64.deb + + # Install Powershell + download_with_retries "https://github.com/PowerShell/PowerShell/releases/download/v7.2.3/powershell-lts_7.2.3-1.deb_amd64.deb" "/tmp" + dpkg -i /tmp/powershell-lts_7.2.3-1.deb_amd64.deb +else + # Install Powershell + apt-get install -y powershell +fi diff --git a/images/linux/scripts/installers/rust.sh b/images/linux/scripts/installers/rust.sh index 123c0362e..515525ffd 100644 --- a/images/linux/scripts/installers/rust.sh +++ b/images/linux/scripts/installers/rust.sh @@ -6,6 +6,7 @@ # Source the helpers for use with the script source $HELPER_SCRIPTS/etc-environment.sh +source $HELPER_SCRIPTS/os.sh export RUSTUP_HOME=/etc/skel/.rustup export CARGO_HOME=/etc/skel/.cargo @@ -17,7 +18,12 @@ source $CARGO_HOME/env # Install common tools rustup component add rustfmt clippy -cargo install --locked bindgen cbindgen cargo-audit cargo-outdated + +if isUbuntu22; then + cargo install bindgen cbindgen cargo-audit cargo-outdated +else + cargo install --locked bindgen cbindgen cargo-audit cargo-outdated +fi # Cleanup Cargo cache rm -rf ${CARGO_HOME}/registry/* diff --git a/images/linux/scripts/tests/Android.Tests.ps1 b/images/linux/scripts/tests/Android.Tests.ps1 index 3d530a0b9..028ea5518 100644 --- a/images/linux/scripts/tests/Android.Tests.ps1 +++ b/images/linux/scripts/tests/Android.Tests.ps1 @@ -1,4 +1,6 @@ Describe "Android" { + if (Test-IsUbuntu22) { return } + $androidSdkManagerPackages = Get-AndroidPackages [int]$platformMinVersion = Get-ToolsetValue "android.platform_min_version" [version]$buildToolsMinVersion = Get-ToolsetValue "android.build_tools_min_version" diff --git a/images/linux/scripts/tests/Browsers.Tests.ps1 b/images/linux/scripts/tests/Browsers.Tests.ps1 index 11b523d94..e6e77bbf0 100644 --- a/images/linux/scripts/tests/Browsers.Tests.ps1 +++ b/images/linux/scripts/tests/Browsers.Tests.ps1 @@ -1,4 +1,4 @@ -Describe "Firefox" { +Describe "Firefox" -Skip:(Test-IsUbuntu22) { It "Firefox" { "sudo -i firefox --version" | Should -ReturnZeroExitCode } diff --git a/images/linux/scripts/tests/Common.Tests.ps1 b/images/linux/scripts/tests/Common.Tests.ps1 index ccd1efd04..c4bf5897a 100644 --- a/images/linux/scripts/tests/Common.Tests.ps1 +++ b/images/linux/scripts/tests/Common.Tests.ps1 @@ -29,7 +29,7 @@ Describe "PHP" { } } -Describe "Swift" { +Describe "Swift" -Skip:(Test-IsUbuntu22) { It "swift" { "swift --version" | Should -ReturnZeroExitCode } diff --git a/images/linux/scripts/tests/Databases.Tests.ps1 b/images/linux/scripts/tests/Databases.Tests.ps1 index 1108a0ed4..9145312ba 100644 --- a/images/linux/scripts/tests/Databases.Tests.ps1 +++ b/images/linux/scripts/tests/Databases.Tests.ps1 @@ -1,4 +1,4 @@ -Describe "MongoDB" { +Describe "MongoDB" -Skip:(Test-IsUbuntu22) { It "" -TestCases @( @{ ToolName = "mongo" } @{ ToolName = "mongod" } diff --git a/images/linux/scripts/tests/Java.Tests.ps1 b/images/linux/scripts/tests/Java.Tests.ps1 index 67fa79295..2621a5843 100644 --- a/images/linux/scripts/tests/Java.Tests.ps1 +++ b/images/linux/scripts/tests/Java.Tests.ps1 @@ -1,6 +1,6 @@ Import-Module "$PSScriptRoot/../helpers/Common.Helpers.psm1" -DisableNameChecking -Describe "Java" { +Describe "Java" -Skip:(Test-IsUbuntu22) { $toolsetJava = (Get-ToolsetContent).java $defaultVersion = $toolsetJava.default $defaultVendor = $toolsetJava.default_vendor diff --git a/images/linux/scripts/tests/Tools.Tests.ps1 b/images/linux/scripts/tests/Tools.Tests.ps1 index 56596be32..3b1a8cf0b 100644 --- a/images/linux/scripts/tests/Tools.Tests.ps1 +++ b/images/linux/scripts/tests/Tools.Tests.ps1 @@ -126,7 +126,7 @@ Describe "Cmake" { } } -Describe "erlang" { +Describe "erlang" -Skip:(Test-IsUbuntu22) { $testCases = @("erl -version", "erlc -v", "rebar3 -v") | ForEach-Object { @{ErlangCommand = $_} } It "erlang " -TestCases $testCases { @@ -162,7 +162,7 @@ Describe "gfortran" { } } -Describe "Mono" { +Describe "Mono" -Skip:(Test-IsUbuntu22) { It "mono" { "mono --version" | Should -ReturnZeroExitCode } @@ -176,7 +176,7 @@ Describe "Mono" { } } -Describe "MSSQLCommandLineTools" { +Describe "MSSQLCommandLineTools" -Skip:(Test-IsUbuntu22) { It "sqlcmd" { "sqlcmd -?" | Should -ReturnZeroExitCode } @@ -200,7 +200,7 @@ Describe "Sbt" { } } -Describe "Selenium" { +Describe "Selenium" -Skip:(Test-IsUbuntu22) { It "Selenium is installed" { $seleniumBinaryName = (Get-ToolsetContent).selenium.binary_name $seleniumPath = Join-Path "/usr/share/java" "$seleniumBinaryName.jar" @@ -244,7 +244,7 @@ Describe "Heroku" { } } -Describe "HHVM" { +Describe "HHVM" -Skip:(Test-IsUbuntu22) { It "hhvm" { "hhvm --version" | Should -ReturnZeroExitCode } @@ -292,7 +292,7 @@ Describe "Kubernetes tools" { } } -Describe "Leiningen" { +Describe "Leiningen" -Skip:(Test-IsUbuntu22) { It "leiningen" { "lein --version" | Should -ReturnZeroExitCode } @@ -316,13 +316,13 @@ Describe "Pulumi" { } } -Describe "Phantomjs" { +Describe "Phantomjs" -Skip:(Test-IsUbuntu22) { It "phantomjs" { "phantomjs --version" | Should -ReturnZeroExitCode } } -Describe "GraalVM" -Skip:(-not (Test-IsUbuntu20)) { +Describe "GraalVM" -Skip:(Test-IsUbuntu18) { It "graalvm" { '$GRAALVM_11_ROOT/bin/java -version' | Should -ReturnZeroExitCode } @@ -332,7 +332,7 @@ Describe "GraalVM" -Skip:(-not (Test-IsUbuntu20)) { } } -Describe "Containers" { +Describe "Containers" -Skip:(Test-IsUbuntu22) { $testCases = @("podman", "buildah", "skopeo") | ForEach-Object { @{ContainerCommand = $_} } It "" -TestCases $testCases { @@ -391,7 +391,7 @@ Describe "yq" { } } -Describe "Kotlin" { +Describe "Kotlin" -Skip:(Test-IsUbuntu22) { It "kapt" { "kapt -version"| Should -ReturnZeroExitCode } diff --git a/images/linux/toolsets/toolset-2204.json b/images/linux/toolsets/toolset-2204.json new file mode 100644 index 000000000..c031f5c9e --- /dev/null +++ b/images/linux/toolsets/toolset-2204.json @@ -0,0 +1,301 @@ +{ + "toolcache": [ + { + "name": "PyPy", + "arch": "x64", + "platform" : "linux", + "versions": [ + "3.7", + "3.8", + "3.9" + ] + }, + { + "name": "go", + "url" : "https://raw.githubusercontent.com/actions/go-versions/main/versions-manifest.json", + "arch": "x64", + "platform" : "linux", + "versions": [ + "1.17.*", + "1.18.*" + ], + "default": "1.18.*" + }, + { + "name": "CodeQL", + "platform" : "linux", + "arch": "x64", + "versions": [ + "*" + ] + } + ], + "java": { + "default": "11", + "default_vendor": "Temurin-Hotspot", + "vendors": [ + { + "name": "Temurin-Hotspot", + "versions": [ "8", "11", "17" ] + } + ], + "maven": "3.8.5" + }, + "android": { + "platform_min_version": "27", + "build_tools_min_version": "27.0.0", + "extra_list": [ + "android;m2repository", + "google;m2repository", + "google;google_play_services" + ], + "addon_list": [ + ], + "additional_tools": [ + "cmake;3.10.2.4988404", + "cmake;3.18.1" + ], + "ndk": { + "default": "21", + "versions": [ + "21", "22", "23" + ] + } + }, + "powershellModules": [ + {"name": "MarkdownPS"}, + {"name": "Microsoft.Graph"}, + {"name": "Pester"}, + {"name": "PSScriptAnalyzer"} + ], + "azureModules": [ + { + "name": "az", + "url" : "https://raw.githubusercontent.com/Azure/az-ps-module-versions/main/versions-manifest.json", + "versions": [ + "7.3.2" + ], + "zip_versions": [ + ] + } + ], + "apt": { + "common_packages": [ + "autoconf", + "automake", + "build-essential", + "dbus", + "dnsutils", + "dpkg", + "fakeroot", + "fonts-noto-color-emoji", + "gnupg2", + "imagemagick", + "iproute2", + "iputils-ping", + "lib32z1", + "libc++abi-dev", + "libc++-dev", + "libcurl4", + "libgbm-dev", + "libgconf-2-4", + "libgsl-dev", + "libgtk-3-0", + "libmagic-dev", + "libmagickcore-dev", + "libmagickwand-dev", + "libsecret-1-dev", + "libsqlite3-dev", + "libtool", + "libunwind8", + "libxkbfile-dev", + "libxss1", + "libssl-dev", + "locales", + "mercurial", + "openssh-client", + "p7zip-rar", + "pkg-config", + "python-is-python3", + "rpm", + "texinfo", + "tk", + "tzdata", + "upx", + "xorriso", + "xvfb", + "xz-utils", + "zsync" + ], + "cmd_packages": [ + "acl", + "aria2", + "binutils", + "bison", + "brotli", + "bzip2", + "coreutils", + "curl", + "file", + "flex", + "ftp", + "haveged", + "jq", + "m4", + "mediainfo", + "netcat", + "net-tools", + "p7zip-full", + "parallel", + "pass", + "patchelf", + "pollinate", + "rsync", + "shellcheck", + "sphinxsearch", + "sqlite3", + "ssh", + "sshpass", + "subversion", + "sudo", + "swig", + "telnet", + "time", + "unzip", + "wget", + "zip" + ] + }, + "brew": [ + {"name": "zstd"} + ], + "docker": { + "images": [ + "alpine:3.14", + "alpine:3.15", + "buildpack-deps:buster", + "buildpack-deps:bullseye", + "debian:10", + "debian:11", + "moby/buildkit:latest", + "node:14", + "node:16", + "node:14-alpine", + "node:16-alpine", + "ubuntu:18.04", + "ubuntu:20.04", + "ubuntu:22.04" + ] + }, + "pipx": [ + { + "package": "yamllint", + "cmd": "yamllint" + }, + { + "package": "ansible-core", + "cmd": "ansible" + } + ], + "dotnet": { + "aptPackages": [ + "dotnet-sdk-6.0" + ], + "versions": [ + "6.0" + ], + "tools": [ + { "name": "nbgv", "test": "nbgv --version", "getversion" : "nbgv --version" } + ] + }, + "clang": { + "versions": [ + "11", + "12" + ], + "default_version": "11" + }, + "gcc": { + "versions": [ + "g++-9", + "g++-10" + ] + }, + "gfortran": { + "versions": [ + "gfortran-9", + "gfortran-10" + ] + }, + "php": { + "versions": [ + "8.1" + ] + }, + "rubygems": [ + {"name": "fastlane"} + ], + "selenium": { + "version": "4", + "binary_name": "selenium-server" + }, + "node": { + "default": "16" + }, + "node_modules": [ + { + "name": "grunt", + "command": "grunt" + }, + { + "name": "gulp", + "command": "gulp" + }, + { + "name": "n", + "command": "n" + }, + { + "name": "parcel", + "command": "parcel" + }, + { + "name": "typescript", + "command": "tsc" + }, + { + "name": "newman", + "command": "newman" + }, + { + "name": "vercel", + "command": "vercel" + }, + { + "name": "webpack", + "command": "webpack" + }, + { + "name": "webpack-cli", + "command": "webpack-cli" + }, + { + "name": "netlify-cli", + "command": "netlify" + }, + { + "name": "lerna", + "command": "lerna" + }, + { + "name": "yarn", + "command": "yarn" + } + ], + "mongodb": { + "version": "5.0" + }, + "postgresql": { + "version": "14" + } +} diff --git a/images/linux/ubuntu1804.json b/images/linux/ubuntu1804.json index 538f8019e..201ae94c1 100644 --- a/images/linux/ubuntu1804.json +++ b/images/linux/ubuntu1804.json @@ -149,20 +149,14 @@ { "type": "shell", "scripts": [ - "{{template_dir}}/scripts/installers/complete-snap-setup.sh" + "{{template_dir}}/scripts/installers/complete-snap-setup.sh", + "{{template_dir}}/scripts/installers/powershellcore.sh" ], "environment_vars": [ "HELPER_SCRIPTS={{user `helper_script_folder`}}" ], "execute_command": "sudo sh -c '{{ .Vars }} {{ .Path }}'" }, - { - "type": "shell", - "scripts": [ - "{{template_dir}}/scripts/installers/powershellcore.sh" - ], - "execute_command": "sudo sh -c '{{ .Vars }} {{ .Path }}'" - }, { "type": "shell", "scripts": [ diff --git a/images/linux/ubuntu2004.json b/images/linux/ubuntu2004.json index a44f7402d..248620fc4 100644 --- a/images/linux/ubuntu2004.json +++ b/images/linux/ubuntu2004.json @@ -149,20 +149,14 @@ { "type": "shell", "scripts": [ - "{{template_dir}}/scripts/installers/complete-snap-setup.sh" + "{{template_dir}}/scripts/installers/complete-snap-setup.sh", + "{{template_dir}}/scripts/installers/powershellcore.sh" ], "environment_vars": [ "HELPER_SCRIPTS={{user `helper_script_folder`}}" ], "execute_command": "sudo sh -c '{{ .Vars }} {{ .Path }}'" }, - { - "type": "shell", - "scripts": [ - "{{template_dir}}/scripts/installers/powershellcore.sh" - ], - "execute_command": "sudo sh -c '{{ .Vars }} {{ .Path }}'" - }, { "type": "shell", "scripts": [ diff --git a/images/linux/ubuntu2204.json b/images/linux/ubuntu2204.json new file mode 100644 index 000000000..f5479e218 --- /dev/null +++ b/images/linux/ubuntu2204.json @@ -0,0 +1,366 @@ +{ + "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`}}", + "resource_group": "{{env `ARM_RESOURCE_GROUP`}}", + "storage_account": "{{env `ARM_STORAGE_ACCOUNT`}}", + "build_resource_group_name": "{{env `BUILD_RESOURCE_GROUP_NAME`}}", + "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`}}", + "allowed_inbound_ip_addresses": "{{env `AGENT_IP`}}", + "image_folder": "/imagegeneration", + "imagedata_file": "/imagegeneration/imagedata.json", + "installer_script_folder": "/imagegeneration/installers", + "helper_script_folder": "/imagegeneration/helpers", + "vm_size": "Standard_D4s_v4", + "capture_name_prefix": "packer", + "image_version": "dev", + "image_os": "ubuntu22", + "run_validation_diskspace": "false", + "dockerhub_login": "{{env `DOCKERHUB_LOGIN`}}", + "dockerhub_password": "{{env `DOCKERHUB_PASSWORD`}}" + }, + "sensitive-variables": [ + "client_secret" + ], + "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`}}", + "build_resource_group_name": "{{user `build_resource_group_name`}}", + "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`}}", + "allowed_inbound_ip_addresses": "{{user `allowed_inbound_ip_addresses`}}", + "user_data_file": "./images/linux/scripts/base/configure-legacy-ssh.sh", + "os_type": "Linux", + "image_publisher": "canonical", + "image_offer": "0001-com-ubuntu-server-jammy", + "image_sku": "22_04-lts", + "os_disk_size_gb": "86" + } + ], + "provisioners": [ + { + "type": "shell", + "inline": [ + "mkdir {{user `image_folder`}}", + "chmod 777 {{user `image_folder`}}" + ], + "execute_command": "sudo sh -c '{{ .Vars }} {{ .Path }}'" + }, + { + "type": "shell", + "script": "{{template_dir}}/scripts/base/apt-mock.sh", + "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", + "script": "{{template_dir}}/scripts/base/apt.sh", + "environment_vars": [ + "DEBIAN_FRONTEND=noninteractive" + ], + "execute_command": "sudo sh -c '{{ .Vars }} {{ .Path }}'" + }, + { + "type": "shell", + "script": "{{template_dir}}/scripts/base/limits.sh", + "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": "file", + "source": "{{ template_dir }}/post-generation", + "destination": "{{user `image_folder`}}" + }, + { + "type": "file", + "source": "{{template_dir}}/scripts/tests", + "destination": "{{user `image_folder`}}" + }, + { + "type": "file", + "source": "{{ template_dir }}/scripts/SoftwareReport", + "destination": "{{user `image_folder`}}" + }, + { + "type": "file", + "source": "{{template_dir}}/toolsets/toolset-2204.json", + "destination": "{{user `installer_script_folder`}}/toolset.json" + }, + { + "type": "shell", + "scripts": [ + "{{template_dir}}/scripts/installers/preimagedata.sh" + ], + "environment_vars": [ + "IMAGE_VERSION={{user `image_version`}}", + "IMAGEDATA_FILE={{user `imagedata_file`}}" + ], + "execute_command": "sudo sh -c '{{ .Vars }} {{ .Path }}'" + }, + { + "type": "shell", + "scripts": [ + "{{template_dir}}/scripts/installers/configure-environment.sh" + ], + "environment_vars": [ + "IMAGE_VERSION={{user `image_version`}}", + "IMAGE_OS={{user `image_os`}}", + "HELPER_SCRIPTS={{user `helper_script_folder`}}" + ], + "execute_command": "sudo sh -c '{{ .Vars }} {{ .Path }}'" + }, + { + "type": "shell", + "scripts": [ + "{{template_dir}}/scripts/installers/complete-snap-setup.sh", + "{{template_dir}}/scripts/installers/powershellcore.sh" + ], + "environment_vars": [ + "HELPER_SCRIPTS={{user `helper_script_folder`}}" + ], + "execute_command": "sudo sh -c '{{ .Vars }} {{ .Path }}'" + }, + { + "type": "shell", + "scripts": [ + "{{template_dir}}/scripts/installers/Install-PowerShellModules.ps1", + "{{template_dir}}/scripts/installers/Install-AzureModules.ps1" + ], + "environment_vars": [ + "HELPER_SCRIPTS={{user `helper_script_folder`}}", + "INSTALLER_SCRIPT_FOLDER={{user `installer_script_folder`}}" + ], + "execute_command": "sudo sh -c '{{ .Vars }} pwsh -f {{ .Path }}'" + }, + { + "type": "shell", + "scripts": [ + "{{template_dir}}/scripts/installers/docker-compose.sh", + "{{template_dir}}/scripts/installers/docker-moby.sh" + ], + "environment_vars": [ + "HELPER_SCRIPTS={{user `helper_script_folder`}}", + "INSTALLER_SCRIPT_FOLDER={{user `installer_script_folder`}}", + "DOCKERHUB_LOGIN={{user `dockerhub_login`}}", + "DOCKERHUB_PASSWORD={{user `dockerhub_password`}}" + ], + "execute_command": "sudo sh -c '{{ .Vars }} {{ .Path }}'" + }, + { + "type": "shell", + "scripts": [ + "{{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/basic.sh", + "{{template_dir}}/scripts/installers/bicep.sh", + "{{template_dir}}/scripts/installers/aliyun-cli.sh", + "{{template_dir}}/scripts/installers/apache.sh", + "{{template_dir}}/scripts/installers/aws.sh", + "{{template_dir}}/scripts/installers/clang.sh", + "{{template_dir}}/scripts/installers/cmake.sh", + "{{template_dir}}/scripts/installers/codeql-bundle.sh", + "{{template_dir}}/scripts/installers/dotnetcore-sdk.sh", + "{{template_dir}}/scripts/installers/gcc.sh", + "{{template_dir}}/scripts/installers/gfortran.sh", + "{{template_dir}}/scripts/installers/git.sh", + "{{template_dir}}/scripts/installers/github-cli.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/kubernetes-tools.sh", + "{{template_dir}}/scripts/installers/oc.sh", + "{{template_dir}}/scripts/installers/miniconda.sh", + "{{template_dir}}/scripts/installers/mysql.sh", + "{{template_dir}}/scripts/installers/sqlpackage.sh", + "{{template_dir}}/scripts/installers/nginx.sh", + "{{template_dir}}/scripts/installers/nvm.sh", + "{{template_dir}}/scripts/installers/nodejs.sh", + "{{template_dir}}/scripts/installers/bazel.sh", + "{{template_dir}}/scripts/installers/oras-cli.sh", + "{{template_dir}}/scripts/installers/php.sh", + "{{template_dir}}/scripts/installers/postgresql.sh", + "{{template_dir}}/scripts/installers/pulumi.sh", + "{{template_dir}}/scripts/installers/ruby.sh", + "{{template_dir}}/scripts/installers/r.sh", + "{{template_dir}}/scripts/installers/rust.sh", + "{{template_dir}}/scripts/installers/julia.sh", + "{{template_dir}}/scripts/installers/sbt.sh", + "{{template_dir}}/scripts/installers/terraform.sh", + "{{template_dir}}/scripts/installers/packer.sh", + "{{template_dir}}/scripts/installers/vcpkg.sh", + "{{template_dir}}/scripts/installers/dpkg-config.sh", + "{{template_dir}}/scripts/installers/yq.sh", + "{{template_dir}}/scripts/installers/pypy.sh", + "{{template_dir}}/scripts/installers/python.sh", + "{{template_dir}}/scripts/installers/graalvm.sh" + ], + "environment_vars": [ + "HELPER_SCRIPTS={{user `helper_script_folder`}}", + "INSTALLER_SCRIPT_FOLDER={{user `installer_script_folder`}}", + "DEBIAN_FRONTEND=noninteractive" + ], + "execute_command": "sudo sh -c '{{ .Vars }} {{ .Path }}'" + }, + { + "type": "shell", + "scripts": [ + "{{template_dir}}/scripts/installers/Install-Toolset.ps1", + "{{template_dir}}/scripts/installers/Configure-Toolset.ps1" + ], + "environment_vars": [ + "HELPER_SCRIPTS={{user `helper_script_folder`}}", + "INSTALLER_SCRIPT_FOLDER={{user `installer_script_folder`}}" + ], + "execute_command": "sudo sh -c '{{ .Vars }} pwsh -f {{ .Path }}'" + }, + { + "type": "shell", + "scripts": [ + "{{template_dir}}/scripts/installers/pipx-packages.sh" + ], + "environment_vars": [ + "HELPER_SCRIPTS={{user `helper_script_folder`}}", + "INSTALLER_SCRIPT_FOLDER={{user `installer_script_folder`}}" + ], + "execute_command": "sudo sh -c '{{ .Vars }} {{ .Path }}'" + }, + { + "type": "shell", + "scripts": [ + "{{template_dir}}/scripts/installers/homebrew.sh" + ], + "environment_vars": [ + "HELPER_SCRIPTS={{user `helper_script_folder`}}", + "DEBIAN_FRONTEND=noninteractive", + "INSTALLER_SCRIPT_FOLDER={{user `installer_script_folder`}}" + ], + "execute_command": "/bin/sh -c '{{ .Vars }} {{ .Path }}'" + }, + { + "type": "shell", + "script": "{{template_dir}}/scripts/base/snap.sh", + "execute_command": "sudo sh -c '{{ .Vars }} {{ .Path }}'" + }, + { + "type": "shell", + "expect_disconnect": true, + "scripts": [ + "{{template_dir}}/scripts/base/reboot.sh" + ], + "execute_command": "/bin/sh -c '{{ .Vars }} {{ .Path }}'" + }, + { + "type": "shell", + "pause_before": "60s", + "start_retry_timeout": "10m", + "scripts": [ + "{{template_dir}}/scripts/installers/cleanup.sh" + ], + "execute_command": "sudo sh -c '{{ .Vars }} {{ .Path }}'" + }, + { + "type": "shell", + "script": "{{template_dir}}/scripts/base/apt-mock-remove.sh", + "execute_command": "sudo sh -c '{{ .Vars }} {{ .Path }}'" + }, + { + "type": "shell", + "inline": [ + "pwsh -File {{user `image_folder`}}/SoftwareReport/SoftwareReport.Generator.ps1 -OutputDirectory {{user `image_folder`}}", + "pwsh -File {{user `image_folder`}}/tests/RunAll-Tests.ps1 -OutputDirectory {{user `image_folder`}}" + ], + "environment_vars": [ + "IMAGE_VERSION={{user `image_version`}}", + "INSTALLER_SCRIPT_FOLDER={{user `installer_script_folder`}}" + ] + }, + { + "type": "file", + "source": "{{user `image_folder`}}/Ubuntu-Readme.md", + "destination": "{{template_dir}}/Ubuntu2204-Readme.md", + "direction": "download" + }, + { + "type": "shell", + "scripts":[ + "{{template_dir}}/scripts/installers/post-deployment.sh" + ], + "environment_vars":[ + "HELPER_SCRIPT_FOLDER={{user `helper_script_folder`}}", + "INSTALLER_SCRIPT_FOLDER={{user `installer_script_folder`}}", + "IMAGE_FOLDER={{user `image_folder`}}" + ], + "execute_command": "sudo sh -c '{{ .Vars }} {{ .Path }}'" + }, + { + "type": "shell", + "scripts":[ + "{{template_dir}}/scripts/installers/validate-disk-space.sh" + ], + "environment_vars": [ + "RUN_VALIDATION={{user `run_validation_diskspace`}}" + ] + }, + { + "type": "file", + "source": "{{template_dir}}/config/ubuntu2204.conf", + "destination": "/tmp/" + }, + { + "type": "shell", + "inline": [ + "mkdir -p /etc/vsts", + "cp /tmp/ubuntu2204.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 }}'" + } + ] +}