{ "variables": { "vcenter_server": null, "vcenter_username": null, "vcenter_password": null, "vcenter_datacenter": null, "cluster_or_esxi_host": null, "esxi_datastore": null, "build_id": null, "baseimage_name": null, "output_folder": null, "vm_username": null, "vm_password": null, "github_api_pat": null, "xcode_install_storage_url": null, "xcode_install_sas": null, "image_os": "macos11" }, "builders": [ { "type": "vsphere-clone", "vcenter_server": "{{user `vcenter_server`}}", "username": "{{user `vcenter_username`}}", "password": "{{user `vcenter_password`}}", "insecure_connection": true, "datacenter": "{{ user `vcenter_datacenter` }}", "template": "{{ user `baseimage_name` }}", "folder": "{{user `output_folder` }}", "host": "{{user `cluster_or_esxi_host`}}", "datastore": "{{user `esxi_datastore`}}", "vm_name": "{{user `build_id`}}", "ssh_username": "{{user `vm_username`}}", "ssh_password": "{{user `vm_password`}}", "CPUs": "5", "cpu_cores": "5", "RAM": "24576", "NestedHV": "true", "shutdown_timeout": "15m" } ], "provisioners": [ { "type": "shell", "inline": "mkdir ~/image-generation" }, { "type": "file", "sources": [ "./assets/xamarin-selector", "./scripts/tests", "./scripts/docs-gen", "./scripts/helpers" ], "destination": "~/image-generation/" }, { "type": "file", "source": "../../helpers/software-report-base", "destination": "~/image-generation/docs-gen/" }, { "type": "file", "source": "./assets/add-certificate.swift", "destination": "~/image-generation/add-certificate.swift" }, { "type": "file", "source": "./assets/bashrc", "destination": "~/.bashrc" }, { "type": "file", "source": "./assets/bashprofile", "destination": "~/.bash_profile" }, { "type": "file", "source": "./assets/bootstrap-provisioner", "destination": "~/bootstrap" }, { "type": "file", "source": "./toolsets/toolset-11.json", "destination": "~/image-generation/toolset.json" }, { "type": "shell", "inline": [ "mv ~/image-generation/docs-gen ~/image-generation/software-report", "mv ~/image-generation/xamarin-selector ~/image-generation/assets", "mkdir ~/utils", "mv ~/image-generation/helpers/confirm-identified-developers.scpt ~/utils", "mv ~/image-generation/helpers/invoke-tests.sh ~/utils", "mv ~/image-generation/helpers/utils.sh ~/utils", "mv ~/image-generation/helpers/xamarin-utils.sh ~/utils" ], "execute_command": "sudo sh -c '{{ .Vars }} {{ .Path }}'" }, { "type": "shell", "execute_command": "chmod +x {{ .Path }}; {{ .Vars }} {{ .Path }}", "scripts": [ "./scripts/build/install-xcode-clt.sh", "./scripts/build/install-homebrew.sh" ] }, { "type": "shell", "execute_command": "chmod +x {{ .Path }}; sudo {{ .Vars }} {{ .Path }}", "scripts": [ "./scripts/build/install-xcode-clt.sh", "./scripts/build/configure-network-interface-detection.sh", "./scripts/build/configure-autologin.sh", "./scripts/build/configure-auto-updates.sh", "./scripts/build/configure-screensaver.sh", "./scripts/build/configure-ntpconf.sh", "./scripts/build/configure-max-files-limitation.sh", "./scripts/build/configure-shell.sh" ], "environment_vars": [ "PASSWORD={{user `vm_password`}}", "USERNAME={{user `vm_username`}}" ] }, { "type": "shell", "execute_command": "chmod +x {{ .Path }}; {{ .Vars }} {{ .Path }}", "scripts": [ "./scripts/build/configure-preimagedata.sh", "./scripts/build/configure-ssh.sh", "./scripts/build/configure-machine.sh" ], "environment_vars": [ "IMAGE_VERSION={{user `build_id`}}", "IMAGE_OS={{user `image_os`}}" ] }, { "type": "shell", "execute_command": "sudo {{ .Vars }} {{ .Path }}", "inline": [ "echo 'Reboot VM'", "shutdown -r now" ], "expect_disconnect": true }, { "type": "shell", "execute_command": "chmod +x {{ .Path }}; {{ .Vars }} {{ .Path }}", "pause_before": "30s", "scripts": [ "./scripts/build/configure-windows.sh", "./scripts/build/install-powershell.sh", "./scripts/build/install-dotnet.sh", "./scripts/build/install-python.sh", "./scripts/build/install-azcopy.sh", "./scripts/build/install-openssl.sh", "./scripts/build/install-ruby.sh", "./scripts/build/install-rubygems.sh", "./scripts/build/install-git.sh", "./scripts/build/install-mongodb.sh", "./scripts/build/install-node.sh" ], "environment_vars": [ "API_PAT={{user `github_api_pat`}}" ] }, { "type": "shell", "execute_command": "chmod +x {{ .Path }}; {{ .Vars }} pwsh -f {{ .Path }}", "script": "./scripts/build/Install-Xcode.ps1", "environment_vars": [ "XCODE_INSTALL_STORAGE_URL={{user `xcode_install_storage_url`}}", "XCODE_INSTALL_SAS={{user `xcode_install_sas`}}" ] }, { "type": "shell", "execute_command": "sudo {{ .Vars }} {{ .Path }}", "inline": [ "echo 'Reboot VM'", "shutdown -r now" ], "expect_disconnect": true }, { "type": "shell", "execute_command": "chmod +x {{ .Path }}; {{ .Vars }} {{ .Path }}", "scripts": [ "./scripts/build/install-actions-cache.sh", "./scripts/build/install-common-utils.sh", "./scripts/build/install-llvm.sh", "./scripts/build/install-golang.sh", "./scripts/build/install-swiftlint.sh", "./scripts/build/install-openjdk.sh", "./scripts/build/install-php.sh", "./scripts/build/install-aws-tools.sh", "./scripts/build/install-rust.sh", "./scripts/build/install-gcc.sh", "./scripts/build/install-haskell.sh", "./scripts/build/install-cocoapods.sh", "./scripts/build/install-android-sdk.sh", "./scripts/build/install-xamarin.sh", "./scripts/build/install-visualstudio.sh", "./scripts/build/install-nvm.sh", "./scripts/build/install-apache.sh", "./scripts/build/install-nginx.sh", "./scripts/build/install-postgresql.sh", "./scripts/build/install-audiodevice.sh", "./scripts/build/install-vcpkg.sh", "./scripts/build/install-miniconda.sh", "./scripts/build/install-safari.sh", "./scripts/build/install-chrome.sh", "./scripts/build/install-edge.sh", "./scripts/build/install-firefox.sh", "./scripts/build/install-pypy.sh", "./scripts/build/install-pipx-packages.sh", "./scripts/build/install-bicep.sh", "./scripts/build/install-codeql-bundle.sh" ], "environment_vars": [ "API_PAT={{user `github_api_pat`}}" ] }, { "type": "shell", "execute_command": "chmod +x {{ .Path }}; {{ .Vars }} pwsh -f {{ .Path }}", "scripts": [ "./scripts/build/Install-Toolset.ps1", "./scripts/build/Configure-Toolset.ps1" ] }, { "type": "shell", "execute_command": "ruby {{ .Path }}", "scripts": [ "./scripts/build/configure-xcode-simulators.rb" ] }, { "type": "shell", "inline": [ "pwsh -File \"$HOME/image-generation/software-report/Generate-SoftwareReport.ps1\" -OutputDirectory \"$HOME/image-generation/output/software-report\" -ImageName {{user `build_id`}}", "pwsh -File \"$HOME/image-generation/tests/RunAll-Tests.ps1\"" ] }, { "type": "file", "direction": "download", "source": "~/image-generation/output/*", "destination": "../image-output/" }, { "type": "shell", "execute_command": "chmod +x {{ .Path }}; {{ .Vars }} {{ .Path }}", "scripts": [ "./scripts/build/configure-hostname.sh", "./scripts/build/configure-system.sh" ] } ] }