зеркало из https://github.com/dotnet/fsharp.git
717 строки
29 KiB
YAML
717 строки
29 KiB
YAML
# CI and PR triggers
|
|
trigger:
|
|
branches:
|
|
include:
|
|
- main
|
|
- dev16.1
|
|
- feature/*
|
|
- release/*
|
|
paths:
|
|
include:
|
|
- '*'
|
|
exclude:
|
|
- .github/*
|
|
- docs/
|
|
- .vscode/*
|
|
- .devcontainer/*
|
|
- tests/scripts/
|
|
- attributions.md
|
|
- CODE_OF_CONDUCT.md
|
|
- DEVGUIDE.md
|
|
- INTERNAL.md
|
|
- Language-Version-History.md
|
|
- License.txt
|
|
- README.md
|
|
- release-notes.md
|
|
- TESTGUIDE.md
|
|
|
|
pr:
|
|
branches:
|
|
include:
|
|
- main
|
|
- dev16.1
|
|
- feature/*
|
|
- release/*
|
|
paths:
|
|
include:
|
|
- '*'
|
|
exclude:
|
|
- .github/*
|
|
- docs/
|
|
- attributions.md
|
|
- CODE_OF_CONDUCT.md
|
|
- DEVGUIDE.md
|
|
- INTERNAL.md
|
|
- Language-Version-History.md
|
|
- License.txt
|
|
- README.md
|
|
- release-notes.md
|
|
- TESTGUIDE.md
|
|
|
|
variables:
|
|
- name: _TeamName
|
|
value: FSharp
|
|
- name: _BuildConfig
|
|
value: Release
|
|
- name: _PublishUsingPipelines
|
|
value: true
|
|
- name: _DotNetArtifactsCategory
|
|
value: .NETCore
|
|
- name: VisualStudioDropName
|
|
value: Products/$(System.TeamProject)/$(Build.Repository.Name)/$(Build.SourceBranchName)/$(Build.BuildNumber)
|
|
- name: Codeql.Enabled
|
|
value: true
|
|
- ${{ if and(ne(variables['System.TeamProject'], 'public'), notin(variables['Build.Reason'], 'PullRequest')) }}:
|
|
- name: _DotNetValidationArtifactsCategory
|
|
value: .NETCoreValidation
|
|
- group: DotNet-FSharp-SDLValidation-Params
|
|
- ${{ if and(eq(variables['System.TeamProject'], 'public'), eq(variables['Build.Reason'], 'PullRequest')) }}:
|
|
- name: RunningAsPullRequest
|
|
value: true
|
|
# Pick up pool provider name behavior from shared yaml template
|
|
- template: /eng/common/templates/variables/pool-providers.yml
|
|
|
|
# Variables defined in yml cannot be overridden at queue time; instead overridable variables must be defined in the web UI.
|
|
# Commenting out until something like this is supported: https://github.com/Microsoft/azure-pipelines-yaml/pull/129
|
|
#variables:
|
|
#- name: SkipTests
|
|
# defaultValue: false
|
|
|
|
stages:
|
|
- stage: build
|
|
displayName: Build
|
|
jobs:
|
|
|
|
#-------------------------------------------------------------------------------------------------------------------#
|
|
# Signed build #
|
|
#-------------------------------------------------------------------------------------------------------------------#
|
|
- ${{ if and(ne(variables['System.TeamProject'], 'public'), notin(variables['Build.Reason'], 'PullRequest')) }}:
|
|
- ${{ if eq(variables['Build.SourceBranch'], 'refs/heads/release/dev17.6') }}:
|
|
- template: /eng/common/templates/job/onelocbuild.yml
|
|
parameters:
|
|
MirrorRepo: fsharp
|
|
MirrorBranch: release/dev17.6
|
|
LclSource: lclFilesfromPackage
|
|
LclPackageId: 'LCL-JUNO-PROD-FSHARP'
|
|
- template: /eng/common/templates/jobs/jobs.yml
|
|
parameters:
|
|
enableMicrobuild: true
|
|
enablePublishBuildArtifacts: true
|
|
enablePublishTestResults: false
|
|
enablePublishBuildAssets: true
|
|
enablePublishUsingPipelines: $(_PublishUsingPipelines)
|
|
enableSourceBuild: true
|
|
enableTelemetry: true
|
|
helixRepo: dotnet/fsharp
|
|
jobs:
|
|
- job: Full_Signed
|
|
pool:
|
|
name: $(DncEngInternalBuildPool)
|
|
demands: ImageOverride -equals windows.vs2022.amd64
|
|
timeoutInMinutes: 300
|
|
variables:
|
|
- group: DotNet-Blob-Feed
|
|
- group: DotNet-Symbol-Server-Pats
|
|
- group: DotNet-DevDiv-Insertion-Workflow-Variables
|
|
- name: _SignType
|
|
value: Real
|
|
- name: _DotNetPublishToBlobFeed
|
|
value: true
|
|
steps:
|
|
- checkout: self
|
|
clean: true
|
|
- template: /eng/restore-internal-tools.yml
|
|
- script: eng\CIBuild.cmd
|
|
-configuration $(_BuildConfig)
|
|
-prepareMachine
|
|
-testAllButIntegration
|
|
-officialSkipTests $(SkipTests)
|
|
/p:SignType=$(_SignType)
|
|
/p:DotNetSignType=$(_SignType)
|
|
/p:MicroBuild_SigningEnabled=true
|
|
/p:OverridePackageSource=https://dotnetfeed.blob.core.windows.net/dotnet-core/index.json
|
|
/p:TeamName=$(_TeamName)
|
|
/p:DotNetPublishBlobFeedKey=$(dotnetfeed-storage-access-key-1)
|
|
/p:DotNetPublishBlobFeedUrl=https://dotnetfeed.blob.core.windows.net/dotnet-core/index.json
|
|
/p:DotNetPublishToBlobFeed=true
|
|
/p:DotNetPublishUsingPipelines=$(_PublishUsingPipelines)
|
|
/p:DotNetArtifactsCategory=$(_DotNetArtifactsCategory)
|
|
/p:DotNetSymbolServerTokenMsdl=$(microsoft-symbol-server-pat)
|
|
/p:DotNetSymbolServerTokenSymWeb=$(symweb-symbol-server-pat)
|
|
/p:OfficialBuildId=$(BUILD.BUILDNUMBER)
|
|
/p:PublishToSymbolServer=true
|
|
/p:VisualStudioDropName=$(VisualStudioDropName)
|
|
/p:GenerateSbom=true
|
|
- script: .\tests\EndToEndBuildTests\EndToEndBuildTests.cmd -c $(_BuildConfig)
|
|
displayName: End to end build tests
|
|
- task: PublishTestResults@2
|
|
displayName: Publish Test Results
|
|
inputs:
|
|
testResultsFormat: 'NUnit'
|
|
testResultsFiles: '*.xml'
|
|
searchFolder: '$(Build.SourcesDirectory)/artifacts/TestResults/$(_BuildConfig)'
|
|
continueOnError: true
|
|
condition: ne(variables['SkipTests'], 'true')
|
|
- task: PublishBuildArtifacts@1
|
|
displayName: Publish Test Logs
|
|
inputs:
|
|
PathtoPublish: '$(Build.SourcesDirectory)\artifacts\TestResults\$(_BuildConfig)'
|
|
ArtifactName: 'Test Logs'
|
|
publishLocation: Container
|
|
continueOnError: true
|
|
condition: ne(variables['SkipTests'], 'true')
|
|
- task: PublishBuildArtifacts@1
|
|
displayName: Publish Artifact Packages
|
|
inputs:
|
|
PathtoPublish: '$(Build.SourcesDirectory)\artifacts\packages\$(_BuildConfig)'
|
|
ArtifactName: 'Packages'
|
|
condition: succeeded()
|
|
- task: PublishBuildArtifacts@1
|
|
displayName: Publish Artifact VSSetup
|
|
inputs:
|
|
PathtoPublish: '$(Build.SourcesDirectory)\artifacts\VSSetup\$(_BuildConfig)\Insertion'
|
|
ArtifactName: 'VSSetup'
|
|
condition: succeeded()
|
|
- task: PublishBuildArtifacts@1
|
|
displayName: Publish Artifact Nightly
|
|
inputs:
|
|
PathtoPublish: '$(Build.SourcesDirectory)\artifacts\VSSetup\$(_BuildConfig)\VisualFSharpDebug.vsix'
|
|
ArtifactName: 'Nightly'
|
|
condition: succeeded()
|
|
- task: PublishBuildArtifacts@1
|
|
displayName: Publish Artifact Symbols
|
|
inputs:
|
|
PathtoPublish: '$(Build.SourcesDirectory)\artifacts\SymStore\$(_BuildConfig)'
|
|
ArtifactName: 'NativeSymbols'
|
|
condition: succeeded()
|
|
- task: ms-vseng.MicroBuildTasks.4305a8de-ba66-4d8b-b2d1-0dc4ecbbf5e8.MicroBuildUploadVstsDropFolder@1
|
|
displayName: Upload VSTS Drop
|
|
inputs:
|
|
DropName: $(VisualStudioDropName)
|
|
DropFolder: '$(Build.SourcesDirectory)\artifacts\VSSetup\$(_BuildConfig)\Insertion'
|
|
AccessToken: $(dn-bot-devdiv-drop-rw-code-rw)
|
|
condition: succeeded()
|
|
|
|
#-------------------------------------------------------------------------------------------------------------------#
|
|
# PR builds without logs publishing #
|
|
#-------------------------------------------------------------------------------------------------------------------#
|
|
- ${{ if eq(variables['System.TeamProject'], 'public') }}:
|
|
- template: /eng/common/templates/jobs/jobs.yml
|
|
parameters:
|
|
enableMicrobuild: false
|
|
enablePublishBuildArtifacts: false
|
|
enablePublishTestResults: false
|
|
enablePublishBuildAssets: false
|
|
enablePublishUsingPipelines: $(_PublishUsingPipelines)
|
|
enableSourceBuild: false
|
|
enableTelemetry: true
|
|
helixRepo: dotnet/fsharp
|
|
jobs:
|
|
# Determinism, we want to run it only in PR builds
|
|
- job: Determinism_Debug
|
|
condition: eq(variables['Build.Reason'], 'PullRequest')
|
|
variables:
|
|
- name: _SignType
|
|
value: Test
|
|
pool:
|
|
name: $(DncEngPublicBuildPool)
|
|
demands: ImageOverride -equals $(WindowsMachineQueueName)
|
|
timeoutInMinutes: 90
|
|
strategy:
|
|
maxParallel: 2
|
|
matrix:
|
|
regular:
|
|
_experimental_flag: ''
|
|
experimental_features:
|
|
_experimental_flag: 1
|
|
steps:
|
|
- checkout: self
|
|
clean: true
|
|
- task: UseDotNet@2
|
|
displayName: install SDK
|
|
inputs:
|
|
packageType: sdk
|
|
useGlobalJson: true
|
|
includePreviewVersions: false
|
|
workingDirectory: $(Build.SourcesDirectory)
|
|
installationPath: $(Build.SourcesDirectory)/.dotnet
|
|
- script: .\eng\test-determinism.cmd -configuration Debug
|
|
env:
|
|
FSHARP_EXPERIMENTAL_FEATURES: $(_experimental_flag)
|
|
displayName: Determinism tests with Debug configuration
|
|
- task: PublishPipelineArtifact@1
|
|
displayName: Publish Determinism Logs
|
|
inputs:
|
|
targetPath: '$(Build.SourcesDirectory)/artifacts/log/Debug'
|
|
artifactName: 'Determinism_Debug Attempt $(System.JobAttempt) Logs'
|
|
continueOnError: true
|
|
condition: not(succeeded())
|
|
|
|
# Check code formatting
|
|
- job: CheckCodeFormatting
|
|
pool:
|
|
vmImage: $(UbuntuMachineQueueName)
|
|
steps:
|
|
- checkout: self
|
|
clean: true
|
|
- script: dotnet --list-sdks
|
|
displayName: Report dotnet SDK versions
|
|
- task: UseDotNet@2
|
|
displayName: install SDK
|
|
inputs:
|
|
packageType: sdk
|
|
useGlobalJson: true
|
|
includePreviewVersions: true
|
|
workingDirectory: $(Build.SourcesDirectory)
|
|
installationPath: $(Agent.ToolsDirectory)/dotnet
|
|
- script: dotnet tool restore
|
|
env:
|
|
DOTNET_ROLL_FORWARD_TO_PRERELEASE: 1
|
|
displayName: Install tools
|
|
- script: dotnet fantomas . -r --check
|
|
env:
|
|
DOTNET_ROLL_FORWARD_TO_PRERELEASE: 1
|
|
displayName: Check code formatting (run 'dotnet fantomas . -r' to fix)
|
|
|
|
# Check whether package with current version has been published to nuget.org
|
|
# We will try to restore both FSharp.Core and FCS and if restore is _successful_, package version needs to be bumped.
|
|
# NOTE: This CI check should only run on the release branches.
|
|
- job: Check_Published_Package_Versions
|
|
condition: or(startsWith(variables['Build.SourceBranch'], 'refs/heads/release/'), or(startsWith(variables['System.PullRequest.SourceBranch'], 'release/dev'), startsWith(variables['System.PullRequest.TargetBranch'], 'release/dev')))
|
|
pool:
|
|
vmImage: $(UbuntuMachineQueueName)
|
|
strategy:
|
|
maxParallel: 2
|
|
matrix:
|
|
FCS:
|
|
_project: "FSharp.Compiler.Service_notshipped.fsproj"
|
|
FSCore:
|
|
_project: "FSharp.Core_notshipped.fsproj"
|
|
steps:
|
|
- checkout: self
|
|
clean: true
|
|
- task: UseDotNet@2
|
|
displayName: install SDK
|
|
inputs:
|
|
packageType: sdk
|
|
useGlobalJson: true
|
|
includePreviewVersions: true
|
|
workingDirectory: $(Build.SourcesDirectory)
|
|
installationPath: $(Agent.ToolsDirectory)/dotnet
|
|
- pwsh: ./check.ps1 -project $(_project)
|
|
workingDirectory: $(Build.SourcesDirectory)/buildtools/checkpackages
|
|
env:
|
|
DOTNET_ROLL_FORWARD_TO_PRERELEASE: 1
|
|
displayName: Check published package version
|
|
|
|
|
|
#-------------------------------------------------------------------------------------------------------------------#
|
|
# PR builds #
|
|
#-------------------------------------------------------------------------------------------------------------------#
|
|
- ${{ if eq(variables['System.TeamProject'], 'public') }}:
|
|
- template: /eng/common/templates/jobs/jobs.yml
|
|
parameters:
|
|
enableMicrobuild: true
|
|
enablePublishBuildArtifacts: true
|
|
enablePublishTestResults: false
|
|
enablePublishBuildAssets: true
|
|
enablePublishUsingPipelines: $(_PublishUsingPipelines)
|
|
enableSourceBuild: true
|
|
enableTelemetry: true
|
|
helixRepo: dotnet/fsharp
|
|
jobs:
|
|
|
|
# Windows With Compressed Metadata
|
|
- job: WindowsCompressedMetadata
|
|
variables:
|
|
- name: XUNIT_LOGS
|
|
value: $(Build.SourcesDirectory)\artifacts\TestResults\$(_configuration)
|
|
- name: __VSNeverShowWhatsNew
|
|
value: 1
|
|
pool:
|
|
# The PR build definition sets this variable:
|
|
# WindowsMachineQueueName=Windows.vs2022.amd64.open
|
|
# and there is an alternate build definition that sets this to a queue that is always scouting the
|
|
# next preview of Visual Studio.
|
|
name: $(DncEngPublicBuildPool)
|
|
demands: ImageOverride -equals $(WindowsMachineQueueName)
|
|
timeoutInMinutes: 120
|
|
strategy:
|
|
maxParallel: 5
|
|
matrix:
|
|
desktop_release:
|
|
_configuration: Release
|
|
_testKind: testDesktop
|
|
coreclr_release:
|
|
_configuration: Release
|
|
_testKind: testCoreclr
|
|
fsharpqa_release:
|
|
_configuration: Release
|
|
_testKind: testFSharpQA
|
|
vs_release:
|
|
_configuration: Release
|
|
_testKind: testVs
|
|
${{ if eq(variables['Build.Reason'], 'PullRequest') }}:
|
|
inttests_release:
|
|
_configuration: Release
|
|
_testKind: testIntegration
|
|
steps:
|
|
- checkout: self
|
|
clean: true
|
|
|
|
- powershell: eng\SetupVSHive.ps1
|
|
displayName: Setup VS Hive
|
|
condition: or(eq(variables['_testKind'], 'testVs'), eq(variables['_testKind'], 'testIntegration'))
|
|
|
|
# yes, this is miserable, but - https://github.com/dotnet/arcade/issues/13239
|
|
- script: eng\CIBuild.cmd -compressallmetadata -configuration $(_configuration) -$(_testKind)
|
|
displayName: Build / Test
|
|
condition: ne(variables['_testKind'], 'testIntegration')
|
|
- script: eng\CIBuild.cmd -compressallmetadata -configuration $(_configuration) -$(_testKind)
|
|
displayName: Build / Integration Test
|
|
continueOnError: true
|
|
condition: eq(variables['_testKind'], 'testIntegration')
|
|
|
|
- task: PublishTestResults@2
|
|
displayName: Publish Test Results
|
|
inputs:
|
|
testResultsFormat: 'NUnit'
|
|
testResultsFiles: '*.xml'
|
|
searchFolder: '$(Build.SourcesDirectory)/artifacts/TestResults/$(_configuration)'
|
|
continueOnError: true
|
|
condition: ne(variables['_testKind'], 'testFSharpQA')
|
|
- task: PublishBuildArtifacts@1
|
|
displayName: Publish Tests BinLog
|
|
condition: always()
|
|
continueOnError: true
|
|
inputs:
|
|
PathToPublish: '$(Build.SourcesDirectory)\artifacts\log/$(_configuration)\Build.VisualFSharp.sln.binlog'
|
|
ArtifactName: 'Windows $(_configuration) $(_testKind) test binlogs'
|
|
ArtifactType: Container
|
|
parallel: true
|
|
- task: PublishBuildArtifacts@1
|
|
displayName: Publish Test Logs
|
|
inputs:
|
|
PathtoPublish: '$(Build.SourcesDirectory)\artifacts\TestResults\$(_configuration)'
|
|
ArtifactName: 'Windows $(_configuration) $(_testKind) test logs'
|
|
publishLocation: Container
|
|
continueOnError: true
|
|
condition: always()
|
|
- script: dotnet build $(Build.SourcesDirectory)/eng/DumpPackageRoot/DumpPackageRoot.csproj
|
|
displayName: Dump NuGet cache contents
|
|
condition: failed()
|
|
- task: PublishBuildArtifacts@1
|
|
displayName: Publish NuGet cache contents
|
|
inputs:
|
|
PathtoPublish: '$(Build.SourcesDirectory)\artifacts\NugetPackageRootContents'
|
|
ArtifactName: 'NuGetPackageContents Windows $(_testKind)'
|
|
publishLocation: Container
|
|
continueOnError: true
|
|
condition: failed()
|
|
|
|
# Mock official build
|
|
- job: MockOfficial
|
|
pool:
|
|
name: $(DncEngPublicBuildPool)
|
|
demands: ImageOverride -equals $(WindowsMachineQueueName)
|
|
steps:
|
|
- checkout: self
|
|
clean: true
|
|
- pwsh: .\eng\MockBuild.ps1
|
|
displayName: Build with OfficialBuildId
|
|
|
|
# Linux
|
|
- job: Linux
|
|
pool:
|
|
vmImage: $(UbuntuMachineQueueName)
|
|
variables:
|
|
- name: _SignType
|
|
value: Test
|
|
steps:
|
|
- checkout: self
|
|
clean: true
|
|
- script: ./eng/cibuild.sh --configuration $(_BuildConfig) --testcoreclr
|
|
displayName: Build / Test
|
|
- task: PublishTestResults@2
|
|
displayName: Publish Test Results
|
|
inputs:
|
|
testResultsFormat: 'NUnit'
|
|
testResultsFiles: '*.xml'
|
|
searchFolder: '$(Build.SourcesDirectory)/artifacts/TestResults/$(_BuildConfig)'
|
|
continueOnError: true
|
|
condition: always()
|
|
- task: PublishBuildArtifacts@1
|
|
displayName: Publish Test Logs
|
|
inputs:
|
|
PathtoPublish: '$(Build.SourcesDirectory)/artifacts/TestResults/$(_BuildConfig)'
|
|
ArtifactName: 'Linux $(_BuildConfig) test logs'
|
|
publishLocation: Container
|
|
continueOnError: true
|
|
condition: failed()
|
|
- script: dotnet build $(Build.SourcesDirectory)/eng/DumpPackageRoot/DumpPackageRoot.csproj
|
|
displayName: Dump NuGet cache contents
|
|
condition: failed()
|
|
- task: PublishBuildArtifacts@1
|
|
displayName: Publish NuGet cache contents
|
|
inputs:
|
|
PathtoPublish: '$(Build.SourcesDirectory)/artifacts/NugetPackageRootContents'
|
|
ArtifactName: 'NuGetPackageContents Linux'
|
|
publishLocation: Container
|
|
continueOnError: true
|
|
condition: failed()
|
|
|
|
# MacOS
|
|
- job: MacOS
|
|
pool:
|
|
vmImage: macos-11
|
|
variables:
|
|
- name: _SignType
|
|
value: Test
|
|
steps:
|
|
- checkout: self
|
|
clean: true
|
|
- script: ./eng/cibuild.sh --configuration $(_BuildConfig) --testcoreclr
|
|
env:
|
|
COMPlus_DefaultStackSize: 1000000
|
|
displayName: Build / Test
|
|
- task: PublishTestResults@2
|
|
displayName: Publish Test Results
|
|
inputs:
|
|
testResultsFormat: 'NUnit'
|
|
testResultsFiles: '*.xml'
|
|
searchFolder: '$(Build.SourcesDirectory)/artifacts/TestResults/$(_BuildConfig)'
|
|
continueOnError: true
|
|
condition: always()
|
|
- task: PublishBuildArtifacts@1
|
|
displayName: Publish Test Logs
|
|
inputs:
|
|
PathtoPublish: '$(Build.SourcesDirectory)/artifacts/TestResults/$(_BuildConfig)'
|
|
ArtifactName: 'MacOS $(_BuildConfig) test logs'
|
|
publishLocation: Container
|
|
continueOnError: true
|
|
condition: failed()
|
|
- script: dotnet build $(Build.SourcesDirectory)/eng/DumpPackageRoot/DumpPackageRoot.csproj
|
|
displayName: Dump NuGet cache contents
|
|
condition: failed()
|
|
- task: PublishBuildArtifacts@1
|
|
displayName: Publish NuGet cache contents
|
|
inputs:
|
|
PathtoPublish: '$(Build.SourcesDirectory)/artifacts/NugetPackageRootContents'
|
|
ArtifactName: 'NuGetPackageContents Mac'
|
|
publishLocation: Container
|
|
continueOnError: true
|
|
condition: failed()
|
|
|
|
# End to end build
|
|
- job: EndToEndBuildTests
|
|
pool:
|
|
name: $(DncEngPublicBuildPool)
|
|
demands: ImageOverride -equals $(WindowsMachineQueueName)
|
|
strategy:
|
|
maxParallel: 2
|
|
matrix:
|
|
regular:
|
|
_experimental_flag: ''
|
|
experimental_features:
|
|
_experimental_flag: 1
|
|
steps:
|
|
- checkout: self
|
|
clean: true
|
|
- script: .\Build.cmd -c Release -pack
|
|
env:
|
|
FSHARP_EXPERIMENTAL_FEATURES: $(_experimental_flag)
|
|
- script: .\tests\EndToEndBuildTests\EndToEndBuildTests.cmd -c Release
|
|
env:
|
|
FSHARP_EXPERIMENTAL_FEATURES: $(_experimental_flag)
|
|
displayName: End to end build tests
|
|
|
|
# Up-to-date - disabled due to it being flaky
|
|
#- job: UpToDate_Windows
|
|
# pool:
|
|
# vmImage: windows-latest
|
|
# steps:
|
|
# - checkout: self
|
|
# clean: true
|
|
# - task: PowerShell@2
|
|
# displayName: Run up-to-date build check
|
|
# inputs:
|
|
# filePath: eng\tests\UpToDate.ps1
|
|
# arguments: -configuration $(_BuildConfig) -ci -binaryLog
|
|
|
|
# Run Build with Fsharp Experimental Features
|
|
# Possible change: --times:$(Build.SourcesDirectory)/artifacts/log/Release/compiler_timing.csv
|
|
|
|
# Plain FCS build Windows
|
|
- job: Plain_Build_Windows
|
|
pool:
|
|
name: $(DncEngPublicBuildPool)
|
|
demands: ImageOverride -equals $(WindowsMachineQueueName)
|
|
variables:
|
|
- name: _BuildConfig
|
|
value: Debug
|
|
steps:
|
|
- checkout: self
|
|
clean: true
|
|
- script: dotnet --list-sdks
|
|
displayName: Report dotnet SDK versions
|
|
- task: UseDotNet@2
|
|
displayName: install SDK
|
|
inputs:
|
|
packageType: sdk
|
|
useGlobalJson: true
|
|
includePreviewVersions: true
|
|
workingDirectory: $(Build.SourcesDirectory)
|
|
installationPath: $(Agent.ToolsDirectory)/dotnet
|
|
- script: dotnet build .\FSharp.Compiler.Service.sln /bl:\"artifacts/log/$(_BuildConfig)/ServiceRegularBuild.binlog\"
|
|
workingDirectory: $(Build.SourcesDirectory)
|
|
displayName: Regular rebuild of FSharp.Compiler.Service.sln
|
|
continueOnError: true
|
|
condition: always()
|
|
|
|
# Plain FCS build Linux
|
|
- job: Plain_Build_Linux
|
|
pool:
|
|
vmImage: $(UbuntuMachineQueueName)
|
|
variables:
|
|
- name: _BuildConfig
|
|
value: Debug
|
|
steps:
|
|
- checkout: self
|
|
clean: true
|
|
- script: dotnet --list-sdks
|
|
displayName: Report dotnet SDK versions
|
|
- task: UseDotNet@2
|
|
displayName: install SDK
|
|
inputs:
|
|
packageType: sdk
|
|
useGlobalJson: true
|
|
includePreviewVersions: true
|
|
workingDirectory: $(Build.SourcesDirectory)
|
|
installationPath: $(Agent.ToolsDirectory)/dotnet
|
|
- script: dotnet build ./FSharp.Compiler.Service.sln /bl:\"artifacts/log/$(_BuildConfig)/ServiceRegularBuild.binlog\"
|
|
workingDirectory: $(Build.SourcesDirectory)
|
|
displayName: Regular rebuild of FSharp.Compiler.Service.sln
|
|
continueOnError: true
|
|
condition: always()
|
|
|
|
# Plain FCS build Mac
|
|
- job: Plain_Build_MacOS
|
|
pool:
|
|
vmImage: macos-11
|
|
variables:
|
|
- name: _BuildConfig
|
|
value: Debug
|
|
steps:
|
|
- checkout: self
|
|
clean: true
|
|
- script: dotnet --list-sdks
|
|
displayName: Report dotnet SDK versions
|
|
- task: UseDotNet@2
|
|
displayName: install SDK
|
|
inputs:
|
|
packageType: sdk
|
|
useGlobalJson: true
|
|
includePreviewVersions: true
|
|
workingDirectory: $(Build.SourcesDirectory)
|
|
installationPath: $(Agent.ToolsDirectory)/dotnet
|
|
- script: dotnet build ./FSharp.Compiler.Service.sln /bl:\"artifacts/log/$(_BuildConfig)/ServiceRegularBuild.binlog\"
|
|
workingDirectory: $(Build.SourcesDirectory)
|
|
displayName: Regular rebuild of FSharp.Compiler.Service.sln
|
|
continueOnError: true
|
|
condition: always()
|
|
|
|
# Test trimming on Windows
|
|
- job: Build_And_Test_Trimming_Windows
|
|
pool:
|
|
name: $(DncEngPublicBuildPool)
|
|
demands: ImageOverride -equals $(WindowsMachineQueueName)
|
|
strategy:
|
|
maxParallel: 2
|
|
matrix:
|
|
compressed_metadata:
|
|
_kind: "-compressAllMetadata"
|
|
classic_metadata:
|
|
_kind: ""
|
|
variables:
|
|
- name: _BuildConfig
|
|
value: Release
|
|
steps:
|
|
- checkout: self
|
|
clean: true
|
|
- task: UseDotNet@2
|
|
displayName: install SDK
|
|
inputs:
|
|
packageType: sdk
|
|
useGlobalJson: true
|
|
includePreviewVersions: true
|
|
workingDirectory: $(Build.SourcesDirectory)
|
|
installationPath: $(Agent.ToolsDirectory)/dotnet
|
|
- script: dotnet --list-sdks
|
|
displayName: Report dotnet SDK versions
|
|
- script: .\Build.cmd $(_kind) -pack -c $(_BuildConfig)
|
|
displayName: Initial build and prepare packages.
|
|
- script: $(Build.SourcesDirectory)/tests/AheadOfTime/Trimming/check.cmd
|
|
displayName: Build, trim, publish and check the state of the trimmed app.
|
|
workingDirectory: $(Build.SourcesDirectory)/tests/AheadOfTime/Trimming
|
|
- task: PublishPipelineArtifact@1
|
|
displayName: Publish Trim Tests Logs
|
|
inputs:
|
|
targetPath: './artifacts/log/Release/AheadOfTime/Trimming/'
|
|
artifactName: 'Trim Test Logs Attempt $(System.JobAttempt) Logs $(_kind)'
|
|
continueOnError: true
|
|
condition: always()
|
|
|
|
# Arcade-powered source build
|
|
# turned off until https://github.com/dotnet/source-build/issues/1795 is fixed
|
|
# - template: /eng/common/templates/jobs/jobs.yml
|
|
# parameters:
|
|
# enablePublishUsingPipelines: true
|
|
# enablePublishBuildArtifacts: true
|
|
# enablePublishBuildAssets: true
|
|
# artifacts:
|
|
# publish:
|
|
# artifacts: true
|
|
# manifests: true
|
|
# runSourceBuild: true
|
|
# sourceBuildParameters:
|
|
# includeDefaultManagedPlatform: true
|
|
|
|
#---------------------------------------------------------------------------------------------------------------------#
|
|
# Post Build #
|
|
#---------------------------------------------------------------------------------------------------------------------#
|
|
- ${{ if and(ne(variables['System.TeamProject'], 'public'), notin(variables['Build.Reason'], 'PullRequest')) }}:
|
|
- template: eng/common/templates/post-build/post-build.yml
|
|
parameters:
|
|
publishingInfraVersion: 3
|
|
# Symbol validation is not entirely reliable as of yet, so should be turned off until https://github.com/dotnet/arcade/issues/2871 is resolved.
|
|
enableSymbolValidation: false
|
|
# SourceLink improperly looks for generated files. See https://github.com/dotnet/arcade/issues/3069
|
|
enableSourceLinkValidation: false
|
|
# Enable SDL validation, passing through values from the 'DotNet-FSharp-SDLValidation-Params' group.
|
|
SDLValidationParameters:
|
|
enable: true
|
|
params: >-
|
|
-SourceToolsList @("policheck","credscan")
|
|
-TsaInstanceURL $(_TsaInstanceURL)
|
|
-TsaProjectName $(_TsaProjectName)
|
|
-TsaNotificationEmail $(_TsaNotificationEmail)
|
|
-TsaCodebaseAdmin $(_TsaCodebaseAdmin)
|
|
-TsaBugAreaPath $(_TsaBugAreaPath)
|
|
-TsaIterationPath $(_TsaIterationPath)
|
|
-TsaRepositoryName "FSharp"
|
|
-TsaCodebaseName "FSharp-GitHub"
|
|
-TsaPublish $True
|
|
-PoliCheckAdditionalRunConfigParams @("UserExclusionPath < $(Build.SourcesDirectory)/eng/policheck_exclusions.xml")
|
|
|
|
#---------------------------------------------------------------------------------------------------------------------#
|
|
# VS Insertion #
|
|
#---------------------------------------------------------------------------------------------------------------------#
|
|
- ${{ if and(ne(variables['System.TeamProject'], 'public'), notin(variables['Build.Reason'], 'PullRequest')) }}:
|
|
- template: eng/release/insert-into-vs.yml
|
|
parameters:
|
|
componentBranchName: refs/heads/release/dev17.6
|
|
insertTargetBranch: rel/d17.6
|
|
insertTeamEmail: fsharpteam@microsoft.com
|
|
insertTeamName: 'F#'
|
|
completeInsertion: 'auto'
|