From aa01b789be20e99d71deca47ebafd67d45b53685 Mon Sep 17 00:00:00 2001 From: Alexey-Ayupov <116575425+Alexey-Ayupov@users.noreply.github.com> Date: Mon, 20 Feb 2023 18:54:26 +0300 Subject: [PATCH] [macOS] Add packer template for macOS 13 (#7116) --- images/macos/templates/macOS-13.anka.pkr.hcl | 246 +++++++++++++++++++ images/macos/toolsets/toolset-13.json | 142 +++++++++++ 2 files changed, 388 insertions(+) create mode 100644 images/macos/templates/macOS-13.anka.pkr.hcl create mode 100644 images/macos/toolsets/toolset-13.json diff --git a/images/macos/templates/macOS-13.anka.pkr.hcl b/images/macos/templates/macOS-13.anka.pkr.hcl new file mode 100644 index 00000000..e32a93c1 --- /dev/null +++ b/images/macos/templates/macOS-13.anka.pkr.hcl @@ -0,0 +1,246 @@ +packer { + required_plugins { + veertu-anka = { + version = "= v3.1.0" + source = "github.com/veertuinc/veertu-anka" + } + } +} + +variable "source_vm_name" { + type = string +} + +variable "source_vm_tag" { + type = string +} + +variable "build_id" { + type = string +} + +variable "vm_username" { + type = string + sensitive = true +} + +variable "vm_password" { + type = string + sensitive = true +} + +variable "github_api_pat" { + type = string + default = "" +} + +variable "xcode_install_user" { + type = string + sensitive = true +} + +variable "xcode_install_password" { + type = string + sensitive = true +} + +variable "vcpu_count" { + type = string + default = "6" +} + +variable "ram_size" { + type = string + default = "24G" +} + +variable "image_os" { + type = string + default = "macos13" +} + +source "veertu-anka-vm-clone" "template" { + vm_name = "${var.build_id}" + source_vm_name = "${var.source_vm_name}" + source_vm_tag = "${var.source_vm_tag}" + vcpu_count = "${var.vcpu_count}" + ram_size = "${var.ram_size}" + stop_vm = "true" +} + +build { + sources = [ + "source.veertu-anka-vm-clone.template" + ] + provisioner "shell" { + inline = [ + "mkdir ~/image-generation" + ] + } + provisioner "file" { + destination = "image-generation/" + sources = [ + "./provision/assets", + "./tests", + "./software-report", + "./helpers" + ] + } + provisioner "file" { + destination = "image-generation/software-report/" + source = "../../helpers/software-report-base" + } + provisioner "file" { + destination = "image-generation/add-certificate.swift" + source = "./provision/configuration/add-certificate.swift" + } + provisioner "file" { + destination = ".bashrc" + source = "./provision/configuration/environment/bashrc" + } + provisioner "file" { + destination = ".bash_profile" + source = "./provision/configuration/environment/bashprofile" + } + provisioner "file" { + destination = "./" + source = "./provision/utils" + } + provisioner "shell" { + inline = [ + "mkdir ~/bootstrap" + ] + } + provisioner "file" { + destination = "bootstrap" + source = "./provision/bootstrap-provisioner/" + } + provisioner "file" { + destination = "image-generation/toolset.json" + source = "./toolsets/toolset-13.json" + } + provisioner "shell" { + scripts = [ + "./provision/core/xcode-clt.sh", + "./provision/core/homebrew.sh" + ] + execute_command = "chmod +x {{ .Path }}; source $HOME/.bash_profile; {{ .Vars }} {{ .Path }}" + } + provisioner "shell" { + scripts = [ + "./provision/configuration/configure-tccdb-macos.sh", + "./provision/configuration/disable-auto-updates.sh", + "./provision/configuration/ntpconf.sh", + "./provision/configuration/shell-change.sh" + ] + environment_vars = [ + "PASSWORD=${var.vm_password}", + "USERNAME=${var.vm_username}" + ] + execute_command = "chmod +x {{ .Path }}; source $HOME/.bash_profile; sudo {{ .Vars }} {{ .Path }}" + } + provisioner "shell" { + scripts = [ + "./provision/configuration/preimagedata.sh", + "./provision/configuration/configure-ssh.sh", + "./provision/configuration/configure-machine.sh" + ] + environment_vars = [ + "IMAGE_VERSION=${var.build_id}", + "IMAGE_OS=${var.image_os}", + "PASSWORD=${var.vm_password}" + ] + execute_command = "chmod +x {{ .Path }}; source $HOME/.bash_profile; {{ .Vars }} {{ .Path }}" + } + provisioner "shell" { + script = "./provision/core/reboot.sh" + execute_command = "chmod +x {{ .Path }}; source $HOME/.bash_profile; sudo {{ .Vars }} {{ .Path }}" + expect_disconnect = true + } + provisioner "shell" { + pause_before = "30s" + scripts = [ + "./provision/core/open_windows_check.sh", + "./provision/core/powershell.sh", + "./provision/core/dotnet.sh", + "./provision/core/azcopy.sh", + "./provision/core/ruby.sh", + "./provision/core/rubygem.sh", + "./provision/core/git.sh", + "./provision/core/mongodb.sh", + "./provision/core/node.sh", + "./provision/core/commonutils.sh" + ] + environment_vars = [ + "API_PAT=${var.github_api_pat}", + "USER_PASSWORD=${var.vm_password}" + ] + execute_command = "chmod +x {{ .Path }}; source $HOME/.bash_profile; {{ .Vars }} {{ .Path }}" + } + provisioner "shell" { + script = "./provision/core/xcode.ps1" + environment_vars = [ + "XCODE_INSTALL_USER=${var.xcode_install_user}", + "XCODE_INSTALL_PASSWORD=${var.xcode_install_password}" + ] + execute_command = "chmod +x {{ .Path }}; source $HOME/.bash_profile; {{ .Vars }} pwsh -f {{ .Path }}" + } + provisioner "shell" { + script = "./provision/core/reboot.sh" + execute_command = "chmod +x {{ .Path }}; source $HOME/.bash_profile; sudo {{ .Vars }} {{ .Path }}" + expect_disconnect = true + } + provisioner "shell" { + scripts = [ + "./provision/core/llvm.sh", + "./provision/core/swiftlint.sh", + "./provision/core/openjdk.sh", + "./provision/core/php.sh", + "./provision/core/aws.sh", + "./provision/core/rust.sh", + "./provision/core/gcc.sh", + "./provision/core/haskell.sh", + "./provision/core/stack.sh", + "./provision/core/cocoapods.sh", + "./provision/core/android-toolsets.sh", + "./provision/core/vsmac.sh", + "./provision/core/apache.sh", + "./provision/core/nginx.sh", + "./provision/core/postgresql.sh", + "./provision/core/vcpkg.sh", + "./provision/core/miniconda.sh", + "./provision/core/safari.sh", + "./provision/core/chrome.sh", + "./provision/core/edge.sh", + "./provision/core/firefox.sh", + "./provision/core/bicep.sh", + "./provision/core/codeql-bundle.sh" + ] + environment_vars = [ + "API_PAT=${var.github_api_pat}" + ] + execute_command = "chmod +x {{ .Path }}; source $HOME/.bash_profile; {{ .Vars }} {{ .Path }}" + } + provisioner "shell" { + script = "./provision/core/delete-duplicate-sims.rb" + execute_command = "source $HOME/.bash_profile; ruby {{ .Path }}" + } + provisioner "shell" { + inline = [ + "pwsh -File \"$HOME/image-generation/software-report/SoftwareReport.Generator.ps1\" -OutputDirectory \"$HOME/image-generation/output/software-report\" -ImageName ${var.build_id}" + ] + execute_command = "source $HOME/.bash_profile; {{ .Vars }} {{ .Path }}" + } + provisioner "file" { + destination = "../image-output/" + direction = "download" + source = "./image-generation/output/" + } + provisioner "shell" { + scripts = [ + "./provision/configuration/configure-hostname.sh", + "./provision/configuration/finalize-vm.sh" + ] + execute_command = "chmod +x {{ .Path }}; source $HOME/.bash_profile; {{ .Vars }} {{ .Path }}" + } +} diff --git a/images/macos/toolsets/toolset-13.json b/images/macos/toolsets/toolset-13.json new file mode 100644 index 00000000..8db8aa75 --- /dev/null +++ b/images/macos/toolsets/toolset-13.json @@ -0,0 +1,142 @@ +{ + "xcode": { + "default": "14.2", + "versions": [ + {"link": "14.3", "version": "14.3.0"}, + {"link": "14.2", "version": "14.2.0"}, + { "link": "14.1", "version": "14.1.0"}, + { "link": "14.0.1", "version": "14.0.1", "symlinks": ["14.0"] } + ] + }, + "xamarin": { + "vsmac": { + "default": "2022", + "versions": [ "2022" ] + } + }, + "java": { + "default": "8", + "default_vendor": "Temurin-Hotspot", + "vendors": [ + { + "name": "Temurin-Hotspot", + "versions": [ "8", "11", "17" ] + } + ] + }, + "android": { + "platform_min_version": "27", + "build_tools_min_version": "27.0.0", + "extra-list": [ + "android;m2repository", "google;m2repository", "google;google_play_services", "intel;Hardware_Accelerated_Execution_Manager" + ], + "addon-list": [], + "additional-tools": [ + "cmake;3.18.1", + "cmake;3.22.1" + ], + "ndk": { + "default": "25", + "versions": [ + "23", "24", "25" + ] + } + }, + "powershellModules": [ + { "name": "Az" }, + { "name": "MarkdownPS" }, + { "name": "Pester" }, + { "name": "PSScriptAnalyzer" } + ], + "brew": { + "common_packages": [ + "ant", + "aria2", + "azure-cli", + "bazelisk", + "carthage", + "cmake", + "colima", + "gh", + "gnupg", + "gnu-tar", + "kotlin", + "libpq", + "p7zip", + "packer", + "perl", + "sbt", + "subversion", + "swiftformat", + "swig", + "zstd", + "gmp", + "zlib", + "libxext", + "libxft", + "tcl-tk", + "r", + "yq", + "imagemagick" + ], + "cask_packages": [ + "julia", + "vagrant", + "virtualbox", + "parallels" + ] + }, + "gcc": { + "versions": [ + "11", + "12" + ] + }, + "pipx": [ + { + "package": "yamllint", + "cmd": "yamllint --version" + } + ], + "dotnet": { + "versions": [ + "3.1", + "6.0", + "7.0" + ] + }, + "ruby": { + "default": "3.0", + "rubygems": [ + "xcode-install", + "cocoapods", + "xcpretty", + "bundler", + "fastlane", + "jazzy" + ] + }, + "go": { + "default": "1.17" + }, + "node": { + "default": "16", + "nvm_versions": [ + "14", + "16", + "18" + ] + }, + "llvm": { + "version": "15" + }, + "php": { + "version": "8.2" + }, + "mongodb": { + "version": "5.0" + }, + "postgresql": { + "version": "14" + } +}