SkiaSharp/scripts/azure-pipelines.yml

560 строки
22 KiB
YAML
Исходник Обычный вид История

trigger:
- master
- refs/tags/*
variables:
2019-12-22 23:18:14 +03:00
SKIASHARP_VERSION: 1.68.2
FEATURE_NAME_PREFIX: 'feature/'
VERBOSITY: normal
GIT_SHA: $(Build.SourceVersion)
GIT_BRANCH_NAME: $(Build.SourceBranchName)
BUILD_NUMBER: $[counter(format('{0}_{1}', variables['SKIASHARP_VERSION'], variables['Build.SourceBranch']), 1)]
FEATURE_NAME: ''
PREVIEW_LABEL: 'preview'
TIZEN_LINUX_PACKAGES: libxcb-xfixes0 libxcb-render-util0 libwebkitgtk-1.0-0 libxcb-image0 acl libsdl1.2debian libv4l-0 libxcb-randr0 libxcb-shape0 libxcb-icccm4 libsm6 gettext rpm2cpio cpio bridge-utils openvpn
MANAGED_LINUX_PACKAGES: ttf-ancient-fonts
MONO_VERSION_MACOS: 6_4_0
MONO_VERSION_LINUX: stable-xenial/snapshots/6.4.0
XCODE_VERSION: 11.3
DOTNET_VERSION: 3.0.x
CONFIGURATION: 'Release'
VM_IMAGE_WINDOWS_NATIVE: Hosted VS2017
VM_IMAGE_WINDOWS: Hosted Windows 2019 with VS2019
VM_IMAGE_MAC: Hosted macOS
VM_IMAGE_LINUX: Hosted Ubuntu 1604
DOTNET_SKIP_FIRST_TIME_EXPERIENCE: true
# # To speed up builds when debugging DevOps
# DOWNLOAD_EXTERNALS: ''
resources:
repositories:
- repository: xamarin-templates
type: github
name: xamarin/yaml-templates
endpoint: xamarin
stages:
- stage: prepare
displayName: Prepare Build
jobs:
- job: prepare # Prepare Build
displayName: Prepare Build
pool:
name: $(VM_IMAGE_LINUX)
steps:
- checkout: none
- template: azure-templates-variables.yml
parameters:
updateBuild: true
- stage: native
displayName: Build Native
dependsOn: prepare
jobs:
# NATIVE JOBS - WINDOWS
- template: azure-templates-bootstrapper.yml # Build Native Android|x86 (Windows)
parameters:
name: native_android_x86_windows
displayName: Build Native Android|x86 (Windows)
vmImage: $(VM_IMAGE_WINDOWS_NATIVE)
target: externals-android
additionalArgs: --buildarch=x86
- template: azure-templates-bootstrapper.yml # Build Native Android|x64 (Windows)
parameters:
name: native_android_x64_windows
displayName: Build Native Android|x64 (Windows)
vmImage: $(VM_IMAGE_WINDOWS_NATIVE)
target: externals-android
additionalArgs: --buildarch=x64
- template: azure-templates-bootstrapper.yml # Build Native Android|arm (Windows)
parameters:
name: native_android_arm_windows
displayName: Build Native Android|arm (Windows)
vmImage: $(VM_IMAGE_WINDOWS_NATIVE)
target: externals-android
additionalArgs: --buildarch=arm
- template: azure-templates-bootstrapper.yml # Build Native Android|arm64 (Windows)
parameters:
name: native_android_arm64_windows
displayName: Build Native Android|arm64 (Windows)
vmImage: $(VM_IMAGE_WINDOWS_NATIVE)
target: externals-android
additionalArgs: --buildarch=arm64
- template: azure-templates-bootstrapper.yml # Build Native Tizen (Windows)
parameters:
name: native_tizen_windows
displayName: Build Native Tizen (Windows)
vmImage: $(VM_IMAGE_WINDOWS_NATIVE)
target: externals-tizen
condition: false # TODO: TIZEN INSTALL BUGS
- template: azure-templates-bootstrapper.yml # Build Native UWP|x86 (Windows)
parameters:
name: native_uwp_x86_windows
displayName: Build Native UWP|x86 (Windows)
vmImage: $(VM_IMAGE_WINDOWS_NATIVE)
target: externals-uwp
additionalArgs: --buildarch=x86
- template: azure-templates-bootstrapper.yml # Build Native UWP|x64 (Windows)
parameters:
name: native_uwp_x64_windows
displayName: Build Native UWP|x64 (Windows)
vmImage: $(VM_IMAGE_WINDOWS_NATIVE)
target: externals-uwp
additionalArgs: --buildarch=x64
- template: azure-templates-bootstrapper.yml # Build Native UWP|arm (Windows)
parameters:
name: native_uwp_arm_windows
displayName: Build Native UWP|arm (Windows)
vmImage: $(VM_IMAGE_WINDOWS_NATIVE)
target: externals-uwp
additionalArgs: --buildarch=arm
- template: azure-templates-bootstrapper.yml # Build Native UWP|arm64 (Windows)
parameters:
name: native_uwp_arm64_windows
displayName: Build Native UWP|arm64 (Windows)
vmImage: $(VM_IMAGE_WINDOWS_NATIVE)
target: externals-uwp
additionalArgs: --buildarch=arm64
- template: azure-templates-bootstrapper.yml # Build Native Win32|x86 (Windows)
parameters:
name: native_win32_x86_windows
displayName: Build Native Win32|x86 (Windows)
vmImage: $(VM_IMAGE_WINDOWS_NATIVE)
target: externals-windows
additionalArgs: --buildarch=x86
- template: azure-templates-bootstrapper.yml # Build Native Win32|x64 (Windows)
parameters:
name: native_win32_x64_windows
displayName: Build Native Win32|x64 (Windows)
vmImage: $(VM_IMAGE_WINDOWS_NATIVE)
target: externals-windows
additionalArgs: --buildarch=x64
- template: azure-templates-bootstrapper.yml # Build Native NanoServer|x64 (Windows)
parameters:
name: native_win32_x64_nanoserver_windows
displayName: Build Native NanoServer|x64 (Windows)
vmImage: $(VM_IMAGE_WINDOWS_NATIVE)
target: externals-nanoserver
additionalArgs: --buildarch=x64
preBuildSteps:
- pwsh: dotnet tool install -g nano-api-scan
displayName: Install nano-api-scan
# NATIVE JOBS - MAC
- template: azure-templates-bootstrapper.yml # Build Native Android|x86 (macOS)
parameters:
name: native_android_x86_macos
displayName: Build Native Android|x86 (macOS)
vmImage: $(VM_IMAGE_MAC)
target: externals-android
additionalArgs: --buildarch=x86
- template: azure-templates-bootstrapper.yml # Build Native Android|x64 (macOS)
parameters:
name: native_android_x64_macos
displayName: Build Native Android|x64 (macOS)
vmImage: $(VM_IMAGE_MAC)
target: externals-android
additionalArgs: --buildarch=x64
- template: azure-templates-bootstrapper.yml # Build Native Android|arm (macOS)
parameters:
name: native_android_arm_macos
displayName: Build Native Android|arm (macOS)
vmImage: $(VM_IMAGE_MAC)
target: externals-android
additionalArgs: --buildarch=arm
- template: azure-templates-bootstrapper.yml # Build Native Android|arm64 (macOS)
parameters:
name: native_android_arm64_macos
displayName: Build Native Android|arm64 (macOS)
vmImage: $(VM_IMAGE_MAC)
target: externals-android
additionalArgs: --buildarch=arm64
- template: azure-templates-bootstrapper.yml # Build Native iOS (macOS)
parameters:
name: native_ios_macos
displayName: Build Native iOS (macOS)
vmImage: $(VM_IMAGE_MAC)
target: externals-ios
- template: azure-templates-bootstrapper.yml # Build Native macOS (macOS)
parameters:
name: native_macos_macos
displayName: Build Native macOS (macOS)
vmImage: $(VM_IMAGE_MAC)
target: externals-macos
- template: azure-templates-bootstrapper.yml # Build Native Tizen (macOS)
parameters:
name: native_tizen_macos
displayName: Build Native Tizen (macOS)
vmImage: $(VM_IMAGE_MAC)
target: externals-tizen
condition: false # TODO: TIZEN INSTALL BUGS
- template: azure-templates-bootstrapper.yml # Build Native tvOS (macOS)
parameters:
name: native_tvos_macos
displayName: Build Native tvOS (macOS)
vmImage: $(VM_IMAGE_MAC)
target: externals-tvos
- template: azure-templates-bootstrapper.yml # Build Native watchOS (macOS)
parameters:
name: native_watchos_macos
displayName: Build Native watchOS (macOS)
vmImage: $(VM_IMAGE_MAC)
target: externals-watchos
# NATIVE JOBS - LINUX
- template: azure-templates-bootstrapper.yml # Build Native Linux (Linux)
parameters:
name: native_linux_linux
displayName: Build Native Linux (Linux)
vmImage: $(VM_IMAGE_LINUX)
docker: scripts/Docker/ubuntu16/amd64
target: externals-linux
additionalArgs: --buildarch=x64
- template: azure-templates-bootstrapper.yml # Build Native Linux [No Dependencies] (Linux)
parameters:
name: native_linux_nodependencies_linux
displayName: Build Native Linux [No Dependencies] (Linux)
vmImage: $(VM_IMAGE_LINUX)
docker: scripts/Docker/ubuntu16/amd64
target: externals-linuxnodeps
additionalArgs: --buildarch=x64
- template: azure-templates-bootstrapper.yml # Build Native Tizen (Linux)
parameters:
name: native_tizen_linux
displayName: Build Native Tizen (Linux)
vmImage: $(VM_IMAGE_LINUX)
packages: $(TIZEN_LINUX_PACKAGES)
target: externals-tizen
- stage: managed
displayName: Build Managed
dependsOn: native
jobs:
- template: azure-templates-bootstrapper.yml # Build Managed (Windows)
parameters:
name: managed_windows
displayName: Build Managed (Windows)
vmImage: $(VM_IMAGE_WINDOWS)
target: libs
additionalArgs: --exclusive
requiredArtifacts:
- native_android_x86_windows
- native_android_x64_windows
- native_android_arm_windows
- native_android_arm64_windows
# - native_tizen_windows
- native_tizen_linux
- native_uwp_x86_windows
- native_uwp_x64_windows
- native_uwp_arm_windows
- native_uwp_arm64_windows
- native_win32_x86_windows
- native_win32_x64_windows
- native_win32_x64_nanoserver_windows
preBuildSteps:
- pwsh: |
$uri = 'https://go.microsoft.com/fwlink/p/?LinkId=619296'
.\scripts\download-file.ps1 -Uri $uri -OutFile sdksetup.exe
.\sdksetup.exe /norestart /quiet | Out-Null
displayName: Install the Windows 10 SDK 10.0.10240
- template: azure-templates-bootstrapper.yml # Build Managed (macOS)
parameters:
name: managed_macos
displayName: Build Managed (macOS)
vmImage: $(VM_IMAGE_MAC)
target: libs
additionalArgs: --exclusive
requiredArtifacts:
- native_android_x86_macos
- native_android_x64_macos
- native_android_arm_macos
- native_android_arm64_macos
- native_ios_macos
- native_macos_macos
# - native_tizen_macos
- native_tizen_linux
- native_tvos_macos
- native_watchos_macos
- template: azure-templates-bootstrapper.yml # Build Managed (Linux)
parameters:
name: managed_linux
displayName: Build Managed (Linux)
vmImage: $(VM_IMAGE_LINUX)
packages: $(MANAGED_LINUX_PACKAGES)
retryCount: 2
target: libs
additionalArgs: --exclusive
requiredArtifacts:
- native_linux_linux
- native_linux_nodependencies_linux
- native_tizen_linux
- stage: package
displayName: Package NuGets
dependsOn: managed
jobs:
- template: azure-templates-bootstrapper.yml # Package NuGets
parameters:
name: package_windows
displayName: Package NuGets
vmImage: $(VM_IMAGE_WINDOWS)
target: nuget
additionalArgs: --packall=true --exclusive
shouldPublish: false
requiredArtifacts:
- managed_linux
- managed_macos
- managed_windows
postBuildSteps:
- task: PublishBuildArtifacts@1
displayName: Publish the native artifacts
inputs:
artifactName: native
pathToPublish: 'output/native'
- task: PublishBuildArtifacts@1
displayName: Publish the nuget artifacts
inputs:
artifactName: nuget
pathToPublish: 'output/nugets'
2019-02-15 00:04:20 +03:00
- ${{ if eq(variables['System.TeamProject'], 'devdiv') }}:
- stage: signing
displayName: Sign NuGets
dependsOn: package
condition: eq(variables['System.TeamProject'], 'devdiv')
jobs:
- template: sign-artifacts/jobs/v1.yml@xamarin-templates
parameters:
additionalConditions: eq(variables['Build.SourceBranch'], 'refs/heads/master')
- stage: tests
displayName: Run Tests
dependsOn: native
jobs:
- template: azure-templates-bootstrapper.yml # Tests (Windows)
parameters:
name: tests_windows
displayName: Tests (Windows)
vmImage: $(VM_IMAGE_WINDOWS)
retryCount: 3
target: tests
additionalArgs: --skipExternals="all"
shouldPublish: false
requiredArtifacts:
- native_win32_x86_windows
- native_win32_x64_windows
- native_win32_x64_nanoserver_windows
postBuildSteps:
- task: PublishTestResults@2
displayName: Publish the .NET Framework test results
condition: always()
inputs:
testResultsFormat: xUnit
testResultsFiles: 'tests/SkiaSharp.Desktop.Tests/**/TestResults.xml'
testRunTitle: 'Windows .NET Framework Tests'
- task: PublishTestResults@2
displayName: Publish the .NET Core test results
condition: always()
inputs:
testResultsFormat: xUnit
testResultsFiles: 'tests/SkiaSharp.NetCore.Tests/**/TestResults.xml'
testRunTitle: 'Windows .NET Core Tests'
- template: azure-templates-bootstrapper.yml # Tests (macOS)
parameters:
name: tests_macos
displayName: Tests (macOS)
vmImage: $(VM_IMAGE_MAC)
retryCount: 3
target: tests
additionalArgs: --skipExternals="all"
shouldPublish: false
requiredArtifacts:
- native_macos_macos
postBuildSteps:
- task: PublishTestResults@2
displayName: Publish the Mono test results
condition: always()
inputs:
testResultsFormat: xUnit
testResultsFiles: 'tests/SkiaSharp.Desktop.Tests/**/TestResults.xml'
testRunTitle: 'macOS Mono Tests'
- task: PublishTestResults@2
displayName: Publish the .NET Core test results
condition: always()
inputs:
testResultsFormat: xUnit
testResultsFiles: 'tests/SkiaSharp.NetCore.Tests/**/TestResults.xml'
testRunTitle: 'macOS .NET Core Tests'
- template: azure-templates-bootstrapper.yml # Tests (Linux)
parameters:
name: tests_linux
displayName: Tests (Linux)
vmImage: $(VM_IMAGE_LINUX)
packages: $(MANAGED_LINUX_PACKAGES)
retryCount: 3
target: tests
additionalArgs: --skipExternals="all"
shouldPublish: false
requiredArtifacts:
- native_linux_linux
- native_linux_nodependencies_linux
postBuildSteps:
- task: PublishTestResults@2
displayName: Publish the Mono test results
condition: always()
inputs:
testResultsFormat: xUnit
testResultsFiles: 'tests/SkiaSharp.Desktop.Tests/**/TestResults.xml'
testRunTitle: 'Linux Mono Tests'
- task: PublishTestResults@2
displayName: Publish the .NET Core test results
condition: always()
inputs:
testResultsFormat: xUnit
testResultsFiles: 'tests/SkiaSharp.NetCore.Tests/**/TestResults.xml'
testRunTitle: 'Linux .NET Core Tests'
# TODO: add tests for linux no dependencies
# TODO: add tests for windows nano server
- stage: samples
displayName: Build Samples
dependsOn: package
jobs:
- template: azure-templates-bootstrapper.yml # Build Samples (Windows)
parameters:
name: samples_windows
displayName: Build Samples (Windows)
vmImage: $(VM_IMAGE_WINDOWS)
target: samples
shouldPublish: false
requiredArtifacts:
- nuget
preBuildSteps:
- pwsh: |
New-Item '.\output\nugets\' -Type Directory -Force | Out-Null
Get-ChildItem '.\output\*.nupkg' | Move-Item -Destination '.\output\nugets\'
displayName: Copy the *.nupkgs into the correct folder for the samples
- template: azure-templates-bootstrapper.yml # Build Samples (macOS)
parameters:
name: samples_macos
displayName: Build Samples (macOS)
vmImage: $(VM_IMAGE_MAC)
target: samples
shouldPublish: false
requiredArtifacts:
- nuget
preBuildSteps:
- task: InstallAppleCertificate@2
inputs:
certSecureFile: 'SkiaSharp iOS Certificate.p12'
- task: InstallAppleCertificate@2
inputs:
certSecureFile: 'SkiaSharp Mac Certificate.p12'
- task: InstallAppleProvisioningProfile@1
inputs:
provProfileSecureFile: 'SkiaSharp iOS Provisioning.mobileprovision'
- task: InstallAppleProvisioningProfile@1
inputs:
provProfileSecureFile: 'SkiaSharp Mac Provisioning.provisionprofile'
- task: InstallAppleProvisioningProfile@1
inputs:
provProfileSecureFile: 'SkiaSharp tvOS Provisioning.mobileprovision'
- pwsh: |
New-Item '.\output\nugets\' -Type Directory -Force | Out-Null
Get-ChildItem '.\output\*.nupkg' | Move-Item -Destination '.\output\nugets\'
displayName: Copy the *.nupkgs into the correct folder for the samples
- template: azure-templates-bootstrapper.yml # Build Samples (Linux)
parameters:
name: samples_linux
displayName: Build Samples (Linux)
vmImage: $(VM_IMAGE_LINUX)
packages: $(MANAGED_LINUX_PACKAGES)
target: samples
shouldPublish: false
requiredArtifacts:
- nuget
preBuildSteps:
- pwsh: |
New-Item '.\output\nugets\' -Type Directory -Force | Out-Null
Get-ChildItem '.\output\*.nupkg' | Move-Item -Destination '.\output\nugets\'
displayName: Copy the *.nupkgs into the correct folder for the samples
postBuildSteps:
- task: PublishBuildArtifacts@1
displayName: Publish the samples artifacts
condition: always()
inputs:
artifactName: samples
pathToPublish: 'output'
- ${{ if eq(variables['System.TeamProject'], 'devdiv') }}:
- stage: checks
displayName: Run Code Checks
dependsOn: prepare
jobs:
- template: azure-templates-bootstrapper.yml # Run Code Checks
parameters:
name: native_checks_windows
displayName: Run Code Checks
# condition: and(always(), eq('refs/heads/master', variables['Build.SourceBranch']))
vmImage: $(VM_IMAGE_WINDOWS)
target: git-sync-deps
shouldPublish: false
postBuildSteps:
- task: CredScan@2
displayName: Analyze source for credentials
condition: always()
inputs:
toolMajorVersion: 'V2'
- task: PoliCheck@1
displayName: Run PoliCheck
condition: always()
inputs:
inputType: 'Basic'
targetType: 'F'
- task: SdtReport@1
displayName: Create security analysis report
condition: always()
inputs:
AllTools: false
APIScan: false
BinSkim: false
CodesignValidation: false
CredScan: true
FortifySCA: false
FxCop: false
ModernCop: false
MSRD: false
PoliCheck: true
RoslynAnalyzers: false
SDLNativeRules: false
Semmle: false
TSLint: false
ToolLogsNotFoundAction: 'Standard'
- task: PublishSecurityAnalysisLogs@3
displayName: Publish security analysis logs
condition: always()
- task: TSAUpload@1
displayName: Publish TSA logs
condition: always()
inputs:
tsaVersion: 'TsaV2'
codebase: 'NewOrUpdate'
tsaEnvironment: 'PROD'
codeBaseName: 'SkiaSharp_master'
notificationAlias: 'xamacomd@microsoft.com'
notifyAlwaysV2: false
instanceUrlForTsaV2: 'DEVDIV'
projectNameDEVDIV: 'DevDiv'
areaPath: 'DevDiv\Xamarin SDK\SkiaSharp'
iterationPath: 'DevDiv\OneVS'
uploadAPIScan: false
uploadBinSkim: false
uploadCredScan: true
uploadFortifySCA: false
uploadFxCop: false
uploadModernCop: false
uploadPoliCheck: true
uploadPREfast: false
uploadRoslyn: false
uploadTSLint: false
uploadAsync: true