{ "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": "macos12" }, "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", "source": "./provision/assets", "destination": "~/image-generation/" }, { "type": "file", "source": "./tests", "destination": "~/image-generation/" }, { "type": "file", "source": "./software-report", "destination": "~/image-generation/" }, { "type": "file", "source": "../../helpers/software-report-base", "destination": "~/image-generation/software-report/" }, { "type": "file", "source": "./helpers", "destination": "~/image-generation/" }, { "type": "file", "source": "./provision/configuration/add-certificate.swift", "destination": "~/image-generation/add-certificate.swift" }, { "type": "file", "source": "./provision/configuration/environment/bashrc", "destination": "~/.bashrc" }, { "type": "file", "source": "./provision/configuration/environment/bashprofile", "destination": "~/.bash_profile" }, { "type": "file", "source": "./provision/utils", "destination": "~/" }, { "type": "file", "source": "./provision/bootstrap-provisioner", "destination": "~/bootstrap" }, { "type": "file", "source": "./toolsets/toolset-12.json", "destination": "~/image-generation/toolset.json" }, { "type": "shell", "execute_command": "chmod +x {{ .Path }}; {{ .Vars }} {{ .Path }}", "scripts": [ "./provision/core/xcode-clt.sh", "./provision/core/homebrew.sh" ] }, { "type": "shell", "execute_command": "chmod +x {{ .Path }}; sudo {{ .Vars }} {{ .Path }}", "scripts": [ "./provision/configuration/add-network-interface-detection.sh", "./provision/configuration/autologin.sh", "./provision/configuration/disable-auto-updates.sh", "./provision/configuration/screensaver-off.sh", "./provision/configuration/ntpconf.sh", "./provision/configuration/max-files.sh", "./provision/configuration/shell-change.sh" ], "environment_vars": [ "PASSWORD={{user `vm_password`}}", "USERNAME={{user `vm_username`}}" ] }, { "type": "shell", "execute_command": "chmod +x {{ .Path }}; {{ .Vars }} {{ .Path }}", "scripts": [ "./provision/configuration/preimagedata.sh", "./provision/configuration/configure-ssh.sh", "./provision/configuration/configure-machine.sh" ], "environment_vars": [ "IMAGE_VERSION={{user `build_id`}}", "IMAGE_OS={{user `image_os`}}", "PASSWORD={{user `vm_password`}}" ] }, { "type": "shell", "execute_command": "chmod +x {{ .Path }}; sudo {{ .Vars }} {{ .Path }}", "script": "./provision/core/reboot.sh", "expect_disconnect": true }, { "type": "shell", "execute_command": "chmod +x {{ .Path }}; {{ .Vars }} {{ .Path }}", "pause_before": "30s", "scripts": [ "./provision/core/open_windows_check.sh", "./provision/core/powershell.sh", "./provision/core/dotnet.sh", "./provision/core/python.sh", "./provision/core/azcopy.sh", "./provision/core/openssl.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={{user `github_api_pat`}}", "USER_PASSWORD={{user `vm_password`}}" ] }, { "type": "shell", "execute_command": "chmod +x {{ .Path }}; {{ .Vars }} pwsh -f {{ .Path }}", "script": "./provision/core/xcode.ps1", "environment_vars": [ "XCODE_INSTALL_STORAGE_URL={{user `xcode_install_storage_url`}}", "XCODE_INSTALL_SAS={{user `xcode_install_sas`}}" ] }, { "type": "shell", "execute_command": "chmod +x {{ .Path }}; sudo {{ .Vars }} {{ .Path }}", "script": "./provision/core/reboot.sh", "expect_disconnect": true }, { "type": "shell", "execute_command": "chmod +x {{ .Path }}; {{ .Vars }} {{ .Path }}", "scripts": [ "./provision/core/llvm.sh", "./provision/core/golang.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/xamarin.sh", "./provision/core/vsmac.sh", "./provision/core/nvm.sh", "./provision/core/apache.sh", "./provision/core/nginx.sh", "./provision/core/postgresql.sh", "./provision/core/audiodevice.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/pypy.sh", "./provision/core/pipx-packages.sh", "./provision/core/bicep.sh", "./provision/core/codeql-bundle.sh" ], "environment_vars": [ "API_PAT={{user `github_api_pat`}}" ] }, { "type": "shell", "execute_command": "chmod +x {{ .Path }}; {{ .Vars }} pwsh -f {{ .Path }}", "scripts": [ "./provision/core/toolset.ps1", "./provision/core/configure-toolset.ps1" ] }, { "type": "shell", "execute_command": "ruby {{ .Path }}", "scripts": [ "./provision/core/delete-duplicate-sims.rb" ] }, { "type": "shell", "execute_command": "chmod +x {{ .Path }}; {{ .Vars }} pwsh -f {{ .Path }}", "script": "./provision/core/fix-xcode-simulators.ps1" }, { "type": "shell", "inline": [ "pwsh -File \"$HOME/image-generation/software-report/SoftwareReport.Generator.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": [ "./provision/configuration/configure-hostname.sh", "./provision/configuration/finalize-vm.sh" ] } ] }