From 962aa94f3ad04745ba011c20abcb5a4adac09014 Mon Sep 17 00:00:00 2001 From: MaksimZhukov Date: Fri, 11 Sep 2020 17:34:56 +0300 Subject: [PATCH] Add CI for macos --- .../azure-pipelines/image-generation.yml | 2 +- .../azure-pipelines/ubuntu1604.yml | 0 .../azure-pipelines/ubuntu1804.yml | 0 .../azure-pipelines/ubuntu2004.yml | 0 .../azure-pipelines/windows2016.yml | 0 .../azure-pipelines/windows2019.yml | 0 images.CI/{ => linux-and-win}/build-image.ps1 | 0 images.CI/{ => linux-and-win}/cleanup.ps1 | 0 .../{ => linux-and-win}/create-release.ps1 | 0 .../credscan-exclusions.json | 0 .../{ => linux-and-win}/download-repo.ps1 | 0 .../azure-pipelines/image-generation.yml | 84 +++++++++++++++++++ images.CI/macos/azure-pipelines/macos1013.yml | 23 +++++ images.CI/macos/azure-pipelines/macos1014.yml | 23 +++++ images.CI/macos/azure-pipelines/macos1015.yml | 23 +++++ 15 files changed, 154 insertions(+), 1 deletion(-) rename images.CI/{ => linux-and-win}/azure-pipelines/image-generation.yml (98%) rename images.CI/{ => linux-and-win}/azure-pipelines/ubuntu1604.yml (100%) rename images.CI/{ => linux-and-win}/azure-pipelines/ubuntu1804.yml (100%) rename images.CI/{ => linux-and-win}/azure-pipelines/ubuntu2004.yml (100%) rename images.CI/{ => linux-and-win}/azure-pipelines/windows2016.yml (100%) rename images.CI/{ => linux-and-win}/azure-pipelines/windows2019.yml (100%) rename images.CI/{ => linux-and-win}/build-image.ps1 (100%) rename images.CI/{ => linux-and-win}/cleanup.ps1 (100%) rename images.CI/{ => linux-and-win}/create-release.ps1 (100%) rename images.CI/{ => linux-and-win}/credscan-exclusions.json (100%) rename images.CI/{ => linux-and-win}/download-repo.ps1 (100%) create mode 100644 images.CI/macos/azure-pipelines/image-generation.yml create mode 100644 images.CI/macos/azure-pipelines/macos1013.yml create mode 100644 images.CI/macos/azure-pipelines/macos1014.yml create mode 100644 images.CI/macos/azure-pipelines/macos1015.yml diff --git a/images.CI/azure-pipelines/image-generation.yml b/images.CI/linux-and-win/azure-pipelines/image-generation.yml similarity index 98% rename from images.CI/azure-pipelines/image-generation.yml rename to images.CI/linux-and-win/azure-pipelines/image-generation.yml index 70db48f1..30499ce3 100644 --- a/images.CI/azure-pipelines/image-generation.yml +++ b/images.CI/linux-and-win/azure-pipelines/image-generation.yml @@ -20,7 +20,7 @@ jobs: targetType: 'filePath' filePath: ./images.CI/download-repo.ps1 arguments: -RepoUrl $(CUSTOM_REPOSITORY_URL) ` - -RepoBranch $(CUSTOM_REPOSITORY_BRANCH) + -RepoBranch $(CUSTOM_REPOSITORY_BRANCH) - task: PowerShell@2 displayName: 'Build VM' diff --git a/images.CI/azure-pipelines/ubuntu1604.yml b/images.CI/linux-and-win/azure-pipelines/ubuntu1604.yml similarity index 100% rename from images.CI/azure-pipelines/ubuntu1604.yml rename to images.CI/linux-and-win/azure-pipelines/ubuntu1604.yml diff --git a/images.CI/azure-pipelines/ubuntu1804.yml b/images.CI/linux-and-win/azure-pipelines/ubuntu1804.yml similarity index 100% rename from images.CI/azure-pipelines/ubuntu1804.yml rename to images.CI/linux-and-win/azure-pipelines/ubuntu1804.yml diff --git a/images.CI/azure-pipelines/ubuntu2004.yml b/images.CI/linux-and-win/azure-pipelines/ubuntu2004.yml similarity index 100% rename from images.CI/azure-pipelines/ubuntu2004.yml rename to images.CI/linux-and-win/azure-pipelines/ubuntu2004.yml diff --git a/images.CI/azure-pipelines/windows2016.yml b/images.CI/linux-and-win/azure-pipelines/windows2016.yml similarity index 100% rename from images.CI/azure-pipelines/windows2016.yml rename to images.CI/linux-and-win/azure-pipelines/windows2016.yml diff --git a/images.CI/azure-pipelines/windows2019.yml b/images.CI/linux-and-win/azure-pipelines/windows2019.yml similarity index 100% rename from images.CI/azure-pipelines/windows2019.yml rename to images.CI/linux-and-win/azure-pipelines/windows2019.yml diff --git a/images.CI/build-image.ps1 b/images.CI/linux-and-win/build-image.ps1 similarity index 100% rename from images.CI/build-image.ps1 rename to images.CI/linux-and-win/build-image.ps1 diff --git a/images.CI/cleanup.ps1 b/images.CI/linux-and-win/cleanup.ps1 similarity index 100% rename from images.CI/cleanup.ps1 rename to images.CI/linux-and-win/cleanup.ps1 diff --git a/images.CI/create-release.ps1 b/images.CI/linux-and-win/create-release.ps1 similarity index 100% rename from images.CI/create-release.ps1 rename to images.CI/linux-and-win/create-release.ps1 diff --git a/images.CI/credscan-exclusions.json b/images.CI/linux-and-win/credscan-exclusions.json similarity index 100% rename from images.CI/credscan-exclusions.json rename to images.CI/linux-and-win/credscan-exclusions.json diff --git a/images.CI/download-repo.ps1 b/images.CI/linux-and-win/download-repo.ps1 similarity index 100% rename from images.CI/download-repo.ps1 rename to images.CI/linux-and-win/download-repo.ps1 diff --git a/images.CI/macos/azure-pipelines/image-generation.yml b/images.CI/macos/azure-pipelines/image-generation.yml new file mode 100644 index 00000000..b4af4120 --- /dev/null +++ b/images.CI/macos/azure-pipelines/image-generation.yml @@ -0,0 +1,84 @@ +jobs: +- job: Image_generation + displayName: Image Generation (${{ parameters.image_label }}) + timeoutInMinutes: 720 + pool: + name: Mac-Cloud V2 Image Generation + variables: + - group: Mac-Cloud Image Generation + - group: Mac-Cloud Image Generation Key Vault + + steps: + - checkout: self + clean: true + fetchDepth: 1 + + - task: PowerShell@2 + displayName: 'Download custom repository' + condition: and(ne(variables['CUSTOM_REPOSITORY_URL'], ''), ne(variables['CUSTOM_REPOSITORY_BRANCH'], '')) + inputs: + targetType: 'filePath' + filePath: ./images.CI/download-repo.ps1 + arguments: -RepoUrl $(CUSTOM_REPOSITORY_URL) ` + -RepoBranch $(CUSTOM_REPOSITORY_BRANCH) + + - task: DeleteFiles@1 + displayName: Clean up self-hosted machine + inputs: + SourceFolder: 'image-generation/packer/provision/log/' + RemoveSourceFolder: true + + - bash: | + export PACKER_LOG=0 + packer build -on-error=abort \ + -var="vcenter_server=$(vcenter_server_v2)" \ + -var="vcenter_username=$(vcenter_username_v2)" \ + -var="vcenter_password=$(vcenter_password_v2)" \ + -var="vcenter_datacenter=$(vcenter_datacenter_v2)" \ + -var="cluster_or_esxi_host=$(esxi_cluster_v2)" \ + -var="esxi_datastore=${{ parameters.target_datastore }}" \ + -var="output_folder=mms-output" \ + -var="vm_username=$(vm_username)" \ + -var="vm_password=$(vm_password)" \ + -var="build_id=$(Build.BuildNumber)" \ + -var="baseimage_name=${{ parameters.base_image_name }}" \ + -var="azure_storage_sas=$(AZURE_STORAGE_SAS)" \ + -var="azure_storage_account=$(AZURE_STORAGE_ACCOUNT)" \ + -var="build_assets_url=$(appcenter_build_assets_url)" \ + -var="github_feed_token=$(GITHUB_FEED_TOKEN)" \ + -var="xcode_install_user=$(xcode-installation-user)" \ + -var="xcode_install_password=$(xcode-installation-password)" \ + -color=false \ + ${{ parameters.template_path }} + workingDirectory: 'image-generation/packer' + displayName: Build image + + - bash: | + echo "Copy image output files" + cp -R "image-generation/image-output/software-report/." "$(Build.ArtifactStagingDirectory)/" + + echo "Copy test results" + cp -R "image-generation/image-output/tests/." "$(Common.TestResultsDirectory)/" + ls $(Common.TestResultsDirectory) + + echo "Put VM name to 'VM_Done_Name' file" + echo "$(Build.BuildNumber)" > "$(Build.ArtifactStagingDirectory)/VM_Done_Name" + displayName: Prepare artifact + + - bash: | + cat "$(Build.ArtifactStagingDirectory)/systeminfo.md" + displayName: Print software report + + - task: PublishBuildArtifacts@1 + inputs: + ArtifactName: 'Built_VM_Artifacts' + displayName: Publish Artifacts + + - task: PublishTestResults@2 + inputs: + testResultsFiles: '*.xml' + testResultsFormat: NUnit + searchFolder: '$(Common.TestResultsDirectory)' + failTaskOnFailedTests: true + displayName: Publish test results + condition: always() diff --git a/images.CI/macos/azure-pipelines/macos1013.yml b/images.CI/macos/azure-pipelines/macos1013.yml new file mode 100644 index 00000000..04a76346 --- /dev/null +++ b/images.CI/macos/azure-pipelines/macos1013.yml @@ -0,0 +1,23 @@ +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_label: 'macOS High Sierra' + base_image_name: 'clean-macOS-10.13.6-380Gb-SIPoff_runner' + template_path: 'templates/macOS-10.13.json' + target_datastore: 'ds-image' + stable: false diff --git a/images.CI/macos/azure-pipelines/macos1014.yml b/images.CI/macos/azure-pipelines/macos1014.yml new file mode 100644 index 00000000..8149c55c --- /dev/null +++ b/images.CI/macos/azure-pipelines/macos1014.yml @@ -0,0 +1,23 @@ +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_label: 'macOS Mojave' + base_image_name: 'clean-macOS-10.14-380Gb_runner' + template_path: 'templates/macOS-10.14.json' + target_datastore: 'ds-image' + stable: false diff --git a/images.CI/macos/azure-pipelines/macos1015.yml b/images.CI/macos/azure-pipelines/macos1015.yml new file mode 100644 index 00000000..7fc37016 --- /dev/null +++ b/images.CI/macos/azure-pipelines/macos1015.yml @@ -0,0 +1,23 @@ +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_label: 'macOS Catalina' + base_image_name: 'clean-macOS-10.15-380Gb-runner' + template_path: 'templates/macOS-10.15.json' + target_datastore: 'ds-image' + stable: false