trigger: batch: true branches: include: - master - release/* - mono-* pr: branches: include: - master - release/* - mono-* - feature/* variables: - name: officialBuild value: ${{ and(ne(variables['System.TeamProject'], 'public'), notin(variables['Build.Reason'], 'PullRequest')) }} - name: _BuildConfig value: Release - name: _BuildArgs value: - name: _DotNetArtifactsCategory value: .NETCore - ${{ if eq(variables.officialBuild, 'true') }}: - name: _BuildArgs value: ${{ format('{0} /p:OfficialBuildId=$(Build.BuildNumber) /p:Test=false /p:IntegrationTest=false', variables['_BuildArgs']) }} # Provide HelixApiAccessToken for telemetry - group: DotNet-HelixApi-Access stages: - stage: build displayName: Build jobs: - template: /eng/common/templates/jobs/jobs.yml parameters: enableTelemetry: true # send helix telemetry helixRepo: mono/linker enablePublishUsingPipelines: true enablePublishBuildArtifacts: true # publish build logs to pipeline storage enablePublishTestResults: true enablePublishBuildAssets: true # generate build manifests and publish to BAR in internal builds enableMicrobuild: true # only affects internal builds jobs: - job: Windows_NT pool: ${{ if eq(variables.officialBuild, 'false') }}: name: Hosted VS2017 ${{ if eq(variables.officialBuild, 'true') }}: name: NetCoreInternal-Pool queue: BuildPool.Windows.10.Amd64.VS2017 variables: - ${{ if eq(variables.officialBuild, 'false') }}: - _SignType: test - _PublishArgs: '' - ${{ if eq(variables.officialBuild, 'true') }}: - group: DotNet-Blob-Feed - _TeamName: .NET # required by microbuild install step - _SignType: real # used in the arcade templates that install microbuild. - _DotNetPublishToBlobFeed: true # used by arcade templates that gather build asset manifests - _PublishArgs: /p:DotNetPublishToBlobFeed=$(_DotNetPublishToBlobFeed) /p:DotNetPublishBlobFeedUrl=https://dotnetfeed.blob.core.windows.net/dotnet-core/index.json /p:DotNetPublishBlobFeedKey=$(dotnetfeed-storage-access-key-1) /p:DotNetArtifactsCategory=$(_DotNetArtifactsCategory) /p:DotNetPublishUsingPipelines=true - DotNetSignType: ${{ format('{0}', variables._SignType) }} # DotNetSignType defaults to real if not specified steps: - checkout: self submodules: true - script: eng\common\cibuild.cmd -projects $(Build.SourcesDirectory)\illink.sln -configuration $(_BuildConfig) $(_BuildArgs) $(_PublishArgs) -integrationTest -warnAsError "$false" -nodeReuse "$false" # https://github.com/Microsoft/vstest/issues/1503 env: # https://github.com/Microsoft/vstest/issues/1503#issuecomment-410732193 MSBUILDENSURESTDOUTFORTASKPROCESSES: 1 ${{ if eq(variables.officialBuild, 'false') }}: displayName: Build illink.sln $(_BuildConfig) ${{ if eq(variables.officialBuild, 'true') }}: displayName: Build and publish illink.sln $(_BuildConfig) - ${{ if eq(variables.officialBuild, 'false') }}: - job: Linux condition: eq(variables.officialBuild, 'false') pool: name: Hosted Ubuntu 1604 steps: - checkout: self submodules: true - script: eng/common/cibuild.sh --projects $(Build.SourcesDirectory)/illink.sln --configuration $(_BuildConfig) $(_BuildArgs) --integrationTest --warnAsError false --nodeReuse false # https://github.com/Microsoft/vstest/issues/1503 env: # https://github.com/Microsoft/vstest/issues/1503#issuecomment-410732193 MSBUILDENSURESTDOUTFORTASKPROCESSES: 1 displayName: Build illink.sln $(_BuildConfig) - ${{ if eq(variables.officialBuild, 'false') }}: - job: macOS pool: name: Hosted MacOS steps: - checkout: self submodules: true - script: eng/common/cibuild.sh --projects $(Build.SourcesDirectory)/illink.sln --configuration $(_BuildConfig) $(_BuildArgs) --integrationTest --warnAsError false --nodeReuse false # https://github.com/Microsoft/vstest/issues/1503 env: # https://github.com/Microsoft/vstest/issues/1503#issuecomment-410732193 MSBUILDENSURESTDOUTFORTASKPROCESSES: 1 displayName: Build illink.sln $(_BuildConfig) - ${{ if eq(variables.officialBuild, 'false') }}: - job: Lint pool: name: Hosted Ubuntu 1604 steps: - checkout: self submodules: true - task: DotNetCoreCLI@2 displayName: 'Restore dotnet tools' inputs: command: 'custom' custom: 'tool' arguments: 'restore' - task: DotNetCoreCLI@2 displayName: 'Lint ILLinker' inputs: command: 'custom' custom: 'tool' arguments: 'run dotnet-format --dry-run --check --verbosity diagnostic -f . --exclude src/analyzer,src/tuner,external' - ${{ if eq(variables.officialBuild, 'false') }}: - job: Linux_Mono pool: name: Hosted Ubuntu 1604 steps: - checkout: self submodules: true - script: | mono --version make -C monobuild CONFIGURATION=$(_BuildConfig) displayName: Build and test - task: PublishTestResults@2 inputs: testResultsFormat: 'NUnit' testResultsFiles: 'test/Mono.Linker.Tests/TestResults.xml' # Post-Build Arcade logic - ${{ if eq(variables.officialBuild, 'true') }}: - template: /eng/common/templates/post-build/post-build.yml