{ "variables": { "client_id": "{{env `ARM_CLIENT_ID`}}", "client_secret": "{{env `ARM_CLIENT_SECRET`}}", "client_cert_path": "{{env `ARM_CLIENT_CERT_PATH`}}", "subscription_id": "{{env `ARM_SUBSCRIPTION_ID`}}", "tenant_id": "{{env `ARM_TENANT_ID`}}", "managed_image_resource_group_name": "{{env `ARM_RESOURCE_GROUP`}}", "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", "managed_image_name": "packer-ubuntu20-dev", "image_version": "dev", "image_os": "ubuntu20", "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`}}", "client_cert_path": "{{user `client_cert_path`}}", "subscription_id": "{{user `subscription_id`}}", "tenant_id": "{{user `tenant_id`}}", "location": "{{user `location`}}", "vm_size": "{{user `vm_size`}}", "managed_image_name": "{{user `managed_image_name`}}", "managed_image_resource_group_name": "{{user `managed_image_resource_group_name`}}", "build_resource_group_name": "{{user `build_resource_group_name`}}", "temp_resource_group_name": "{{user `temp_resource_group_name`}}", "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`}}", "os_type": "Linux", "image_publisher": "canonical", "image_offer": "0001-com-ubuntu-server-focal", "image_sku": "20_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/build/configure-apt-mock.sh", "execute_command": "sudo sh -c '{{ .Vars }} {{ .Path }}'" }, { "type": "shell", "scripts": [ "{{template_dir}}/../scripts/build/install-ms-repos.sh", "{{template_dir}}/../scripts/build/configure-apt-sources.sh", "{{template_dir}}/../scripts/build/configure-apt.sh" ], "environment_vars": [ "DEBIAN_FRONTEND=noninteractive" ], "execute_command": "sudo sh -c '{{ .Vars }} {{ .Path }}'" }, { "type": "shell", "script": "{{template_dir}}/../scripts/build/configure-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/build", "destination": "{{user `installer_script_folder`}}" }, { "type": "file", "sources": [ "{{template_dir}}/../scripts/tests", "{{template_dir}}/../scripts/docs-gen", "{{template_dir}}/../assets/post-gen" ], "destination": "{{user `image_folder`}}" }, { "type": "file", "source": "{{template_dir}}/../../../helpers/software-report-base", "destination": "{{user `image_folder`}}/docs-gen/" }, { "type": "file", "source": "{{template_dir}}/../toolsets/toolset-2004.json", "destination": "{{user `installer_script_folder`}}/toolset.json" }, { "type": "shell", "inline": [ "mv {{user `image_folder`}}/docs-gen {{user `image_folder`}}/SoftwareReport", "mv {{user `image_folder`}}/post-gen {{user `image_folder`}}/post-generation" ], "execute_command": "sudo sh -c '{{ .Vars }} {{ .Path }}'" }, { "type": "shell", "scripts": [ "{{template_dir}}/../scripts/build/configure-image-data.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/build/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/build/install-apt-vital.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/build/install-powershell.sh" ], "environment_vars": [ "HELPER_SCRIPTS={{user `helper_script_folder`}}" ], "execute_command": "sudo sh -c '{{ .Vars }} {{ .Path }}'" }, { "type": "shell", "scripts": [ "{{template_dir}}/../scripts/build/Install-PowerShellModules.ps1", "{{template_dir}}/../scripts/build/Install-PowerShellAzModules.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/build/install-actions-cache.sh", "{{template_dir}}/../scripts/build/install-runner-package.sh", "{{template_dir}}/../scripts/build/install-apt-common.sh", "{{template_dir}}/../scripts/build/install-azcopy.sh", "{{template_dir}}/../scripts/build/install-azure-cli.sh", "{{template_dir}}/../scripts/build/install-azure-devops-cli.sh", "{{template_dir}}/../scripts/build/install-bicep.sh", "{{template_dir}}/../scripts/build/install-aliyun-cli.sh", "{{template_dir}}/../scripts/build/install-apache.sh", "{{template_dir}}/../scripts/build/install-aws-tools.sh", "{{template_dir}}/../scripts/build/install-clang.sh", "{{template_dir}}/../scripts/build/install-swift.sh", "{{template_dir}}/../scripts/build/install-cmake.sh", "{{template_dir}}/../scripts/build/install-codeql-bundle.sh", "{{template_dir}}/../scripts/build/install-container-tools.sh", "{{template_dir}}/../scripts/build/install-dotnetcore-sdk.sh", "{{template_dir}}/../scripts/build/install-erlang.sh", "{{template_dir}}/../scripts/build/install-firefox.sh", "{{template_dir}}/../scripts/build/install-microsoft-edge.sh", "{{template_dir}}/../scripts/build/install-gcc-compilers.sh", "{{template_dir}}/../scripts/build/install-gfortran.sh", "{{template_dir}}/../scripts/build/install-git.sh", "{{template_dir}}/../scripts/build/install-git-lfs.sh", "{{template_dir}}/../scripts/build/install-github-cli.sh", "{{template_dir}}/../scripts/build/install-google-chrome.sh", "{{template_dir}}/../scripts/build/install-google-cloud-cli.sh", "{{template_dir}}/../scripts/build/install-haskell.sh", "{{template_dir}}/../scripts/build/install-heroku.sh", "{{template_dir}}/../scripts/build/install-hhvm.sh", "{{template_dir}}/../scripts/build/install-java-tools.sh", "{{template_dir}}/../scripts/build/install-kubernetes-tools.sh", "{{template_dir}}/../scripts/build/install-oc-cli.sh", "{{template_dir}}/../scripts/build/install-leiningen.sh", "{{template_dir}}/../scripts/build/install-miniconda.sh", "{{template_dir}}/../scripts/build/install-mono.sh", "{{template_dir}}/../scripts/build/install-kotlin.sh", "{{template_dir}}/../scripts/build/install-mysql.sh", "{{template_dir}}/../scripts/build/install-mssql-tools.sh", "{{template_dir}}/../scripts/build/install-sqlpackage.sh", "{{template_dir}}/../scripts/build/install-nginx.sh", "{{template_dir}}/../scripts/build/install-nvm.sh", "{{template_dir}}/../scripts/build/install-nodejs.sh", "{{template_dir}}/../scripts/build/install-bazel.sh", "{{template_dir}}/../scripts/build/install-oras-cli.sh", "{{template_dir}}/../scripts/build/install-phantomjs.sh", "{{template_dir}}/../scripts/build/install-php.sh", "{{template_dir}}/../scripts/build/install-postgresql.sh", "{{template_dir}}/../scripts/build/install-pulumi.sh", "{{template_dir}}/../scripts/build/install-ruby.sh", "{{template_dir}}/../scripts/build/install-rlang.sh", "{{template_dir}}/../scripts/build/install-rust.sh", "{{template_dir}}/../scripts/build/install-julia.sh", "{{template_dir}}/../scripts/build/install-sbt.sh", "{{template_dir}}/../scripts/build/install-selenium.sh", "{{template_dir}}/../scripts/build/install-terraform.sh", "{{template_dir}}/../scripts/build/install-packer.sh", "{{template_dir}}/../scripts/build/install-vcpkg.sh", "{{template_dir}}/../scripts/build/configure-dpkg.sh", "{{template_dir}}/../scripts/build/install-mongodb.sh", "{{template_dir}}/../scripts/build/install-yq.sh", "{{template_dir}}/../scripts/build/install-android-sdk.sh", "{{template_dir}}/../scripts/build/install-pypy.sh", "{{template_dir}}/../scripts/build/install-python.sh", "{{template_dir}}/../scripts/build/install-zstd.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/build/install-docker-compose.sh", "{{template_dir}}/../scripts/build/install-docker.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/build/Install-Toolset.ps1", "{{template_dir}}/../scripts/build/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/build/install-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/build/install-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", "scripts": [ "{{template_dir}}/../scripts/build/configure-snap.sh" ], "environment_vars": [ "HELPER_SCRIPTS={{user `helper_script_folder`}}" ], "execute_command": "sudo sh -c '{{ .Vars }} {{ .Path }}'" }, { "type": "shell", "expect_disconnect": true, "inline": [ "echo 'Reboot VM'", "sudo reboot" ], "execute_command": "sudo sh -c '{{ .Vars }} {{ .Path }}'" }, { "type": "shell", "pause_before": "60s", "start_retry_timeout": "10m", "scripts": [ "{{template_dir}}/../scripts/build/cleanup.sh" ], "execute_command": "sudo sh -c '{{ .Vars }} {{ .Path }}'" }, { "type": "shell", "max_retries": 3, "start_retry_timeout": "2m", "inline": [ "pwsh -Command Write-Host Running Generate-SoftwareReport.ps1 script", "pwsh -File {{user `image_folder`}}/SoftwareReport/Generate-SoftwareReport.ps1 -OutputDirectory {{user `image_folder`}}", "pwsh -Command Write-Host Running RunAll-Tests.ps1 script", "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`}}/software-report.md", "destination": "{{template_dir}}/../Ubuntu2004-Readme.md", "direction": "download" }, { "type": "file", "source": "{{user `image_folder`}}/software-report.json", "destination": "{{template_dir}}/../software-report.json", "direction": "download" }, { "type": "shell", "scripts":[ "{{template_dir}}/../scripts/build/configure-system.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": "file", "source": "{{template_dir}}/../assets/ubuntu2004.conf", "destination": "/tmp/" }, { "type": "shell", "inline": [ "mkdir -p /etc/vsts", "cp /tmp/ubuntu2004.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 }}'" } ] }