From 5f2e77750d2f5e644e2bd7fd46190642ee63cb5e Mon Sep 17 00:00:00 2001 From: saibulusu Date: Thu, 30 Apr 2026 00:54:41 -0700 Subject: [PATCH 1/5] new build optional flag to disable CET, and a new pipeline to build with CET disabled --- .pipelines/azure-pipelines-linux-nocet.yml | 861 ++++++++++++++++++ .pipelines/azure-pipelines-nocet.yml | 105 +++ build-packages.cmd | 25 +- build-packages.sh | 2 +- build.cmd | 48 +- build.sh | 27 +- src/VirtualClient/VERSIONING.md | 8 +- .../VirtualClient.Main.csproj | 1 + 8 files changed, 1042 insertions(+), 35 deletions(-) create mode 100644 .pipelines/azure-pipelines-linux-nocet.yml create mode 100644 .pipelines/azure-pipelines-nocet.yml diff --git a/.pipelines/azure-pipelines-linux-nocet.yml b/.pipelines/azure-pipelines-linux-nocet.yml new file mode 100644 index 0000000000..fa5aa217e8 --- /dev/null +++ b/.pipelines/azure-pipelines-linux-nocet.yml @@ -0,0 +1,861 @@ +# Starter pipeline +# Start with a minimal pipeline that you can customize to build and deploy your code. +# Add steps that build, run tests, deploy, and more: +# https://aka.ms/yaml +# ADO link: https://msazure.visualstudio.com/One/_apps/hub/ms.vss-build-web.ci-designer-hub?pipelineId=297462&branch=main + +trigger: + none + +pr: none + +resources: + containers: + - container: pmc-cli + image: 'mcr.microsoft.com/pmc/pmc-cli:latest' + options: --entrypoint="" + +variables: + VcVersion : 1.0.0 + ROOT: $(Build.SourcesDirectory) + CDP_DEFINITION_BUILD_COUNT: $[counter('', 0)] # needed for onebranch.pipeline.version task https://aka.ms/obpipelines/versioning + ENABLE_PRS_DELAYSIGN: 1 + PMC_CLI_AUTH_TYPE: 'wif' + PMC_CLI_CLIENT_ID: 'cc6b4c30-84b7-457a-b280-79683f2dff33' + +stages: +- stage: BuildPackage + jobs: + - job: BuildPackage + pool: + vmImage: 'ubuntu-latest' + + steps: + - task: UseDotNet@2 + continueOnError: false + inputs: + packageType: 'sdk' + version: '2.1.x' + + - task: UseDotNet@2 + continueOnError: false + inputs: + packageType: 'sdk' + version: '6.x' + + - task: UseDotNet@2 + continueOnError: false + inputs: + packageType: 'sdk' + version: '9.0.x' + useGlobalJson: false + performMultiLevelLookup: true + workingDirectory: '$(Build.SourcesDirectory)' + + - script: | + # Read the content of VERSION + version=$(cat $(Build.SourcesDirectory)/VERSION) + + # Set the file content as a pipeline variable + echo "$version" + displayName: 'Show VC Build Version' + + - script: chmod -R +x $(Build.SourcesDirectory) + displayName: 'Allow scripts to be executable on Linux' + + # Ensure the artifact output/bin/obj directories are clean. + # - script: $(Build.SourcesDirectory)/clean.cmd + # displayName: 'Clean Output Directories' + + # Build the repo. + - script: $(Build.SourcesDirectory)/build.sh + displayName: 'Build Solutions' + + - script: $(Build.SourcesDirectory)/src/VirtualClient/VirtualClient.Packaging/build-rpm-linux-arm64.sh + displayName: 'Build rpm package for linux arm64' + + - script: $(Build.SourcesDirectory)/src/VirtualClient/VirtualClient.Packaging/build-rpm-linux-x64.sh + displayName: 'Build rpm package for linux x64' + + - script: $(Build.SourcesDirectory)/src/VirtualClient/VirtualClient.Packaging/build-deb-linux-arm64.sh + displayName: 'Build deb package for linux arm64' + + - script: $(Build.SourcesDirectory)/src/VirtualClient/VirtualClient.Packaging/build-deb-linux-x64.sh + displayName: 'Build deb package for linux x64' + + + - task: CopyFiles@2 + inputs: + SourceFolder: '$(Build.SourcesDirectory)/out/packages' + flattenFolders: true + Contents: | + *.deb + **/RPMS/**/*.rpm + TargetFolder: '$(Build.ArtifactStagingDirectory)' + + - task: EsrpCodeSigning@5 + inputs: + ConnectedServiceName: 'virtualclient-esrp-ame' + AppRegistrationClientId: '0225fe5c-2a99-4459-af16-27a7dcd1c14a' + AppRegistrationTenantId: '33e01921-4d64-4f8c-a055-5bdaffd5e33d' + AuthAKVName: 'virtualclient-vault-esrp' + AuthCertName: 'virtualclient-esrp-cert-auth' + AuthSignCertName: 'virtualclient-esrp-cert-sign' + FolderPath: '$(Build.ArtifactStagingDirectory)' + Pattern: '*.deb,*.rpm' + signConfigType: 'inlineSignParams' + inlineOperation: | + [ + { + "KeyCode" : "CP-450779-Pgp", + "OperationCode" : "LinuxSign", + "Parameters" : {}, + "ToolName" : "sign", + "ToolVersion" : "1.0" + } + ] + SessionTimeout: '60' + MaxConcurrency: '50' + MaxRetryAttempts: '5' + + - task: PublishBuildArtifacts@1 + inputs: + pathToPublish: '$(Build.ArtifactStagingDirectory)' + artifactName: drop + + - job: PublishRpmPackage + timeoutInMinutes: 180 + dependsOn: BuildPackage + pool: + vmImage: 'ubuntu-latest' + container: pmc-cli + + steps: + - task: AzureCLI@2 + inputs: + addSpnToEnvironment: true + azureSubscription: 'virtualclient-esrp-ame' + scriptType: bash + scriptLocation: inlineScript + inlineScript: | + pmc --base-url "https://pmc-ingest.trafficmanager.net/api/v4" repo list --limit 1 + # --base-url "https://tux-ingest.corp.trafficmanager.net/api/v4" if tux-dev + + - task: AzureCLI@2 + inputs: + addSpnToEnvironment: true + azureSubscription: 'virtualclient-esrp-ame' + scriptType: bash + scriptLocation: inlineScript + inlineScript: | + echo "##vso[task.setvariable variable=idToken;issecret=true]$idToken" + echo "##vso[task.setvariable variable=tenantId]$tenantId" + echo "##vso[task.setvariable variable=servicePrincipalId]$servicePrincipalId" + + - download: current + artifact: drop + + - task: CopyFiles@2 + inputs: + SourceFolder: '$(Agent.BuildDirectory)/drop/' + Contents: '*.rpm' + TargetFolder: '$(Agent.BuildDirectory)/drop/rpmpackages' + + - task: AzureKeyVault@2 + inputs: + ConnectedServiceName: 'virtualclient-esrp-ame' + KeyVaultName: 'virtualclient-vault' + SecretsFilter: 'virtualclient-crc-principal' + RunAsPreJob: true + + # Amazon Linux + - task: PublishLinuxPackagesPMC@0 + displayName: 'Amazon Linux 2023 rpm publish' + inputs: + profile: 'prod' # or 'tuxdev' + authType: 'wif' + auth_token: $(idToken) # no quotations + tenant_ID: $(tenantId) # no quotations + service_principal_ID: $(servicePrincipalId) # no quotations + package_path: '$(Agent.BuildDirectory)/drop/rpmpackages' + repository: 'microsoft-amazonlinux2023-prod-yum' + + - task: PublishLinuxPackagesPMC@0 + displayName: 'Amazon Linux 2 rpm publish' + inputs: + profile: 'prod' # or 'tuxdev' + authType: 'wif' + auth_token: $(idToken) # no quotations + tenant_ID: $(tenantId) # no quotations + service_principal_ID: $(servicePrincipalId) # no quotations + package_path: '$(Agent.BuildDirectory)/drop/rpmpackages' + repository: 'microsoft-amazonlinux2-prod-yum' + + + # AzLinux + - task: PublishLinuxPackagesPMC@0 + displayName: 'AzLinux 3.0 rpm publish x64' + inputs: + profile: 'prod' # or 'tuxdev' + authType: 'wif' + auth_token: $(idToken) # no quotations + tenant_ID: $(tenantId) # no quotations + service_principal_ID: $(servicePrincipalId) # no quotations + package_path: '$(Agent.BuildDirectory)/drop/rpmpackages' + repository: 'azurelinux-3.0-prod-base-x86_64-yum' + + - task: PublishLinuxPackagesPMC@0 + displayName: 'AzLinux 3.0 rpm publish aarch64' + inputs: + profile: 'prod' # or 'tuxdev' + authType: 'wif' + auth_token: $(idToken) # no quotations + tenant_ID: $(tenantId) # no quotations + service_principal_ID: $(servicePrincipalId) # no quotations + package_path: '$(Agent.BuildDirectory)/drop/rpmpackages' + repository: 'azurelinux-3.0-prod-base-aarch64-yum' + + - task: PublishLinuxPackagesPMC@0 + displayName: 'Mariner 2.0 rpm publish x64' + inputs: + profile: 'prod' # or 'tuxdev' + authType: 'wif' + auth_token: $(idToken) # no quotations + tenant_ID: $(tenantId) # no quotations + service_principal_ID: $(servicePrincipalId) # no quotations + package_path: '$(Agent.BuildDirectory)/drop/rpmpackages' + repository: 'cbl-mariner-2.0-prod-Microsoft-x86_64-yum' + + - task: PublishLinuxPackagesPMC@0 + displayName: 'Mariner 2.0 rpm publish aarch64' + inputs: + profile: 'prod' # or 'tuxdev' + authType: 'wif' + auth_token: $(idToken) # no quotations + tenant_ID: $(tenantId) # no quotations + service_principal_ID: $(servicePrincipalId) # no quotations + package_path: '$(Agent.BuildDirectory)/drop/rpmpackages' + repository: 'cbl-mariner-2.0-prod-Microsoft-aarch64-yum' + + - task: PublishLinuxPackagesPMC@0 + displayName: 'Mariner 1.0 rpm publish' + inputs: + profile: 'prod' # or 'tuxdev' + authType: 'wif' + auth_token: $(idToken) # no quotations + tenant_ID: $(tenantId) # no quotations + service_principal_ID: $(servicePrincipalId) # no quotations + package_path: '$(Agent.BuildDirectory)/drop/rpmpackages' + repository: 'cbl-mariner-1.0-prod-Microsoft-aarch64-rpms-yum' + + - task: PublishLinuxPackagesPMC@0 + displayName: 'Mariner 1.0 rpm publish' + inputs: + profile: 'prod' # or 'tuxdev' + authType: 'wif' + auth_token: $(idToken) # no quotations + tenant_ID: $(tenantId) # no quotations + service_principal_ID: $(servicePrincipalId) # no quotations + package_path: '$(Agent.BuildDirectory)/drop/rpmpackages' + repository: 'cbl-mariner-1.0-prod-Microsoft-x86_64-rpms-yum' + + # Centos + - task: PublishLinuxPackagesPMC@0 + displayName: 'CentOS 7 rpm publish' + inputs: + profile: 'prod' # or 'tuxdev' + authType: 'wif' + auth_token: $(idToken) # no quotations + tenant_ID: $(tenantId) # no quotations + service_principal_ID: $(servicePrincipalId) # no quotations + package_path: '$(Agent.BuildDirectory)/drop/rpmpackages' + repository: 'microsoft-centos7-prod-yum' + + - task: PublishLinuxPackagesPMC@0 + displayName: 'CentOS 6 rpm publish' + inputs: + profile: 'prod' # or 'tuxdev' + authType: 'wif' + auth_token: $(idToken) # no quotations + tenant_ID: $(tenantId) # no quotations + service_principal_ID: $(servicePrincipalId) # no quotations + package_path: '$(Agent.BuildDirectory)/drop/rpmpackages' + repository: 'microsoft-centos6-prod-yum' + + # Fedora + - task: PublishLinuxPackagesPMC@0 + displayName: 'Fedora 39 rpm publish' + inputs: + profile: 'prod' # or 'tuxdev' + authType: 'wif' + auth_token: $(idToken) # no quotations + tenant_ID: $(tenantId) # no quotations + service_principal_ID: $(servicePrincipalId) # no quotations + package_path: '$(Agent.BuildDirectory)/drop/rpmpackages' + repository: 'microsoft-fedora39-prod-yum' + + - task: PublishLinuxPackagesPMC@0 + displayName: 'Fedora 38 rpm publish' + inputs: + profile: 'prod' # or 'tuxdev' + authType: 'wif' + auth_token: $(idToken) # no quotations + tenant_ID: $(tenantId) # no quotations + service_principal_ID: $(servicePrincipalId) # no quotations + package_path: '$(Agent.BuildDirectory)/drop/rpmpackages' + repository: 'microsoft-fedora38-prod-yum' + + - task: PublishLinuxPackagesPMC@0 + displayName: 'Fedora 37 rpm publish' + inputs: + profile: 'prod' # or 'tuxdev' + authType: 'wif' + auth_token: $(idToken) # no quotations + tenant_ID: $(tenantId) # no quotations + service_principal_ID: $(servicePrincipalId) # no quotations + package_path: '$(Agent.BuildDirectory)/drop/rpmpackages' + repository: 'microsoft-fedora37-prod-yum' + + # OpenSUSE + - task: PublishLinuxPackagesPMC@0 + displayName: 'OpenSUSE 15 rpm publish' + inputs: + profile: 'prod' # or 'tuxdev' + authType: 'wif' + auth_token: $(idToken) # no quotations + tenant_ID: $(tenantId) # no quotations + service_principal_ID: $(servicePrincipalId) # no quotations + package_path: '$(Agent.BuildDirectory)/drop/rpmpackages' + repository: 'microsoft-opensuse15-prod-yum' + + - task: PublishLinuxPackagesPMC@0 + displayName: 'OpenSUSE 42.2 rpm publish' + inputs: + profile: 'prod' # or 'tuxdev' + authType: 'wif' + auth_token: $(idToken) # no quotations + tenant_ID: $(tenantId) # no quotations + service_principal_ID: $(servicePrincipalId) # no quotations + package_path: '$(Agent.BuildDirectory)/drop/rpmpackages' + repository: 'microsoft-opensuse42.2-prod-yum' + + - task: PublishLinuxPackagesPMC@0 + displayName: 'OpenSUSE 42.3 rpm publish' + inputs: + profile: 'prod' # or 'tuxdev' + authType: 'wif' + auth_token: $(idToken) # no quotations + tenant_ID: $(tenantId) # no quotations + service_principal_ID: $(servicePrincipalId) # no quotations + package_path: '$(Agent.BuildDirectory)/drop/rpmpackages' + repository: 'microsoft-opensuse42.3-prod-yum' + + # RedHat + - task: PublishLinuxPackagesPMC@0 + displayName: 'Red Hat 9.0 rpm publish' + inputs: + profile: 'prod' # or 'tuxdev' + authType: 'wif' + auth_token: $(idToken) # no quotations + tenant_ID: $(tenantId) # no quotations + service_principal_ID: $(servicePrincipalId) # no quotations + package_path: '$(Agent.BuildDirectory)/drop/rpmpackages' + repository: 'microsoft-rhel9.0-prod-yum' + + - task: PublishLinuxPackagesPMC@0 + displayName: 'Red Hat 8.2 rpm publish' + inputs: + profile: 'prod' # or 'tuxdev' + authType: 'wif' + auth_token: $(idToken) # no quotations + tenant_ID: $(tenantId) # no quotations + service_principal_ID: $(servicePrincipalId) # no quotations + package_path: '$(Agent.BuildDirectory)/drop/rpmpackages' + repository: 'microsoft-rhel8.2-prod-yum' + + - task: PublishLinuxPackagesPMC@0 + displayName: 'Red Hat 8.1 rpm publish' + inputs: + profile: 'prod' # or 'tuxdev' + authType: 'wif' + auth_token: $(idToken) # no quotations + tenant_ID: $(tenantId) # no quotations + service_principal_ID: $(servicePrincipalId) # no quotations + package_path: '$(Agent.BuildDirectory)/drop/rpmpackages' + repository: 'microsoft-rhel8.1-prod-yum' + + - task: PublishLinuxPackagesPMC@0 + displayName: 'Red Hat 8.0 rpm publish' + inputs: + profile: 'prod' # or 'tuxdev' + authType: 'wif' + auth_token: $(idToken) # no quotations + tenant_ID: $(tenantId) # no quotations + service_principal_ID: $(servicePrincipalId) # no quotations + package_path: '$(Agent.BuildDirectory)/drop/rpmpackages' + repository: 'microsoft-rhel8.0-prod-yum' + + - task: PublishLinuxPackagesPMC@0 + displayName: 'Red Hat 7.9 rpm publish' + inputs: + profile: 'prod' # or 'tuxdev' + authType: 'wif' + auth_token: $(idToken) # no quotations + tenant_ID: $(tenantId) # no quotations + service_principal_ID: $(servicePrincipalId) # no quotations + package_path: '$(Agent.BuildDirectory)/drop/rpmpackages' + repository: 'microsoft-rhel7.9-prod-yum' + + - task: PublishLinuxPackagesPMC@0 + displayName: 'Red Hat 7.8 rpm publish' + inputs: + profile: 'prod' # or 'tuxdev' + authType: 'wif' + auth_token: $(idToken) # no quotations + tenant_ID: $(tenantId) # no quotations + service_principal_ID: $(servicePrincipalId) # no quotations + package_path: '$(Agent.BuildDirectory)/drop/rpmpackages' + repository: 'microsoft-rhel7.8-prod-yum' + + - task: PublishLinuxPackagesPMC@0 + displayName: 'Red Hat 7.5 rpm publish' + inputs: + profile: 'prod' # or 'tuxdev' + authType: 'wif' + auth_token: $(idToken) # no quotations + tenant_ID: $(tenantId) # no quotations + service_principal_ID: $(servicePrincipalId) # no quotations + package_path: '$(Agent.BuildDirectory)/drop/rpmpackages' + repository: 'microsoft-rhel7.5-prod-yum' + + - task: PublishLinuxPackagesPMC@0 + displayName: 'Red Hat 7.4 rpm publish' + inputs: + profile: 'prod' # or 'tuxdev' + authType: 'wif' + auth_token: $(idToken) # no quotations + tenant_ID: $(tenantId) # no quotations + service_principal_ID: $(servicePrincipalId) # no quotations + package_path: '$(Agent.BuildDirectory)/drop/rpmpackages' + repository: 'microsoft-rhel7.4-prod-yum' + + - task: PublishLinuxPackagesPMC@0 + displayName: 'Red Hat 7.3 rpm publish' + inputs: + profile: 'prod' # or 'tuxdev' + authType: 'wif' + auth_token: $(idToken) # no quotations + tenant_ID: $(tenantId) # no quotations + service_principal_ID: $(servicePrincipalId) # no quotations + package_path: '$(Agent.BuildDirectory)/drop/rpmpackages' + repository: 'microsoft-rhel7.3-prod-yum' + + - task: PublishLinuxPackagesPMC@0 + displayName: 'Red Hat 7.2 rpm publish' + inputs: + profile: 'prod' # or 'tuxdev' + authType: 'wif' + auth_token: $(idToken) # no quotations + tenant_ID: $(tenantId) # no quotations + service_principal_ID: $(servicePrincipalId) # no quotations + package_path: '$(Agent.BuildDirectory)/drop/rpmpackages' + repository: 'microsoft-rhel7.2-prod-yum' + + - task: PublishLinuxPackagesPMC@0 + displayName: 'Red Hat 7.1 rpm publish' + inputs: + profile: 'prod' # or 'tuxdev' + authType: 'wif' + auth_token: $(idToken) # no quotations + tenant_ID: $(tenantId) # no quotations + service_principal_ID: $(servicePrincipalId) # no quotations + package_path: '$(Agent.BuildDirectory)/drop/rpmpackages' + repository: 'microsoft-rhel7.1-prod-yum' + + - task: PublishLinuxPackagesPMC@0 + displayName: 'Red Hat 6.9 rpm publish' + inputs: + profile: 'prod' # or 'tuxdev' + authType: 'wif' + auth_token: $(idToken) # no quotations + tenant_ID: $(tenantId) # no quotations + service_principal_ID: $(servicePrincipalId) # no quotations + package_path: '$(Agent.BuildDirectory)/drop/rpmpackages' + repository: 'microsoft-rhel6.9-prod-yum' + + + # SUSE Linux Enterprise Server + - task: PublishLinuxPackagesPMC@0 + displayName: 'SLES 15 rpm publish' + inputs: + profile: 'prod' # or 'tuxdev' + authType: 'wif' + auth_token: $(idToken) # no quotations + tenant_ID: $(tenantId) # no quotations + service_principal_ID: $(servicePrincipalId) # no quotations + package_path: '$(Agent.BuildDirectory)/drop/rpmpackages' + repository: 'microsoft-sles15-prod-yum' + + - task: PublishLinuxPackagesPMC@0 + displayName: 'SLES 12 rpm publish' + inputs: + profile: 'prod' # or 'tuxdev' + authType: 'wif' + auth_token: $(idToken) # no quotations + tenant_ID: $(tenantId) # no quotations + service_principal_ID: $(servicePrincipalId) # no quotations + package_path: '$(Agent.BuildDirectory)/drop/rpmpackages' + repository: 'microsoft-sles12-prod-yum' + + - task: PublishLinuxPackagesPMC@0 + displayName: 'SLES 11 rpm publish' + inputs: + profile: 'prod' # or 'tuxdev' + authType: 'wif' + auth_token: $(idToken) # no quotations + tenant_ID: $(tenantId) # no quotations + service_principal_ID: $(servicePrincipalId) # no quotations + package_path: '$(Agent.BuildDirectory)/drop/rpmpackages' + repository: 'microsoft-sles11-prod-yum' + + + - job: PublishDebPackage + timeoutInMinutes: 180 + dependsOn: BuildPackage + pool: + vmImage: 'ubuntu-latest' + container: pmc-cli + + steps: + - task: AzureCLI@2 + inputs: + addSpnToEnvironment: true + azureSubscription: 'virtualclient-esrp-ame' + scriptType: bash + scriptLocation: inlineScript + inlineScript: | + pmc --base-url "https://pmc-ingest.trafficmanager.net/api/v4" repo list --limit 1 + # --base-url "https://tux-ingest.corp.trafficmanager.net/api/v4" if tux-dev + + - task: AzureCLI@2 + inputs: + addSpnToEnvironment: true + azureSubscription: 'virtualclient-esrp-ame' + scriptType: bash + scriptLocation: inlineScript + inlineScript: | + echo "##vso[task.setvariable variable=idToken;issecret=true]$idToken" + echo "##vso[task.setvariable variable=tenantId]$tenantId" + echo "##vso[task.setvariable variable=servicePrincipalId]$servicePrincipalId" + + - download: current + artifact: drop + - task: CopyFiles@2 + inputs: + SourceFolder: '$(Agent.BuildDirectory)/drop/' + Contents: '*.deb' + TargetFolder: '$(Agent.BuildDirectory)/drop/packages' + + - task: AzureKeyVault@2 + inputs: + ConnectedServiceName: 'virtualclient-esrp-ame' + KeyVaultName: 'virtualclient-vault' + SecretsFilter: 'virtualclient-crc-principal' + RunAsPreJob: true + + # Debian + - task: PublishLinuxPackagesPMC@0 + displayName: 'Debian 12.0 deb publish' + inputs: + profile: 'prod' # or 'tuxdev' + authType: 'wif' + auth_token: $(idToken) # no quotations + tenant_ID: $(tenantId) # no quotations + service_principal_ID: $(servicePrincipalId) # no quotations + package_path: '$(Agent.BuildDirectory)/drop/packages' + repository: 'microsoft-debian-bookworm-prod-apt' + release: 'bookworm' + + - task: PublishLinuxPackagesPMC@0 + displayName: 'Debian 11.0 deb publish' + inputs: + profile: 'prod' # or 'tuxdev' + authType: 'wif' + auth_token: $(idToken) # no quotations + tenant_ID: $(tenantId) # no quotations + service_principal_ID: $(servicePrincipalId) # no quotations + package_path: '$(Agent.BuildDirectory)/drop/packages' + repository: 'microsoft-debian-bullseye-prod-apt' + release: 'bullseye' + + - task: PublishLinuxPackagesPMC@0 + displayName: 'Debian 10.0 deb publish' + inputs: + profile: 'prod' # or 'tuxdev' + authType: 'wif' + auth_token: $(idToken) # no quotations + tenant_ID: $(tenantId) # no quotations + service_principal_ID: $(servicePrincipalId) # no quotations + package_path: '$(Agent.BuildDirectory)/drop/packages' + repository: 'microsoft-debian-buster-prod-apt' + release: 'buster' + + - task: PublishLinuxPackagesPMC@0 + displayName: 'Debian 8.0 deb publish' + inputs: + profile: 'prod' # or 'tuxdev' + authType: 'wif' + auth_token: $(idToken) # no quotations + tenant_ID: $(tenantId) # no quotations + service_principal_ID: $(servicePrincipalId) # no quotations + package_path: '$(Agent.BuildDirectory)/drop/packages' + repository: 'microsoft-debian-jessie-prod-apt' + release: 'jessie' + + - task: PublishLinuxPackagesPMC@0 + displayName: 'Debian 9.0 deb publish' + inputs: + profile: 'prod' # or 'tuxdev' + authType: 'wif' + auth_token: $(idToken) # no quotations + tenant_ID: $(tenantId) # no quotations + service_principal_ID: $(servicePrincipalId) # no quotations + package_path: '$(Agent.BuildDirectory)/drop/packages' + repository: 'microsoft-debian-stretch-prod-apt' + release: 'stretch' + + # Ubuntu + - task: PublishLinuxPackagesPMC@0 + displayName: 'Ubuntu 23.10 deb publish' + inputs: + profile: 'prod' # or 'tuxdev' + authType: 'wif' + auth_token: $(idToken) # no quotations + tenant_ID: $(tenantId) # no quotations + service_principal_ID: $(servicePrincipalId) # no quotations + package_path: '$(Agent.BuildDirectory)/drop/packages' + repository: 'microsoft-ubuntu-noble-prod-apt' + release: 'noble' + + - task: PublishLinuxPackagesPMC@0 + displayName: 'Ubuntu 23.10 deb publish' + inputs: + profile: 'prod' # or 'tuxdev' + authType: 'wif' + auth_token: $(idToken) # no quotations + tenant_ID: $(tenantId) # no quotations + service_principal_ID: $(servicePrincipalId) # no quotations + package_path: '$(Agent.BuildDirectory)/drop/packages' + repository: 'microsoft-ubuntu-mantic-prod-apt' + release: 'mantic' + + - task: PublishLinuxPackagesPMC@0 + displayName: 'Ubuntu 23.04 deb publish' + inputs: + profile: 'prod' # or 'tuxdev' + authType: 'wif' + auth_token: $(idToken) # no quotations + tenant_ID: $(tenantId) # no quotations + service_principal_ID: $(servicePrincipalId) # no quotations + package_path: '$(Agent.BuildDirectory)/drop/packages' + repository: 'microsoft-ubuntu-lunar-prod-apt' + release: 'lunar' + + - task: PublishLinuxPackagesPMC@0 + displayName: 'Ubuntu 22.10 deb publish' + inputs: + profile: 'prod' # or 'tuxdev' + authType: 'wif' + auth_token: $(idToken) # no quotations + tenant_ID: $(tenantId) # no quotations + service_principal_ID: $(servicePrincipalId) # no quotations + package_path: '$(Agent.BuildDirectory)/drop/packages' + repository: 'microsoft-ubuntu-kinetic-prod-apt' + release: 'kinetic' + + - task: PublishLinuxPackagesPMC@0 + displayName: 'Ubuntu 22.04 deb publish' + inputs: + profile: 'prod' # or 'tuxdev' + authType: 'wif' + auth_token: $(idToken) # no quotations + tenant_ID: $(tenantId) # no quotations + service_principal_ID: $(servicePrincipalId) # no quotations + package_path: '$(Agent.BuildDirectory)/drop/packages' + repository: 'microsoft-ubuntu-jammy-prod-apt' + release: 'jammy' + + - task: PublishLinuxPackagesPMC@0 + displayName: 'Ubuntu 21.10 deb publish' + inputs: + profile: 'prod' # or 'tuxdev' + authType: 'wif' + auth_token: $(idToken) # no quotations + tenant_ID: $(tenantId) # no quotations + service_principal_ID: $(servicePrincipalId) # no quotations + package_path: '$(Agent.BuildDirectory)/drop/packages' + repository: 'microsoft-ubuntu-impish-prod-apt' + release: 'impish' + + - task: PublishLinuxPackagesPMC@0 + displayName: 'Ubuntu 21.04 deb publish' + inputs: + profile: 'prod' # or 'tuxdev' + authType: 'wif' + auth_token: $(idToken) # no quotations + tenant_ID: $(tenantId) # no quotations + service_principal_ID: $(servicePrincipalId) # no quotations + package_path: '$(Agent.BuildDirectory)/drop/packages' + repository: 'microsoft-ubuntu-hirsute-prod-apt' + release: 'hirsute' + + - task: PublishLinuxPackagesPMC@0 + displayName: 'Ubuntu 20.10 deb publish' + inputs: + profile: 'prod' # or 'tuxdev' + authType: 'wif' + auth_token: $(idToken) # no quotations + tenant_ID: $(tenantId) # no quotations + service_principal_ID: $(servicePrincipalId) # no quotations + package_path: '$(Agent.BuildDirectory)/drop/packages' + repository: 'microsoft-ubuntu-groovy-prod-apt' + release: 'groovy' + + - task: PublishLinuxPackagesPMC@0 + displayName: 'Ubuntu 20.04 deb publish' + inputs: + profile: 'prod' # or 'tuxdev' + authType: 'wif' + auth_token: $(idToken) # no quotations + tenant_ID: $(tenantId) # no quotations + service_principal_ID: $(servicePrincipalId) # no quotations + package_path: '$(Agent.BuildDirectory)/drop/packages' + repository: 'microsoft-ubuntu-focal-prod-apt' + release: 'focal' + + - task: PublishLinuxPackagesPMC@0 + displayName: 'Ubuntu 19.10 deb publish' + inputs: + profile: 'prod' # or 'tuxdev' + authType: 'wif' + auth_token: $(idToken) # no quotations + tenant_ID: $(tenantId) # no quotations + service_principal_ID: $(servicePrincipalId) # no quotations + package_path: '$(Agent.BuildDirectory)/drop/packages' + repository: 'microsoft-ubuntu-eoan-prod-apt' + release: 'eoan' + + - task: PublishLinuxPackagesPMC@0 + displayName: 'Ubuntu 19.04 deb publish' + inputs: + profile: 'prod' # or 'tuxdev' + authType: 'wif' + auth_token: $(idToken) # no quotations + tenant_ID: $(tenantId) # no quotations + service_principal_ID: $(servicePrincipalId) # no quotations + package_path: '$(Agent.BuildDirectory)/drop/packages' + repository: 'microsoft-ubuntu-disco-prod-apt' + release: 'disco' + + - task: PublishLinuxPackagesPMC@0 + displayName: 'Ubuntu 18.10 deb publish' + inputs: + profile: 'prod' # or 'tuxdev' + authType: 'wif' + auth_token: $(idToken) # no quotations + tenant_ID: $(tenantId) # no quotations + service_principal_ID: $(servicePrincipalId) # no quotations + package_path: '$(Agent.BuildDirectory)/drop/packages' + repository: 'microsoft-ubuntu-cosmic-prod-apt' + release: 'cosmic' + + - task: PublishLinuxPackagesPMC@0 + displayName: 'Ubuntu 18.04 deb publish' + inputs: + profile: 'prod' # or 'tuxdev' + authType: 'wif' + auth_token: $(idToken) # no quotations + tenant_ID: $(tenantId) # no quotations + service_principal_ID: $(servicePrincipalId) # no quotations + package_path: '$(Agent.BuildDirectory)/drop/packages' + repository: 'microsoft-ubuntu-bionic-prod-apt' + release: 'bionic' + + # Disable legacy ubuntu publish + - task: PublishLinuxPackagesPMC@0 + enabled: false + displayName: 'Ubuntu 14.04 deb publish' + inputs: + profile: 'prod' # or 'tuxdev' + authType: 'wif' + auth_token: $(idToken) # no quotations + tenant_ID: $(tenantId) # no quotations + service_principal_ID: $(servicePrincipalId) # no quotations + package_path: '$(Agent.BuildDirectory)/drop/packages' + repository: 'microsoft-ubuntu-trusty-prod-apt' + release: 'trusty' + + - task: PublishLinuxPackagesPMC@0 + enabled: false + displayName: 'Ubuntu 15.10 deb publish' + inputs: + profile: 'prod' # or 'tuxdev' + authType: 'wif' + auth_token: $(idToken) # no quotations + tenant_ID: $(tenantId) # no quotations + service_principal_ID: $(servicePrincipalId) # no quotations + package_path: '$(Agent.BuildDirectory)/drop/packages' + repository: 'microsoft-ubuntu-wily-prod-apt' + release: 'wily' + + - task: PublishLinuxPackagesPMC@0 + enabled: false + displayName: 'Ubuntu 16.04 deb publish' + inputs: + profile: 'prod' # or 'tuxdev' + authType: 'wif' + auth_token: $(idToken) # no quotations + tenant_ID: $(tenantId) # no quotations + service_principal_ID: $(servicePrincipalId) # no quotations + package_path: '$(Agent.BuildDirectory)/drop/packages' + repository: 'microsoft-ubuntu-xenial-prod-apt' + release: 'xenial' + + - task: PublishLinuxPackagesPMC@0 + enabled: false + displayName: 'Ubuntu 16.10 deb publish' + inputs: + profile: 'prod' # or 'tuxdev' + authType: 'wif' + auth_token: $(idToken) # no quotations + tenant_ID: $(tenantId) # no quotations + service_principal_ID: $(servicePrincipalId) # no quotations + package_path: '$(Agent.BuildDirectory)/drop/packages' + repository: 'microsoft-ubuntu-yakkety-prod-apt' + release: 'yakkety' + + - task: PublishLinuxPackagesPMC@0 + enabled: false + displayName: 'Ubuntu 17.04 deb publish' + inputs: + profile: 'prod' # or 'tuxdev' + authType: 'wif' + auth_token: $(idToken) # no quotations + tenant_ID: $(tenantId) # no quotations + service_principal_ID: $(servicePrincipalId) # no quotations + package_path: '$(Agent.BuildDirectory)/drop/packages' + repository: 'microsoft-ubuntu-zesty-prod-apt' + release: 'zesty' + + - task: PublishLinuxPackagesPMC@0 + enabled: false + displayName: 'Ubuntu 17.10 deb publish' + inputs: + profile: 'prod' # or 'tuxdev' + authType: 'wif' + auth_token: $(idToken) # no quotations + tenant_ID: $(tenantId) # no quotations + service_principal_ID: $(servicePrincipalId) # no quotations + package_path: '$(Agent.BuildDirectory)/drop/packages' + repository: 'microsoft-ubuntu-artful-prod-apt' + release: 'artful' \ No newline at end of file diff --git a/.pipelines/azure-pipelines-nocet.yml b/.pipelines/azure-pipelines-nocet.yml new file mode 100644 index 0000000000..34d210117c --- /dev/null +++ b/.pipelines/azure-pipelines-nocet.yml @@ -0,0 +1,105 @@ +# Starter pipeline +# Start with a minimal pipeline that you can customize to build and deploy your code. +# Add steps that build, run tests, deploy, and more: +# https://aka.ms/yaml +# ADO link: https://msazure.visualstudio.com/One/_apps/hub/ms.vss-build-web.ci-designer-hub?pipelineId=297462&branch=main + +trigger: + branches: + include: + - main + paths: + exclude: + - website + +pr: none + +pool: + vmImage: windows-latest + +variables: + ROOT: $(Build.SourcesDirectory) + CDP_DEFINITION_BUILD_COUNT: $[counter('', 0)] # needed for onebranch.pipeline.version task https://aka.ms/obpipelines/versioning + ENABLE_PRS_DELAYSIGN: 1 + + +steps: +- task: UseDotNet@2 + continueOnError: false + inputs: + packageType: 'sdk' + version: '2.1.x' + +- task: UseDotNet@2 + continueOnError: false + inputs: + packageType: 'sdk' + version: '9.0.x' + useGlobalJson: false + performMultiLevelLookup: true + workingDirectory: '$(Build.SourcesDirectory)' + +- powershell: | + # Read the content of VERSION + $version=Get-Content $(Build.SourcesDirectory)\VERSION + $version + # Set the file content as a pipeline variable + # Write-Host "##vso[task.setvariable variable=VcVersion]$version" + Write-Host "Build Version = $version" + displayName: 'Show VC Build Version' + + # Ensure the artifact output/bin/obj directories are clean. +- script: $(Build.SourcesDirectory)\clean.cmd + displayName: 'Clean Output Directories' + + # Build the repo with CET disabled. +- script: $(Build.SourcesDirectory)\build.cmd --disablecet + displayName: 'Build Solutions' + + # Build NuGet packages for the services/agents in the repo. +- script: $(Build.SourcesDirectory)\build-packages.cmd --suffix $(VersionSuffix) --disablecet + displayName: 'Build NuGet Packages' + +- task: EsrpCodeSigning@5 + inputs: + ConnectedServiceName: 'virtualclient-esrp-ame' + AppRegistrationClientId: '0225fe5c-2a99-4459-af16-27a7dcd1c14a' + AppRegistrationTenantId: '33e01921-4d64-4f8c-a055-5bdaffd5e33d' + AuthAKVName: 'virtualclient-vault-esrp' + AuthCertName: 'virtualclient-esrp-cert-auth' + AuthSignCertName: 'virtualclient-esrp-cert-sign' + FolderPath: '$(System.DefaultWorkingDirectory)' + Pattern: '*.nupkg' + signConfigType: 'inlineSignParams' + inlineOperation: | + [ + { + "KeyCode": "CP-401405", + "OperationCode": "NuGetSign", + "Parameters": {}, + "ToolName": "sign", + "ToolVersion": "1.0" + }, + { + "KeyCode": "CP-401405", + "OperationCode": "NuGetVerify", + "Parameters": {}, + "ToolName": "sign", + "ToolVersion": "1.0" + } + ] + SessionTimeout: '60' + MaxConcurrency: '50' + MaxRetryAttempts: '5' + PendingAnalysisWaitTimeoutMinutes: '5' + +- task: NuGetAuthenticate@1 + displayName: 'Authenticate with NuGet feed' + +- script: dotnet nuget push $(Build.SourcesDirectory)\out\packages\*.nupkg --api-key VSTS --timeout 1200 --source https://msazure.pkgs.visualstudio.com/_packaging/CRC-VC/nuget/v3/index.json --skip-duplicate + displayName: 'Publish NuGet to ADO Artifact Packages as temporary workaround to ADO lagging behind in package availability' + +- script: $(Build.SourcesDirectory)\upload-packages.cmd $(Build.SourcesDirectory)\out\packages $(NUGETORGAPIKEY) + displayName: 'Publish NuGet Packages' + + diff --git a/build-packages.cmd b/build-packages.cmd index e24092f9b3..3bd9baaf79 100644 --- a/build-packages.cmd +++ b/build-packages.cmd @@ -15,6 +15,13 @@ if /i "%~1" == "-?" Goto :Usage if /i "%~1" == "--help" Goto :Usage for %%a in (%*) do ( + if /i "%%a" == "--disablecet" ( + if not defined PACKAGE_SUFFIX ( + set PACKAGE_SUFFIX=nocet + ) else ( + set PACKAGE_SUFFIX=!PACKAGE_SUFFIX!-nocet + ) + ) if defined SUFFIX_FOUND ( set SUFFIX_FOUND=!! @@ -96,12 +103,6 @@ echo ---------------------------------------------------------- call dotnet pack %PACKAGES_PROJECT% --force --no-restore --no-build -c Debug -v Detailed ^ -p:Version=%PACKAGE_VERSION% -p:NuspecFile=%PACKAGE_DIR%\nuspec\VirtualClient.TestFramework.nuspec && echo: || Goto :Error -echo: -echo [Create NuGet Package] VirtualClient.linux-arm64.%PACKAGE_VERSION% -echo ---------------------------------------------------------- -call dotnet pack %PACKAGES_PROJECT% --force --no-restore --no-build -c %BUILD_CONFIGURATION% -v Detailed ^ --p:Version=%PACKAGE_VERSION% -p:NuspecFile=%PACKAGE_DIR%\nuspec\VirtualClient.linux-arm64.nuspec && echo: || Goto :Error - echo: echo [Create NuGet Package] VirtualClient.linux-x64.%PACKAGE_VERSION% echo ---------------------------------------------------------- @@ -109,10 +110,10 @@ call dotnet pack %PACKAGES_PROJECT% --force --no-restore --no-build -c %BUILD_CO -p:Version=%PACKAGE_VERSION% -p:NuspecFile=%PACKAGE_DIR%\nuspec\VirtualClient.linux-x64.nuspec && echo: || Goto :Error echo: -echo [Create NuGet Package] VirtualClient.win-arm64.%PACKAGE_VERSION% +echo [Create NuGet Package] VirtualClient.linux-arm64.%PACKAGE_VERSION% echo ---------------------------------------------------------- call dotnet pack %PACKAGES_PROJECT% --force --no-restore --no-build -c %BUILD_CONFIGURATION% -v Detailed ^ --p:Version=%PACKAGE_VERSION% -p:NuspecFile=%PACKAGE_DIR%\nuspec\VirtualClient.win-arm64.nuspec && echo: || Goto :Error +-p:Version=%PACKAGE_VERSION% -p:NuspecFile=%PACKAGE_DIR%\nuspec\VirtualClient.linux-arm64.nuspec && echo: || Goto :Error echo: echo [Create NuGet Package] VirtualClient.win-x64.%PACKAGE_VERSION% @@ -120,6 +121,12 @@ echo ---------------------------------------------------------- call dotnet pack %PACKAGES_PROJECT% --force --no-restore --no-build -c %BUILD_CONFIGURATION% -v Detailed ^ -p:Version=%PACKAGE_VERSION% -p:NuspecFile=%PACKAGE_DIR%\nuspec\VirtualClient.win-x64.nuspec && echo: || Goto :Error +echo: +echo [Create NuGet Package] VirtualClient.win-arm64.%PACKAGE_VERSION% +echo ---------------------------------------------------------- +call dotnet pack %PACKAGES_PROJECT% --force --no-restore --no-build -c %BUILD_CONFIGURATION% -v Detailed ^ +-p:Version=%PACKAGE_VERSION% -p:NuspecFile=%PACKAGE_DIR%\nuspec\VirtualClient.win-arm64.nuspec && echo: || Goto :Error + Goto :End @@ -134,7 +141,7 @@ echo --suffix - Defines a suffix to place on the package names. Valid values in echo: echo Usage: echo --------------------- -echo build-packages.cmd [--suffix ^] +echo build-packages.cmd [--suffix ^] [--disablecet] echo: echo Examples: echo --------------------- diff --git a/build-packages.sh b/build-packages.sh index 9635fa34af..406ea881c9 100644 --- a/build-packages.sh +++ b/build-packages.sh @@ -17,7 +17,7 @@ Usage() { echo "" echo "Usage:" echo "---------------------" - echo "build-packages.sh [--suffix ]" + echo "build-packages.sh [--suffix ] [--disablecet]" echo "" echo "Examples" echo "---------------------" diff --git a/build.cmd b/build.cmd index 45040d250a..5ea580f121 100644 --- a/build.cmd +++ b/build.cmd @@ -3,6 +3,7 @@ set EXIT_CODE=0 set SCRIPT_DIR=%~dp0 set SCRIPT_DIR=%SCRIPT_DIR:~0,-1% +set CET_PROPS= set BUILD_CONFIGURATION= set BUILD_FLAGS= set BUILD_VERSION= @@ -18,6 +19,9 @@ if /i "%~1" == "-?" Goto :Usage if /i "%~1" == "--help" Goto :Usage for %%a in (%*) do ( + if /i "%%a" == "--disablecet" ( + set CET_PROPS=-p:DisableCET=true + ) if /i "%%a" == "--trim" set BUILD_FLAGS=-p:PublishTrimmed=true if /i "%%a" == "--linux-x64" ( @@ -63,6 +67,11 @@ echo Configuration : %BUILD_CONFIGURATION% echo Flags : %BUILD_FLAGS% echo ********************************************************************** +REM echo: +REM echo [Restore Virtual Client] +REM echo ------------------------------------------------------- +REM call dotnet restore "%VC_SOLUTION_DIR%\VirtualClient.sln" || Goto :Erro + echo: echo [Build Solution] echo ------------------------------------------------------- @@ -74,7 +83,7 @@ echo !!! Note that the solution is be built with 'Debug' configuration in order echo !!! echo: call dotnet build "%VC_SOLUTION_DIR%\VirtualClient.sln" -c Debug -v Detailed ^ --p:AssemblyVersion=%BUILD_VERSION% && echo: || Goto :Error +-p:AssemblyVersion=%BUILD_VERSION% %CET_PROPS% && echo: || Goto :Error if /i "%BUILD_ALL%" == "true" ( set BUILD_LINUX_X64=true @@ -87,32 +96,48 @@ if /i "%BUILD_LINUX_X64%" == "true" ( echo: echo [Build Virtual Client: linux-x64] echo ---------------------------------------------------------------------- - call dotnet publish "%VC_SOLUTION_DIR%\VirtualClient.Main\VirtualClient.Main.csproj" -r linux-x64 -c %BUILD_CONFIGURATION% -v Detailed --self-contained ^ - -p:AssemblyVersion=%BUILD_VERSION% -p:InvariantGlobalization=true %BUILD_FLAGS% && echo: || Goto :Error + call dotnet publish "%VC_SOLUTION_DIR%\VirtualClient.Main\VirtualClient.Main.csproj" ^ + -r linux-x64 -c %BUILD_CONFIGURATION% -v Detailed --self-contained ^ + -p:AssemblyVersion=%BUILD_VERSION% ^ + -p:InvariantGlobalization=true ^ + %CET_PROPS% %BUILD_FLAGS% ^ + && echo: || Goto :Error ) if /i "%BUILD_LINUX_ARM64%" == "true" ( echo: echo [Build Virtual Client: linux-arm64] echo ---------------------------------------------------------------------- - call dotnet publish "%VC_SOLUTION_DIR%\VirtualClient.Main\VirtualClient.Main.csproj" -r linux-arm64 -c %BUILD_CONFIGURATION% -v Detailed --self-contained ^ - -p:AssemblyVersion=%BUILD_VERSION% -p:InvariantGlobalization=true %BUILD_FLAGS% && echo: || Goto :Error + call dotnet publish "%VC_SOLUTION_DIR%\VirtualClient.Main\VirtualClient.Main.csproj" ^ + -r linux-arm64 -c %BUILD_CONFIGURATION% -v Detailed --self-contained ^ + -p:AssemblyVersion=%BUILD_VERSION% ^ + -p:InvariantGlobalization=true ^ + %CET_PROPS% %BUILD_FLAGS% ^ + && echo: || Goto :Error ) if /i "%BUILD_WIN_X64%" == "true" ( echo: echo [Build Virtual Client: win-x64] echo ---------------------------------------------------------------------- - call dotnet publish "%VC_SOLUTION_DIR%\VirtualClient.Main\VirtualClient.Main.csproj" -r win-x64 -c %BUILD_CONFIGURATION% -v Detailed --self-contained ^ - -p:AssemblyVersion=%BUILD_VERSION% %BUILD_FLAGS% && echo: || Goto :Error + call dotnet publish "%VC_SOLUTION_DIR%\VirtualClient.Main\VirtualClient.Main.csproj" ^ + -r win-x64 -c %BUILD_CONFIGURATION% -v Detailed --self-contained ^ + -p:AssemblyVersion=%BUILD_VERSION% ^ + -p:InvariantGlobalization=true ^ + %CET_PROPS% %BUILD_FLAGS% ^ + && echo: || Goto :Error ) if /i "%BUILD_WIN_ARM64%" == "true" ( echo: echo [Build Virtual Client: win-arm64] - echo ---------------------------------------------------------------------- - call dotnet publish "%VC_SOLUTION_DIR%\VirtualClient.Main\VirtualClient.Main.csproj" -r win-arm64 -c %BUILD_CONFIGURATION% -v Detailed --self-contained ^ - -p:AssemblyVersion=%BUILD_VERSION% %BUILD_FLAGS% && echo: || Goto :Error + echo ---------------------------------------------------------------------- + call dotnet publish "%VC_SOLUTION_DIR%\VirtualClient.Main\VirtualClient.Main.csproj" ^ + -r win-arm64 -c %BUILD_CONFIGURATION% -v Detailed --self-contained ^ + -p:AssemblyVersion=%BUILD_VERSION% ^ + -p:InvariantGlobalization=true ^ + %CET_PROPS% %BUILD_FLAGS% ^ + && echo: || Goto :Error ) Goto :End @@ -124,7 +149,7 @@ echo Builds the source code in the repo. echo: echo Usage: echo --------------------- -echo build.cmd [--win-x64] [--win-arm64] [--linux-x64] [--linux-arm64] [--trim] +echo build.cmd [--win-x64] [--win-arm64] [--linux-x64] [--linux-arm64] [--trim] [--disablecet] echo: echo Examples: echo --------------------- @@ -152,6 +177,7 @@ set BUILD_FLAGS= set BUILD_CONFIGURATION= set BUILD_VERSION= set SCRIPT_DIR= +set CET_PROPS= set VC_SOLUTION_DIR= set BUILD_ALL= set BUILD_LINUX_X64= diff --git a/build.sh b/build.sh index 83fcdca993..a2155e31d1 100644 --- a/build.sh +++ b/build.sh @@ -5,6 +5,8 @@ BUILD_CONFIGURATION="Release" BUILD_FLAGS="" BUILD_VERSION="" SCRIPT_DIR="$(dirname $(readlink -f "${BASH_SOURCE[0]}"))" +CET_PROPS="" +PACKAGE_SUFFIX="" # Runtime build flags BUILD_ALL=true @@ -19,15 +21,16 @@ Usage() { echo "" echo "Options:" echo "---------------------" - echo "--trim Enables trimming for publish output." - echo "--linux-x64 Build only for linux-x64 runtime." - echo "--linux-arm64 Build only for linux-arm64 runtime." - echo "--win-x64 Build only for win-x64 runtime." - echo "--win-arm64 Build only for win-arm64 runtime." + echo "--disablecet Disables CET during build." + echo "--trim Enables trimming for publish output." + echo "--linux-x64 Build only for linux-x64 runtime." + echo "--linux-arm64 Build only for linux-arm64 runtime." + echo "--win-x64 Build only for win-x64 runtime." + echo "--win-arm64 Build only for win-arm64 runtime." echo "" echo "Usage:" echo "---------------------" - echo "./build.sh [--trim] [--linux-x64] [--linux-arm64] [--win-x64] [--win-arm64]" + echo "./build.sh [--disablecet] [--trim] [--linux-x64] [--linux-arm64] [--win-x64] [--win-arm64]" echo "" echo "Examples:" echo "---------------------" @@ -60,6 +63,10 @@ while [[ $# -gt 0 ]]; do "/?"|"-?"|"--help") Usage ;; + "--disablecet") + CET_PROPS="-p:DisableCET=true" + PACKAGE_SUFFIX=".nocet" + ;; "--trim") BUILD_FLAGS="-p:PublishTrimmed=true" ;; @@ -134,7 +141,7 @@ if [[ "$BUILD_LINUX_X64" == true ]]; then echo "[Build Virtual Client: linux-x64]" echo "----------------------------------------------------------------------" dotnet publish "$SCRIPT_DIR/src/VirtualClient/VirtualClient.Main/VirtualClient.Main.csproj" -r linux-x64 -c $BUILD_CONFIGURATION -v Detailed --self-contained \ - -p:AssemblyVersion=$BUILD_VERSION -p:InvariantGlobalization=true $BUILD_FLAGS || Error + -p:AssemblyVersion=$BUILD_VERSION -p:InvariantGlobalization=true $CET_PROPS $BUILD_FLAGS || Error fi if [[ "$BUILD_LINUX_ARM64" == true ]]; then @@ -142,7 +149,7 @@ if [[ "$BUILD_LINUX_ARM64" == true ]]; then echo "[Build Virtual Client: linux-arm64]" echo "----------------------------------------------------------------------" dotnet publish "$SCRIPT_DIR/src/VirtualClient/VirtualClient.Main/VirtualClient.Main.csproj" -r linux-arm64 -c $BUILD_CONFIGURATION -v Detailed --self-contained \ - -p:AssemblyVersion=$BUILD_VERSION -p:InvariantGlobalization=true $BUILD_FLAGS || Error + -p:AssemblyVersion=$BUILD_VERSION -p:InvariantGlobalization=true $CET_PROPS $BUILD_FLAGS || Error fi if [[ "$BUILD_WIN_X64" == true ]]; then @@ -150,7 +157,7 @@ if [[ "$BUILD_WIN_X64" == true ]]; then echo "[Build Virtual Client: win-x64]" echo "----------------------------------------------------------------------" dotnet publish "$SCRIPT_DIR/src/VirtualClient/VirtualClient.Main/VirtualClient.Main.csproj" -r win-x64 -c $BUILD_CONFIGURATION -v Detailed --self-contained \ - -p:AssemblyVersion=$BUILD_VERSION $BUILD_FLAGS || Error + -p:AssemblyVersion=$BUILD_VERSION $CET_PROPS $BUILD_FLAGS || Error fi if [[ "$BUILD_WIN_ARM64" == true ]]; then @@ -158,7 +165,7 @@ if [[ "$BUILD_WIN_ARM64" == true ]]; then echo "[Build Virtual Client: win-arm64]" echo "----------------------------------------------------------------------" dotnet publish "$SCRIPT_DIR/src/VirtualClient/VirtualClient.Main/VirtualClient.Main.csproj" -r win-arm64 -c $BUILD_CONFIGURATION -v Detailed --self-contained \ - -p:AssemblyVersion=$BUILD_VERSION $BUILD_FLAGS || Error + -p:AssemblyVersion=$BUILD_VERSION $CET_PROPS $BUILD_FLAGS || Error fi End diff --git a/src/VirtualClient/VERSIONING.md b/src/VirtualClient/VERSIONING.md index dfe9051891..741463fd16 100644 --- a/src/VirtualClient/VERSIONING.md +++ b/src/VirtualClient/VERSIONING.md @@ -1,10 +1,10 @@ # Versioning The following sections describe the versioning process for projects/libraries within the Virtual Client platform/core repo. -Projects versioned using the version defined by the Official build pipeline. This version is defined in the in the [OneBranch.Official.yml](https://github.com/Azure/AzureVirtualClient/blob/main/.pipelines/OneBranch.Official.yml) -file found in the root of the repo in the **.pipeline** directory. The team only ever changes the 'major' or 'minor' versions in this -file. Furthermore,tThe team follows the 'semantic versioning' process to determine versions. You can learn more about semantic versioning at the -link below. +Projects versioned using the version defined by the Official build pipeline. This version is defined in the in the [VERSION](https://github.com/microsoft/VirtualClient/blob/main/VERSION) +file found in the root of the repo. The team only ever changes the 'major' or 'minor' versions in this +file. Furthermore, the team follows the 'semantic versioning' process to determine versions. You can learn more about semantic versioning at the +links below. * [Semantic Versioning](https://semver.org/) * [Semantic Versioning in .NET](https://docs.microsoft.com/en-us/dotnet/core/versions/#semantic-versioning) diff --git a/src/VirtualClient/VirtualClient.Main/VirtualClient.Main.csproj b/src/VirtualClient/VirtualClient.Main/VirtualClient.Main.csproj index e4d7627d2c..0a3366007d 100644 --- a/src/VirtualClient/VirtualClient.Main/VirtualClient.Main.csproj +++ b/src/VirtualClient/VirtualClient.Main/VirtualClient.Main.csproj @@ -10,6 +10,7 @@ CA1416;NU5100;NU5118;NU5128;SA1118;NU5110;NU5111;IL2026;IL2104;IL2072 en true + false From 1f084adcc315b3c79cb7f6d6a463cf46e2e82284 Mon Sep 17 00:00:00 2001 From: saibulusu Date: Thu, 30 Apr 2026 09:19:02 -0700 Subject: [PATCH 2/5] removing nocet linux pipeline - only building in windows --- .pipelines/azure-pipelines-linux-nocet.yml | 861 --------------------- 1 file changed, 861 deletions(-) delete mode 100644 .pipelines/azure-pipelines-linux-nocet.yml diff --git a/.pipelines/azure-pipelines-linux-nocet.yml b/.pipelines/azure-pipelines-linux-nocet.yml deleted file mode 100644 index fa5aa217e8..0000000000 --- a/.pipelines/azure-pipelines-linux-nocet.yml +++ /dev/null @@ -1,861 +0,0 @@ -# Starter pipeline -# Start with a minimal pipeline that you can customize to build and deploy your code. -# Add steps that build, run tests, deploy, and more: -# https://aka.ms/yaml -# ADO link: https://msazure.visualstudio.com/One/_apps/hub/ms.vss-build-web.ci-designer-hub?pipelineId=297462&branch=main - -trigger: - none - -pr: none - -resources: - containers: - - container: pmc-cli - image: 'mcr.microsoft.com/pmc/pmc-cli:latest' - options: --entrypoint="" - -variables: - VcVersion : 1.0.0 - ROOT: $(Build.SourcesDirectory) - CDP_DEFINITION_BUILD_COUNT: $[counter('', 0)] # needed for onebranch.pipeline.version task https://aka.ms/obpipelines/versioning - ENABLE_PRS_DELAYSIGN: 1 - PMC_CLI_AUTH_TYPE: 'wif' - PMC_CLI_CLIENT_ID: 'cc6b4c30-84b7-457a-b280-79683f2dff33' - -stages: -- stage: BuildPackage - jobs: - - job: BuildPackage - pool: - vmImage: 'ubuntu-latest' - - steps: - - task: UseDotNet@2 - continueOnError: false - inputs: - packageType: 'sdk' - version: '2.1.x' - - - task: UseDotNet@2 - continueOnError: false - inputs: - packageType: 'sdk' - version: '6.x' - - - task: UseDotNet@2 - continueOnError: false - inputs: - packageType: 'sdk' - version: '9.0.x' - useGlobalJson: false - performMultiLevelLookup: true - workingDirectory: '$(Build.SourcesDirectory)' - - - script: | - # Read the content of VERSION - version=$(cat $(Build.SourcesDirectory)/VERSION) - - # Set the file content as a pipeline variable - echo "$version" - displayName: 'Show VC Build Version' - - - script: chmod -R +x $(Build.SourcesDirectory) - displayName: 'Allow scripts to be executable on Linux' - - # Ensure the artifact output/bin/obj directories are clean. - # - script: $(Build.SourcesDirectory)/clean.cmd - # displayName: 'Clean Output Directories' - - # Build the repo. - - script: $(Build.SourcesDirectory)/build.sh - displayName: 'Build Solutions' - - - script: $(Build.SourcesDirectory)/src/VirtualClient/VirtualClient.Packaging/build-rpm-linux-arm64.sh - displayName: 'Build rpm package for linux arm64' - - - script: $(Build.SourcesDirectory)/src/VirtualClient/VirtualClient.Packaging/build-rpm-linux-x64.sh - displayName: 'Build rpm package for linux x64' - - - script: $(Build.SourcesDirectory)/src/VirtualClient/VirtualClient.Packaging/build-deb-linux-arm64.sh - displayName: 'Build deb package for linux arm64' - - - script: $(Build.SourcesDirectory)/src/VirtualClient/VirtualClient.Packaging/build-deb-linux-x64.sh - displayName: 'Build deb package for linux x64' - - - - task: CopyFiles@2 - inputs: - SourceFolder: '$(Build.SourcesDirectory)/out/packages' - flattenFolders: true - Contents: | - *.deb - **/RPMS/**/*.rpm - TargetFolder: '$(Build.ArtifactStagingDirectory)' - - - task: EsrpCodeSigning@5 - inputs: - ConnectedServiceName: 'virtualclient-esrp-ame' - AppRegistrationClientId: '0225fe5c-2a99-4459-af16-27a7dcd1c14a' - AppRegistrationTenantId: '33e01921-4d64-4f8c-a055-5bdaffd5e33d' - AuthAKVName: 'virtualclient-vault-esrp' - AuthCertName: 'virtualclient-esrp-cert-auth' - AuthSignCertName: 'virtualclient-esrp-cert-sign' - FolderPath: '$(Build.ArtifactStagingDirectory)' - Pattern: '*.deb,*.rpm' - signConfigType: 'inlineSignParams' - inlineOperation: | - [ - { - "KeyCode" : "CP-450779-Pgp", - "OperationCode" : "LinuxSign", - "Parameters" : {}, - "ToolName" : "sign", - "ToolVersion" : "1.0" - } - ] - SessionTimeout: '60' - MaxConcurrency: '50' - MaxRetryAttempts: '5' - - - task: PublishBuildArtifacts@1 - inputs: - pathToPublish: '$(Build.ArtifactStagingDirectory)' - artifactName: drop - - - job: PublishRpmPackage - timeoutInMinutes: 180 - dependsOn: BuildPackage - pool: - vmImage: 'ubuntu-latest' - container: pmc-cli - - steps: - - task: AzureCLI@2 - inputs: - addSpnToEnvironment: true - azureSubscription: 'virtualclient-esrp-ame' - scriptType: bash - scriptLocation: inlineScript - inlineScript: | - pmc --base-url "https://pmc-ingest.trafficmanager.net/api/v4" repo list --limit 1 - # --base-url "https://tux-ingest.corp.trafficmanager.net/api/v4" if tux-dev - - - task: AzureCLI@2 - inputs: - addSpnToEnvironment: true - azureSubscription: 'virtualclient-esrp-ame' - scriptType: bash - scriptLocation: inlineScript - inlineScript: | - echo "##vso[task.setvariable variable=idToken;issecret=true]$idToken" - echo "##vso[task.setvariable variable=tenantId]$tenantId" - echo "##vso[task.setvariable variable=servicePrincipalId]$servicePrincipalId" - - - download: current - artifact: drop - - - task: CopyFiles@2 - inputs: - SourceFolder: '$(Agent.BuildDirectory)/drop/' - Contents: '*.rpm' - TargetFolder: '$(Agent.BuildDirectory)/drop/rpmpackages' - - - task: AzureKeyVault@2 - inputs: - ConnectedServiceName: 'virtualclient-esrp-ame' - KeyVaultName: 'virtualclient-vault' - SecretsFilter: 'virtualclient-crc-principal' - RunAsPreJob: true - - # Amazon Linux - - task: PublishLinuxPackagesPMC@0 - displayName: 'Amazon Linux 2023 rpm publish' - inputs: - profile: 'prod' # or 'tuxdev' - authType: 'wif' - auth_token: $(idToken) # no quotations - tenant_ID: $(tenantId) # no quotations - service_principal_ID: $(servicePrincipalId) # no quotations - package_path: '$(Agent.BuildDirectory)/drop/rpmpackages' - repository: 'microsoft-amazonlinux2023-prod-yum' - - - task: PublishLinuxPackagesPMC@0 - displayName: 'Amazon Linux 2 rpm publish' - inputs: - profile: 'prod' # or 'tuxdev' - authType: 'wif' - auth_token: $(idToken) # no quotations - tenant_ID: $(tenantId) # no quotations - service_principal_ID: $(servicePrincipalId) # no quotations - package_path: '$(Agent.BuildDirectory)/drop/rpmpackages' - repository: 'microsoft-amazonlinux2-prod-yum' - - - # AzLinux - - task: PublishLinuxPackagesPMC@0 - displayName: 'AzLinux 3.0 rpm publish x64' - inputs: - profile: 'prod' # or 'tuxdev' - authType: 'wif' - auth_token: $(idToken) # no quotations - tenant_ID: $(tenantId) # no quotations - service_principal_ID: $(servicePrincipalId) # no quotations - package_path: '$(Agent.BuildDirectory)/drop/rpmpackages' - repository: 'azurelinux-3.0-prod-base-x86_64-yum' - - - task: PublishLinuxPackagesPMC@0 - displayName: 'AzLinux 3.0 rpm publish aarch64' - inputs: - profile: 'prod' # or 'tuxdev' - authType: 'wif' - auth_token: $(idToken) # no quotations - tenant_ID: $(tenantId) # no quotations - service_principal_ID: $(servicePrincipalId) # no quotations - package_path: '$(Agent.BuildDirectory)/drop/rpmpackages' - repository: 'azurelinux-3.0-prod-base-aarch64-yum' - - - task: PublishLinuxPackagesPMC@0 - displayName: 'Mariner 2.0 rpm publish x64' - inputs: - profile: 'prod' # or 'tuxdev' - authType: 'wif' - auth_token: $(idToken) # no quotations - tenant_ID: $(tenantId) # no quotations - service_principal_ID: $(servicePrincipalId) # no quotations - package_path: '$(Agent.BuildDirectory)/drop/rpmpackages' - repository: 'cbl-mariner-2.0-prod-Microsoft-x86_64-yum' - - - task: PublishLinuxPackagesPMC@0 - displayName: 'Mariner 2.0 rpm publish aarch64' - inputs: - profile: 'prod' # or 'tuxdev' - authType: 'wif' - auth_token: $(idToken) # no quotations - tenant_ID: $(tenantId) # no quotations - service_principal_ID: $(servicePrincipalId) # no quotations - package_path: '$(Agent.BuildDirectory)/drop/rpmpackages' - repository: 'cbl-mariner-2.0-prod-Microsoft-aarch64-yum' - - - task: PublishLinuxPackagesPMC@0 - displayName: 'Mariner 1.0 rpm publish' - inputs: - profile: 'prod' # or 'tuxdev' - authType: 'wif' - auth_token: $(idToken) # no quotations - tenant_ID: $(tenantId) # no quotations - service_principal_ID: $(servicePrincipalId) # no quotations - package_path: '$(Agent.BuildDirectory)/drop/rpmpackages' - repository: 'cbl-mariner-1.0-prod-Microsoft-aarch64-rpms-yum' - - - task: PublishLinuxPackagesPMC@0 - displayName: 'Mariner 1.0 rpm publish' - inputs: - profile: 'prod' # or 'tuxdev' - authType: 'wif' - auth_token: $(idToken) # no quotations - tenant_ID: $(tenantId) # no quotations - service_principal_ID: $(servicePrincipalId) # no quotations - package_path: '$(Agent.BuildDirectory)/drop/rpmpackages' - repository: 'cbl-mariner-1.0-prod-Microsoft-x86_64-rpms-yum' - - # Centos - - task: PublishLinuxPackagesPMC@0 - displayName: 'CentOS 7 rpm publish' - inputs: - profile: 'prod' # or 'tuxdev' - authType: 'wif' - auth_token: $(idToken) # no quotations - tenant_ID: $(tenantId) # no quotations - service_principal_ID: $(servicePrincipalId) # no quotations - package_path: '$(Agent.BuildDirectory)/drop/rpmpackages' - repository: 'microsoft-centos7-prod-yum' - - - task: PublishLinuxPackagesPMC@0 - displayName: 'CentOS 6 rpm publish' - inputs: - profile: 'prod' # or 'tuxdev' - authType: 'wif' - auth_token: $(idToken) # no quotations - tenant_ID: $(tenantId) # no quotations - service_principal_ID: $(servicePrincipalId) # no quotations - package_path: '$(Agent.BuildDirectory)/drop/rpmpackages' - repository: 'microsoft-centos6-prod-yum' - - # Fedora - - task: PublishLinuxPackagesPMC@0 - displayName: 'Fedora 39 rpm publish' - inputs: - profile: 'prod' # or 'tuxdev' - authType: 'wif' - auth_token: $(idToken) # no quotations - tenant_ID: $(tenantId) # no quotations - service_principal_ID: $(servicePrincipalId) # no quotations - package_path: '$(Agent.BuildDirectory)/drop/rpmpackages' - repository: 'microsoft-fedora39-prod-yum' - - - task: PublishLinuxPackagesPMC@0 - displayName: 'Fedora 38 rpm publish' - inputs: - profile: 'prod' # or 'tuxdev' - authType: 'wif' - auth_token: $(idToken) # no quotations - tenant_ID: $(tenantId) # no quotations - service_principal_ID: $(servicePrincipalId) # no quotations - package_path: '$(Agent.BuildDirectory)/drop/rpmpackages' - repository: 'microsoft-fedora38-prod-yum' - - - task: PublishLinuxPackagesPMC@0 - displayName: 'Fedora 37 rpm publish' - inputs: - profile: 'prod' # or 'tuxdev' - authType: 'wif' - auth_token: $(idToken) # no quotations - tenant_ID: $(tenantId) # no quotations - service_principal_ID: $(servicePrincipalId) # no quotations - package_path: '$(Agent.BuildDirectory)/drop/rpmpackages' - repository: 'microsoft-fedora37-prod-yum' - - # OpenSUSE - - task: PublishLinuxPackagesPMC@0 - displayName: 'OpenSUSE 15 rpm publish' - inputs: - profile: 'prod' # or 'tuxdev' - authType: 'wif' - auth_token: $(idToken) # no quotations - tenant_ID: $(tenantId) # no quotations - service_principal_ID: $(servicePrincipalId) # no quotations - package_path: '$(Agent.BuildDirectory)/drop/rpmpackages' - repository: 'microsoft-opensuse15-prod-yum' - - - task: PublishLinuxPackagesPMC@0 - displayName: 'OpenSUSE 42.2 rpm publish' - inputs: - profile: 'prod' # or 'tuxdev' - authType: 'wif' - auth_token: $(idToken) # no quotations - tenant_ID: $(tenantId) # no quotations - service_principal_ID: $(servicePrincipalId) # no quotations - package_path: '$(Agent.BuildDirectory)/drop/rpmpackages' - repository: 'microsoft-opensuse42.2-prod-yum' - - - task: PublishLinuxPackagesPMC@0 - displayName: 'OpenSUSE 42.3 rpm publish' - inputs: - profile: 'prod' # or 'tuxdev' - authType: 'wif' - auth_token: $(idToken) # no quotations - tenant_ID: $(tenantId) # no quotations - service_principal_ID: $(servicePrincipalId) # no quotations - package_path: '$(Agent.BuildDirectory)/drop/rpmpackages' - repository: 'microsoft-opensuse42.3-prod-yum' - - # RedHat - - task: PublishLinuxPackagesPMC@0 - displayName: 'Red Hat 9.0 rpm publish' - inputs: - profile: 'prod' # or 'tuxdev' - authType: 'wif' - auth_token: $(idToken) # no quotations - tenant_ID: $(tenantId) # no quotations - service_principal_ID: $(servicePrincipalId) # no quotations - package_path: '$(Agent.BuildDirectory)/drop/rpmpackages' - repository: 'microsoft-rhel9.0-prod-yum' - - - task: PublishLinuxPackagesPMC@0 - displayName: 'Red Hat 8.2 rpm publish' - inputs: - profile: 'prod' # or 'tuxdev' - authType: 'wif' - auth_token: $(idToken) # no quotations - tenant_ID: $(tenantId) # no quotations - service_principal_ID: $(servicePrincipalId) # no quotations - package_path: '$(Agent.BuildDirectory)/drop/rpmpackages' - repository: 'microsoft-rhel8.2-prod-yum' - - - task: PublishLinuxPackagesPMC@0 - displayName: 'Red Hat 8.1 rpm publish' - inputs: - profile: 'prod' # or 'tuxdev' - authType: 'wif' - auth_token: $(idToken) # no quotations - tenant_ID: $(tenantId) # no quotations - service_principal_ID: $(servicePrincipalId) # no quotations - package_path: '$(Agent.BuildDirectory)/drop/rpmpackages' - repository: 'microsoft-rhel8.1-prod-yum' - - - task: PublishLinuxPackagesPMC@0 - displayName: 'Red Hat 8.0 rpm publish' - inputs: - profile: 'prod' # or 'tuxdev' - authType: 'wif' - auth_token: $(idToken) # no quotations - tenant_ID: $(tenantId) # no quotations - service_principal_ID: $(servicePrincipalId) # no quotations - package_path: '$(Agent.BuildDirectory)/drop/rpmpackages' - repository: 'microsoft-rhel8.0-prod-yum' - - - task: PublishLinuxPackagesPMC@0 - displayName: 'Red Hat 7.9 rpm publish' - inputs: - profile: 'prod' # or 'tuxdev' - authType: 'wif' - auth_token: $(idToken) # no quotations - tenant_ID: $(tenantId) # no quotations - service_principal_ID: $(servicePrincipalId) # no quotations - package_path: '$(Agent.BuildDirectory)/drop/rpmpackages' - repository: 'microsoft-rhel7.9-prod-yum' - - - task: PublishLinuxPackagesPMC@0 - displayName: 'Red Hat 7.8 rpm publish' - inputs: - profile: 'prod' # or 'tuxdev' - authType: 'wif' - auth_token: $(idToken) # no quotations - tenant_ID: $(tenantId) # no quotations - service_principal_ID: $(servicePrincipalId) # no quotations - package_path: '$(Agent.BuildDirectory)/drop/rpmpackages' - repository: 'microsoft-rhel7.8-prod-yum' - - - task: PublishLinuxPackagesPMC@0 - displayName: 'Red Hat 7.5 rpm publish' - inputs: - profile: 'prod' # or 'tuxdev' - authType: 'wif' - auth_token: $(idToken) # no quotations - tenant_ID: $(tenantId) # no quotations - service_principal_ID: $(servicePrincipalId) # no quotations - package_path: '$(Agent.BuildDirectory)/drop/rpmpackages' - repository: 'microsoft-rhel7.5-prod-yum' - - - task: PublishLinuxPackagesPMC@0 - displayName: 'Red Hat 7.4 rpm publish' - inputs: - profile: 'prod' # or 'tuxdev' - authType: 'wif' - auth_token: $(idToken) # no quotations - tenant_ID: $(tenantId) # no quotations - service_principal_ID: $(servicePrincipalId) # no quotations - package_path: '$(Agent.BuildDirectory)/drop/rpmpackages' - repository: 'microsoft-rhel7.4-prod-yum' - - - task: PublishLinuxPackagesPMC@0 - displayName: 'Red Hat 7.3 rpm publish' - inputs: - profile: 'prod' # or 'tuxdev' - authType: 'wif' - auth_token: $(idToken) # no quotations - tenant_ID: $(tenantId) # no quotations - service_principal_ID: $(servicePrincipalId) # no quotations - package_path: '$(Agent.BuildDirectory)/drop/rpmpackages' - repository: 'microsoft-rhel7.3-prod-yum' - - - task: PublishLinuxPackagesPMC@0 - displayName: 'Red Hat 7.2 rpm publish' - inputs: - profile: 'prod' # or 'tuxdev' - authType: 'wif' - auth_token: $(idToken) # no quotations - tenant_ID: $(tenantId) # no quotations - service_principal_ID: $(servicePrincipalId) # no quotations - package_path: '$(Agent.BuildDirectory)/drop/rpmpackages' - repository: 'microsoft-rhel7.2-prod-yum' - - - task: PublishLinuxPackagesPMC@0 - displayName: 'Red Hat 7.1 rpm publish' - inputs: - profile: 'prod' # or 'tuxdev' - authType: 'wif' - auth_token: $(idToken) # no quotations - tenant_ID: $(tenantId) # no quotations - service_principal_ID: $(servicePrincipalId) # no quotations - package_path: '$(Agent.BuildDirectory)/drop/rpmpackages' - repository: 'microsoft-rhel7.1-prod-yum' - - - task: PublishLinuxPackagesPMC@0 - displayName: 'Red Hat 6.9 rpm publish' - inputs: - profile: 'prod' # or 'tuxdev' - authType: 'wif' - auth_token: $(idToken) # no quotations - tenant_ID: $(tenantId) # no quotations - service_principal_ID: $(servicePrincipalId) # no quotations - package_path: '$(Agent.BuildDirectory)/drop/rpmpackages' - repository: 'microsoft-rhel6.9-prod-yum' - - - # SUSE Linux Enterprise Server - - task: PublishLinuxPackagesPMC@0 - displayName: 'SLES 15 rpm publish' - inputs: - profile: 'prod' # or 'tuxdev' - authType: 'wif' - auth_token: $(idToken) # no quotations - tenant_ID: $(tenantId) # no quotations - service_principal_ID: $(servicePrincipalId) # no quotations - package_path: '$(Agent.BuildDirectory)/drop/rpmpackages' - repository: 'microsoft-sles15-prod-yum' - - - task: PublishLinuxPackagesPMC@0 - displayName: 'SLES 12 rpm publish' - inputs: - profile: 'prod' # or 'tuxdev' - authType: 'wif' - auth_token: $(idToken) # no quotations - tenant_ID: $(tenantId) # no quotations - service_principal_ID: $(servicePrincipalId) # no quotations - package_path: '$(Agent.BuildDirectory)/drop/rpmpackages' - repository: 'microsoft-sles12-prod-yum' - - - task: PublishLinuxPackagesPMC@0 - displayName: 'SLES 11 rpm publish' - inputs: - profile: 'prod' # or 'tuxdev' - authType: 'wif' - auth_token: $(idToken) # no quotations - tenant_ID: $(tenantId) # no quotations - service_principal_ID: $(servicePrincipalId) # no quotations - package_path: '$(Agent.BuildDirectory)/drop/rpmpackages' - repository: 'microsoft-sles11-prod-yum' - - - - job: PublishDebPackage - timeoutInMinutes: 180 - dependsOn: BuildPackage - pool: - vmImage: 'ubuntu-latest' - container: pmc-cli - - steps: - - task: AzureCLI@2 - inputs: - addSpnToEnvironment: true - azureSubscription: 'virtualclient-esrp-ame' - scriptType: bash - scriptLocation: inlineScript - inlineScript: | - pmc --base-url "https://pmc-ingest.trafficmanager.net/api/v4" repo list --limit 1 - # --base-url "https://tux-ingest.corp.trafficmanager.net/api/v4" if tux-dev - - - task: AzureCLI@2 - inputs: - addSpnToEnvironment: true - azureSubscription: 'virtualclient-esrp-ame' - scriptType: bash - scriptLocation: inlineScript - inlineScript: | - echo "##vso[task.setvariable variable=idToken;issecret=true]$idToken" - echo "##vso[task.setvariable variable=tenantId]$tenantId" - echo "##vso[task.setvariable variable=servicePrincipalId]$servicePrincipalId" - - - download: current - artifact: drop - - task: CopyFiles@2 - inputs: - SourceFolder: '$(Agent.BuildDirectory)/drop/' - Contents: '*.deb' - TargetFolder: '$(Agent.BuildDirectory)/drop/packages' - - - task: AzureKeyVault@2 - inputs: - ConnectedServiceName: 'virtualclient-esrp-ame' - KeyVaultName: 'virtualclient-vault' - SecretsFilter: 'virtualclient-crc-principal' - RunAsPreJob: true - - # Debian - - task: PublishLinuxPackagesPMC@0 - displayName: 'Debian 12.0 deb publish' - inputs: - profile: 'prod' # or 'tuxdev' - authType: 'wif' - auth_token: $(idToken) # no quotations - tenant_ID: $(tenantId) # no quotations - service_principal_ID: $(servicePrincipalId) # no quotations - package_path: '$(Agent.BuildDirectory)/drop/packages' - repository: 'microsoft-debian-bookworm-prod-apt' - release: 'bookworm' - - - task: PublishLinuxPackagesPMC@0 - displayName: 'Debian 11.0 deb publish' - inputs: - profile: 'prod' # or 'tuxdev' - authType: 'wif' - auth_token: $(idToken) # no quotations - tenant_ID: $(tenantId) # no quotations - service_principal_ID: $(servicePrincipalId) # no quotations - package_path: '$(Agent.BuildDirectory)/drop/packages' - repository: 'microsoft-debian-bullseye-prod-apt' - release: 'bullseye' - - - task: PublishLinuxPackagesPMC@0 - displayName: 'Debian 10.0 deb publish' - inputs: - profile: 'prod' # or 'tuxdev' - authType: 'wif' - auth_token: $(idToken) # no quotations - tenant_ID: $(tenantId) # no quotations - service_principal_ID: $(servicePrincipalId) # no quotations - package_path: '$(Agent.BuildDirectory)/drop/packages' - repository: 'microsoft-debian-buster-prod-apt' - release: 'buster' - - - task: PublishLinuxPackagesPMC@0 - displayName: 'Debian 8.0 deb publish' - inputs: - profile: 'prod' # or 'tuxdev' - authType: 'wif' - auth_token: $(idToken) # no quotations - tenant_ID: $(tenantId) # no quotations - service_principal_ID: $(servicePrincipalId) # no quotations - package_path: '$(Agent.BuildDirectory)/drop/packages' - repository: 'microsoft-debian-jessie-prod-apt' - release: 'jessie' - - - task: PublishLinuxPackagesPMC@0 - displayName: 'Debian 9.0 deb publish' - inputs: - profile: 'prod' # or 'tuxdev' - authType: 'wif' - auth_token: $(idToken) # no quotations - tenant_ID: $(tenantId) # no quotations - service_principal_ID: $(servicePrincipalId) # no quotations - package_path: '$(Agent.BuildDirectory)/drop/packages' - repository: 'microsoft-debian-stretch-prod-apt' - release: 'stretch' - - # Ubuntu - - task: PublishLinuxPackagesPMC@0 - displayName: 'Ubuntu 23.10 deb publish' - inputs: - profile: 'prod' # or 'tuxdev' - authType: 'wif' - auth_token: $(idToken) # no quotations - tenant_ID: $(tenantId) # no quotations - service_principal_ID: $(servicePrincipalId) # no quotations - package_path: '$(Agent.BuildDirectory)/drop/packages' - repository: 'microsoft-ubuntu-noble-prod-apt' - release: 'noble' - - - task: PublishLinuxPackagesPMC@0 - displayName: 'Ubuntu 23.10 deb publish' - inputs: - profile: 'prod' # or 'tuxdev' - authType: 'wif' - auth_token: $(idToken) # no quotations - tenant_ID: $(tenantId) # no quotations - service_principal_ID: $(servicePrincipalId) # no quotations - package_path: '$(Agent.BuildDirectory)/drop/packages' - repository: 'microsoft-ubuntu-mantic-prod-apt' - release: 'mantic' - - - task: PublishLinuxPackagesPMC@0 - displayName: 'Ubuntu 23.04 deb publish' - inputs: - profile: 'prod' # or 'tuxdev' - authType: 'wif' - auth_token: $(idToken) # no quotations - tenant_ID: $(tenantId) # no quotations - service_principal_ID: $(servicePrincipalId) # no quotations - package_path: '$(Agent.BuildDirectory)/drop/packages' - repository: 'microsoft-ubuntu-lunar-prod-apt' - release: 'lunar' - - - task: PublishLinuxPackagesPMC@0 - displayName: 'Ubuntu 22.10 deb publish' - inputs: - profile: 'prod' # or 'tuxdev' - authType: 'wif' - auth_token: $(idToken) # no quotations - tenant_ID: $(tenantId) # no quotations - service_principal_ID: $(servicePrincipalId) # no quotations - package_path: '$(Agent.BuildDirectory)/drop/packages' - repository: 'microsoft-ubuntu-kinetic-prod-apt' - release: 'kinetic' - - - task: PublishLinuxPackagesPMC@0 - displayName: 'Ubuntu 22.04 deb publish' - inputs: - profile: 'prod' # or 'tuxdev' - authType: 'wif' - auth_token: $(idToken) # no quotations - tenant_ID: $(tenantId) # no quotations - service_principal_ID: $(servicePrincipalId) # no quotations - package_path: '$(Agent.BuildDirectory)/drop/packages' - repository: 'microsoft-ubuntu-jammy-prod-apt' - release: 'jammy' - - - task: PublishLinuxPackagesPMC@0 - displayName: 'Ubuntu 21.10 deb publish' - inputs: - profile: 'prod' # or 'tuxdev' - authType: 'wif' - auth_token: $(idToken) # no quotations - tenant_ID: $(tenantId) # no quotations - service_principal_ID: $(servicePrincipalId) # no quotations - package_path: '$(Agent.BuildDirectory)/drop/packages' - repository: 'microsoft-ubuntu-impish-prod-apt' - release: 'impish' - - - task: PublishLinuxPackagesPMC@0 - displayName: 'Ubuntu 21.04 deb publish' - inputs: - profile: 'prod' # or 'tuxdev' - authType: 'wif' - auth_token: $(idToken) # no quotations - tenant_ID: $(tenantId) # no quotations - service_principal_ID: $(servicePrincipalId) # no quotations - package_path: '$(Agent.BuildDirectory)/drop/packages' - repository: 'microsoft-ubuntu-hirsute-prod-apt' - release: 'hirsute' - - - task: PublishLinuxPackagesPMC@0 - displayName: 'Ubuntu 20.10 deb publish' - inputs: - profile: 'prod' # or 'tuxdev' - authType: 'wif' - auth_token: $(idToken) # no quotations - tenant_ID: $(tenantId) # no quotations - service_principal_ID: $(servicePrincipalId) # no quotations - package_path: '$(Agent.BuildDirectory)/drop/packages' - repository: 'microsoft-ubuntu-groovy-prod-apt' - release: 'groovy' - - - task: PublishLinuxPackagesPMC@0 - displayName: 'Ubuntu 20.04 deb publish' - inputs: - profile: 'prod' # or 'tuxdev' - authType: 'wif' - auth_token: $(idToken) # no quotations - tenant_ID: $(tenantId) # no quotations - service_principal_ID: $(servicePrincipalId) # no quotations - package_path: '$(Agent.BuildDirectory)/drop/packages' - repository: 'microsoft-ubuntu-focal-prod-apt' - release: 'focal' - - - task: PublishLinuxPackagesPMC@0 - displayName: 'Ubuntu 19.10 deb publish' - inputs: - profile: 'prod' # or 'tuxdev' - authType: 'wif' - auth_token: $(idToken) # no quotations - tenant_ID: $(tenantId) # no quotations - service_principal_ID: $(servicePrincipalId) # no quotations - package_path: '$(Agent.BuildDirectory)/drop/packages' - repository: 'microsoft-ubuntu-eoan-prod-apt' - release: 'eoan' - - - task: PublishLinuxPackagesPMC@0 - displayName: 'Ubuntu 19.04 deb publish' - inputs: - profile: 'prod' # or 'tuxdev' - authType: 'wif' - auth_token: $(idToken) # no quotations - tenant_ID: $(tenantId) # no quotations - service_principal_ID: $(servicePrincipalId) # no quotations - package_path: '$(Agent.BuildDirectory)/drop/packages' - repository: 'microsoft-ubuntu-disco-prod-apt' - release: 'disco' - - - task: PublishLinuxPackagesPMC@0 - displayName: 'Ubuntu 18.10 deb publish' - inputs: - profile: 'prod' # or 'tuxdev' - authType: 'wif' - auth_token: $(idToken) # no quotations - tenant_ID: $(tenantId) # no quotations - service_principal_ID: $(servicePrincipalId) # no quotations - package_path: '$(Agent.BuildDirectory)/drop/packages' - repository: 'microsoft-ubuntu-cosmic-prod-apt' - release: 'cosmic' - - - task: PublishLinuxPackagesPMC@0 - displayName: 'Ubuntu 18.04 deb publish' - inputs: - profile: 'prod' # or 'tuxdev' - authType: 'wif' - auth_token: $(idToken) # no quotations - tenant_ID: $(tenantId) # no quotations - service_principal_ID: $(servicePrincipalId) # no quotations - package_path: '$(Agent.BuildDirectory)/drop/packages' - repository: 'microsoft-ubuntu-bionic-prod-apt' - release: 'bionic' - - # Disable legacy ubuntu publish - - task: PublishLinuxPackagesPMC@0 - enabled: false - displayName: 'Ubuntu 14.04 deb publish' - inputs: - profile: 'prod' # or 'tuxdev' - authType: 'wif' - auth_token: $(idToken) # no quotations - tenant_ID: $(tenantId) # no quotations - service_principal_ID: $(servicePrincipalId) # no quotations - package_path: '$(Agent.BuildDirectory)/drop/packages' - repository: 'microsoft-ubuntu-trusty-prod-apt' - release: 'trusty' - - - task: PublishLinuxPackagesPMC@0 - enabled: false - displayName: 'Ubuntu 15.10 deb publish' - inputs: - profile: 'prod' # or 'tuxdev' - authType: 'wif' - auth_token: $(idToken) # no quotations - tenant_ID: $(tenantId) # no quotations - service_principal_ID: $(servicePrincipalId) # no quotations - package_path: '$(Agent.BuildDirectory)/drop/packages' - repository: 'microsoft-ubuntu-wily-prod-apt' - release: 'wily' - - - task: PublishLinuxPackagesPMC@0 - enabled: false - displayName: 'Ubuntu 16.04 deb publish' - inputs: - profile: 'prod' # or 'tuxdev' - authType: 'wif' - auth_token: $(idToken) # no quotations - tenant_ID: $(tenantId) # no quotations - service_principal_ID: $(servicePrincipalId) # no quotations - package_path: '$(Agent.BuildDirectory)/drop/packages' - repository: 'microsoft-ubuntu-xenial-prod-apt' - release: 'xenial' - - - task: PublishLinuxPackagesPMC@0 - enabled: false - displayName: 'Ubuntu 16.10 deb publish' - inputs: - profile: 'prod' # or 'tuxdev' - authType: 'wif' - auth_token: $(idToken) # no quotations - tenant_ID: $(tenantId) # no quotations - service_principal_ID: $(servicePrincipalId) # no quotations - package_path: '$(Agent.BuildDirectory)/drop/packages' - repository: 'microsoft-ubuntu-yakkety-prod-apt' - release: 'yakkety' - - - task: PublishLinuxPackagesPMC@0 - enabled: false - displayName: 'Ubuntu 17.04 deb publish' - inputs: - profile: 'prod' # or 'tuxdev' - authType: 'wif' - auth_token: $(idToken) # no quotations - tenant_ID: $(tenantId) # no quotations - service_principal_ID: $(servicePrincipalId) # no quotations - package_path: '$(Agent.BuildDirectory)/drop/packages' - repository: 'microsoft-ubuntu-zesty-prod-apt' - release: 'zesty' - - - task: PublishLinuxPackagesPMC@0 - enabled: false - displayName: 'Ubuntu 17.10 deb publish' - inputs: - profile: 'prod' # or 'tuxdev' - authType: 'wif' - auth_token: $(idToken) # no quotations - tenant_ID: $(tenantId) # no quotations - service_principal_ID: $(servicePrincipalId) # no quotations - package_path: '$(Agent.BuildDirectory)/drop/packages' - repository: 'microsoft-ubuntu-artful-prod-apt' - release: 'artful' \ No newline at end of file From ac504b36a69fb385b3e6ca3de51bb05315e4270c Mon Sep 17 00:00:00 2001 From: saibulusu Date: Thu, 30 Apr 2026 09:48:41 -0700 Subject: [PATCH 3/5] removing restore before build --- build.cmd | 5 ----- 1 file changed, 5 deletions(-) diff --git a/build.cmd b/build.cmd index 5ea580f121..a22bc7eed9 100644 --- a/build.cmd +++ b/build.cmd @@ -67,11 +67,6 @@ echo Configuration : %BUILD_CONFIGURATION% echo Flags : %BUILD_FLAGS% echo ********************************************************************** -REM echo: -REM echo [Restore Virtual Client] -REM echo ------------------------------------------------------- -REM call dotnet restore "%VC_SOLUTION_DIR%\VirtualClient.sln" || Goto :Erro - echo: echo [Build Solution] echo ------------------------------------------------------- From 7a89e20cb0967847d38c1986c7cd327200d1edbf Mon Sep 17 00:00:00 2001 From: saibulusu Date: Fri, 1 May 2026 00:51:35 -0700 Subject: [PATCH 4/5] minor fix --- build-packages.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/build-packages.sh b/build-packages.sh index 406ea881c9..9635fa34af 100644 --- a/build-packages.sh +++ b/build-packages.sh @@ -17,7 +17,7 @@ Usage() { echo "" echo "Usage:" echo "---------------------" - echo "build-packages.sh [--suffix ] [--disablecet]" + echo "build-packages.sh [--suffix ]" echo "" echo "Examples" echo "---------------------" From bc77e0366dca951ee01c36ec8b5e9fdfd31aed66 Mon Sep 17 00:00:00 2001 From: saibulusu Date: Tue, 5 May 2026 16:25:59 -0700 Subject: [PATCH 5/5] small comment --- .pipelines/azure-pipelines-nocet.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.pipelines/azure-pipelines-nocet.yml b/.pipelines/azure-pipelines-nocet.yml index 34d210117c..867e951cc5 100644 --- a/.pipelines/azure-pipelines-nocet.yml +++ b/.pipelines/azure-pipelines-nocet.yml @@ -1,4 +1,4 @@ -# Starter pipeline +# Copy of starter pipeline, to publish packages with CET disabled # Start with a minimal pipeline that you can customize to build and deploy your code. # Add steps that build, run tests, deploy, and more: # https://aka.ms/yaml