Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
295 changes: 295 additions & 0 deletions eng/azure-pipelines-public.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,295 @@
variables:
- template: /eng/common-variables.yml
- template: /eng/common/templates/variables/pool-providers.yml
- name: Build.Repository.Clean
value: true
- name: CheckNuGetSizesScript
value: >-
$nupkgs_large=(Get-ChildItem artifacts/packages/$(_BuildConfig)/Shipping -recurse -include "*.nupkg" | Select-Object Name,Length | Where-Object { $_.Length -gt 250*1MB });
if ($nupkgs_large.Length -gt 0) { Write-Error "NuGet size exceeds 250MiB: $($nupkgs_large | Format-Table | Out-String)"; exit 1 }

trigger:
batch: true
branches:
include:
- main
- release/*

pr:
branches:
include:
- main
- release/*

stages:
- stage: build
displayName: Build
jobs:
- template: /eng/common/templates/jobs/jobs.yml
parameters:
enablePublishBuildArtifacts: true
enablePublishBuildAssets: true
enablePublishUsingPipelines: true
enableMicrobuild: true
enableSourceBuild: true
variables:
- _BuildConfig: Release
jobs:

############ macOS BUILD ############
- job: Build_macOS
displayName: macOS
timeoutInMinutes: 120
pool:
vmImage: macOS-11
strategy:
matrix:
x64:
assetManifestOS: osx
assetManifestPlatform: x64
archflag: --arch x64
arm64:
assetManifestOS: osx
assetManifestPlatform: arm64
archflag: --arch arm64
steps:
- bash: |
./build.sh $(archflag) --restore --build --pack --ci --configuration $(_BuildConfig) /p:PackageRID=$(assetManifestOS)-$(assetManifestPlatform) /p:AssetManifestOS=$(assetManifestOS) /p:PlatformName=$(assetManifestPlatform) $(_InternalBuildArgs) $(_NonWindowsInternalPublishArg)
displayName: Build
- publish: artifacts/packages
artifact: Packages_macOS_$(assetManifestPlatform)
- bash: |
rm -rf binaryen node python llvm emscripten
displayName: Remove temporary artifacts
- powershell: $(CheckNuGetSizesScript)
displayName: Check NuGet sizes

# Only run in case of in-build signing
- ${{ if and(ne(variables['System.TeamProject'], 'public'), ne(variables['Build.Reason'], 'PullRequest'), ne(variables['PostBuildSign'], 'true')) }}:
- job: Sign_macOS
dependsOn: Build_macOS
displayName: Sign macOS
timeoutInMinutes: 30
pool:
name: $(DncEngInternalBuildPool)
demands: ImageOverride -equals windows.vs2022.amd64
strategy:
matrix:
x64:
assetManifestOS: osx
assetManifestPlatform: x64
arm64:
assetManifestOS: osx
assetManifestPlatform: arm64
steps:
- task: DownloadPipelineArtifact@2
inputs:
artifact: Packages_macOS_$(assetManifestPlatform)
path: 'artifacts/packages'

- powershell: |
./eng/common/build.ps1 -ci -configuration $(_BuildConfig) -restore -sign -publish /p:PackageRID=$(assetManifestOS)-$(assetManifestPlatform) /p:AssetManifestOS=$(assetManifestOS) /p:PlatformName=$(assetManifestPlatform) $(_InternalBuildArgs)
displayName: Sign and Publish

############ Linux BUILD ############
- job: Build_Linux
displayName: Linux
timeoutInMinutes: 120
pool:
${{ if eq(variables['System.TeamProject'], 'public') }}:
name: $(DncEngPublicBuildPool)
demands: ImageOverride -equals build.ubuntu.2204.amd64.open
${{ if eq(variables['System.TeamProject'], 'internal') }}:
name: $(DncEngInternalBuildPool)
demands: ImageOverride -equals build.ubuntu.2204.amd64
strategy:
matrix:
x64:
assetManifestOS: linux
assetManifestPlatform: x64
archflag: --arch x64
arm64:
assetManifestOS: linux
assetManifestPlatform: arm64
archflag: --arch arm64
x64_musl:
assetManifestOS: linux-musl
assetManifestPlatform: x64
archflag: --arch x64
arm64_musl:
assetManifestOS: linux-musl
assetManifestPlatform: arm64
archflag: --arch arm64
steps:
- bash: |
./build.sh $(archflag) --restore --build --pack --ci --configuration $(_BuildConfig) /p:PackageRID=$(assetManifestOS)-$(assetManifestPlatform) /p:AssetManifestOS=$(assetManifestOS) /p:PlatformName=$(assetManifestPlatform) $(_InternalBuildArgs) $(_NonWindowsInternalPublishArg)
displayName: Build
- publish: artifacts/packages
artifact: Packages_$(assetManifestOS)_$(assetManifestPlatform)
- bash: |
rm -rf binaryen node llvm emscripten
displayName: Remove temporary artifacts
- powershell: $(CheckNuGetSizesScript)
displayName: Check NuGet sizes

# Only run in case of in-build signing
- ${{ if and(ne(variables['System.TeamProject'], 'public'), ne(variables['Build.Reason'], 'PullRequest'), ne(variables['PostBuildSign'], 'true')) }}:
- job: Sign_Linux
dependsOn: Build_Linux
displayName: Sign Linux
timeoutInMinutes: 30
pool:
name: $(DncEngInternalBuildPool)
demands: ImageOverride -equals windows.vs2022.amd64
strategy:
matrix:
x64:
assetManifestOS: linux
assetManifestPlatform: x64
arm64:
assetManifestOS: linux
assetManifestPlatform: arm64
x64_musl:
assetManifestOS: linux-musl
assetManifestPlatform: x64
arm64_musl:
assetManifestOS: linux-musl
assetManifestPlatform: arm64
steps:
- task: DownloadPipelineArtifact@2
inputs:
artifact: Packages_$(assetManifestOS)_$(assetManifestPlatform)
path: 'artifacts/packages'

- powershell: |
./eng/common/build.ps1 -ci -configuration $(_BuildConfig) -restore -sign -publish /p:PackageRID=$(assetManifestOS)-$(assetManifestPlatform) /p:AssetManifestOS=$(assetManifestOS) /p:PlatformName=$(assetManifestPlatform) $(_InternalBuildArgs)
displayName: Sign and Publish

############ Windows BUILD ############
- job: Build_Windows
displayName: Windows
timeoutInMinutes: 120
pool:
${{ if eq(variables['System.TeamProject'], 'public') }}:
name: $(DncEngPublicBuildPool)
demands: ImageOverride -equals windows.vs2022.amd64.open
${{ if eq(variables['System.TeamProject'], 'internal') }}:
name: $(DncEngInternalBuildPool)
demands: ImageOverride -equals windows.vs2022.amd64
strategy:
matrix:
x64:
assetManifestOS: win
assetManifestPlatform: x64
archflag: -arch x64
SkipPublishWorkloads: true
arm64:
assetManifestOS: win
assetManifestPlatform: arm64
archflag: -arch arm64
SkipPublishWorkloads: true
steps:
- script: |
.\build.cmd $(archflag) -restore -build -pack -ci -configuration $(_BuildConfig) -sign -publish /p:SkipWorkloads=true /p:PackageRID=$(assetManifestOS)-$(assetManifestPlatform) /p:AssetManifestOS=$(assetManifestOS) /p:PlatformName=$(assetManifestPlatform) /p:workloadPackagesPath=$(Build.SourcesDirectory)\artifacts\packages\$(_BuildConfig)\Shipping $(_InternalBuildArgs)
displayName: Build and Publish
- task: CopyFiles@2
displayName: Prepare job-specific intermediate artifacts subdirectory
inputs:
SourceFolder: '$(Build.SourcesDirectory)/artifacts/packages/$(_BuildConfig)'
Contents: |
Shipping/**/*
NonShipping/**/*
TargetFolder: '$(Build.StagingDirectory)/IntermediateArtifacts/windows'
CleanTargetFolder: false
Overwrite: true
- task: PublishBuildArtifacts@1
displayName: Publish intermediate artifacts
inputs:
pathToPublish: '$(Build.StagingDirectory)/IntermediateArtifacts'
artifactName: IntermediateArtifacts
artifactType: container
- script: |
rmdir /s /q binaryen node python llvm emscripten
displayName: Remove temporary artifacts

- job: Build_Workloads
displayName: Workloads
dependsOn:
- Build_Windows
timeoutInMinutes: 120
pool:
${{ if eq(variables['System.TeamProject'], 'public') }}:
name: $(DncEngPublicBuildPool)
demands: ImageOverride -equals windows.vs2022.amd64.open
${{ if eq(variables['System.TeamProject'], 'internal') }}:
name: $(DncEngInternalBuildPool)
demands: ImageOverride -equals windows.vs2022.amd64
strategy:
matrix:
x64:
assetManifestOS: win
assetManifestPlatform: x64
archflag: -arch x64
SkipPublishWorkloads: false
steps:
- task: DownloadPipelineArtifact@2
inputs:
artifact: IntermediateArtifacts
path: 'artifacts/packages'
patterns: |
IntermediateArtifacts/windows/Shipping/*.*
- script: |
.\build.cmd $(archflag) -restore -build -pack -ci -configuration $(_BuildConfig) -sign -publish /p:SkipBuild=true /p:PackageRID=$(assetManifestOS)-$(assetManifestPlatform) /p:AssetManifestFileName=win-workloads.xml /p:AssetManifestOS=$(assetManifestOS) /p:PlatformName=$(assetManifestPlatform) /p:workloadPackagesPath=$(Build.SourcesDirectory)\artifacts\packages\windows\Shipping $(_InternalBuildArgs)
displayName: Build and Publish
- task: CopyFiles@2
displayName: Prepare job-specific intermediate artifacts subdirectory
inputs:
SourceFolder: '$(Build.SourcesDirectory)/artifacts/packages/$(_BuildConfig)'
Contents: |
Shipping/**/*
NonShipping/**/*
TargetFolder: '$(Build.StagingDirectory)/IntermediateArtifacts/windows'
CleanTargetFolder: false
Overwrite: true
- task: PublishBuildArtifacts@1
displayName: Publish intermediate artifacts
inputs:
pathToPublish: '$(Build.StagingDirectory)/IntermediateArtifacts'
artifactName: IntermediateArtifacts
artifactType: container
# Upload packages wrapping msis
- task: CopyFiles@2
displayName: Prepare job-specific intermediate artifacts subdirectory
inputs:
SourceFolder: '$(Build.SourcesDirectory)/artifacts/packages/windows'
Contents: |
Shipping/**/*
NonShipping/**/*
TargetFolder: '$(Build.StagingDirectory)/IntermediateArtifacts/workloads'
CleanTargetFolder: true
# Delete wixpdb files before they are uploaded to artifacts
- task: DeleteFiles@1
displayName: Delete wixpdb's
inputs:
SourceFolder: $(Build.SourcesDirectory)/artifacts/workloadPackages
Contents: '*.wixpdb'
# Upload artifacts to be used for generating VS components
- task: PublishPipelineArtifact@1
displayName: Publish workload artifacts
inputs:
targetPath: $(Build.SourcesDirectory)/artifacts/VSSetup/$(_BuildConfig)/Insertion/
artifactName: 'Workloads'
continueOnError: true
condition: ne(variables['SkipPublishWorkloads'], 'true')
- powershell: $(CheckNuGetSizesScript)
displayName: Check NuGet sizes

############ POST BUILD ARCADE LOGIC ############
- ${{ if and(ne(variables['System.TeamProject'], 'public'), ne(variables['Build.Reason'], 'PullRequest')) }}:
- template: /eng/common/templates/post-build/post-build.yml
parameters:
publishingInfraVersion: 3
enableSourceLinkValidation: false
enableSigningValidation: false
enableSymbolValidation: false
enableNugetValidation: true
Loading