[release/2.x] Clean up APIScan and other compliance yaml (#2805)

This commit is contained in:
Matthew Leibowitz 2024-03-27 16:15:21 +02:00 коммит произвёл GitHub
Родитель fa98ae0cfa
Коммит a4e98b5279
Не найден ключ, соответствующий данной подписи
Идентификатор ключа GPG: B5690EEEBB952194
26 изменённых файлов: 826 добавлений и 311 удалений

Просмотреть файл

@ -69,6 +69,7 @@ SkiaSharp.NativeAssets.UWP nuget 2.88.8
SkiaSharp.NativeAssets.watchOS nuget 2.88.8
SkiaSharp.NativeAssets.Win32 nuget 2.88.8
SkiaSharp.Views nuget 2.88.8
SkiaSharp.Views.NativeAssets.UWP nuget 2.88.8
SkiaSharp.Views.Desktop.Common nuget 2.88.8
SkiaSharp.Views.Gtk2 nuget 2.88.8
SkiaSharp.Views.Gtk3 nuget 2.88.8

Просмотреть файл

@ -81,6 +81,7 @@ var TRACKED_NUGETS = new Dictionary<string, Version> {
{ "SkiaSharp.NativeAssets.watchOS", new Version (1, 60, 0) },
{ "SkiaSharp.NativeAssets.Win32", new Version (1, 60, 0) },
{ "SkiaSharp.Views", new Version (1, 60, 0) },
{ "SkiaSharp.Views.NativeAssets.UWP", new Version (1, 60, 0) },
{ "SkiaSharp.Views.Desktop.Common", new Version (1, 60, 0) },
{ "SkiaSharp.Views.Gtk2", new Version (1, 60, 0) },
{ "SkiaSharp.Views.Gtk3", new Version (1, 60, 0) },

Просмотреть файл

@ -175,6 +175,7 @@
<Link>
<SubSystem>Console</SubSystem>
<IgnoreAllDefaultLibraries>false</IgnoreAllDefaultLibraries>
<AdditionalOptions>/DEBUGTYPE:CV,FIXUP</AdditionalOptions>
</Link>
</ItemDefinitionGroup>
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
@ -190,6 +191,7 @@
<Link>
<SubSystem>Console</SubSystem>
<IgnoreAllDefaultLibraries>false</IgnoreAllDefaultLibraries>
<AdditionalOptions>/DEBUGTYPE:CV,FIXUP</AdditionalOptions>
</Link>
</ItemDefinitionGroup>
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|ARM'">
@ -205,6 +207,7 @@
<Link>
<SubSystem>Console</SubSystem>
<IgnoreAllDefaultLibraries>false</IgnoreAllDefaultLibraries>
<AdditionalOptions>/DEBUGTYPE:CV,FIXUP</AdditionalOptions>
</Link>
</ItemDefinitionGroup>
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|ARM64'">
@ -220,6 +223,7 @@
<Link>
<SubSystem>Console</SubSystem>
<IgnoreAllDefaultLibraries>false</IgnoreAllDefaultLibraries>
<AdditionalOptions>/DEBUGTYPE:CV,FIXUP</AdditionalOptions>
</Link>
</ItemDefinitionGroup>
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|ARM'">
@ -235,6 +239,7 @@
<Link>
<SubSystem>Console</SubSystem>
<IgnoreAllDefaultLibraries>false</IgnoreAllDefaultLibraries>
<AdditionalOptions>/DEBUGTYPE:CV,FIXUP</AdditionalOptions>
</Link>
</ItemDefinitionGroup>
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|ARM64'">
@ -250,6 +255,7 @@
<Link>
<SubSystem>Console</SubSystem>
<IgnoreAllDefaultLibraries>false</IgnoreAllDefaultLibraries>
<AdditionalOptions>/DEBUGTYPE:CV,FIXUP</AdditionalOptions>
</Link>
</ItemDefinitionGroup>
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
@ -265,6 +271,7 @@
<Link>
<SubSystem>Console</SubSystem>
<IgnoreAllDefaultLibraries>false</IgnoreAllDefaultLibraries>
<AdditionalOptions>/DEBUGTYPE:CV,FIXUP</AdditionalOptions>
</Link>
</ItemDefinitionGroup>
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
@ -280,6 +287,7 @@
<Link>
<SubSystem>Console</SubSystem>
<IgnoreAllDefaultLibraries>false</IgnoreAllDefaultLibraries>
<AdditionalOptions>/DEBUGTYPE:CV,FIXUP</AdditionalOptions>
</Link>
</ItemDefinitionGroup>
<ItemGroup>

Просмотреть файл

@ -42,7 +42,7 @@ Task("libSkiaSharp")
$"extra_cflags=[ " +
$" '-DSKIA_C_DLL', '/MD{d}', '/EHsc', '/Z7', " +
$" '-DSK_HAS_DWRITE_1_H', '-DSK_HAS_DWRITE_2_H', '-DNO_GETENV', '-D_HAS_AUTO_PTR_ETC=1' ] " +
$"extra_ldflags=[ '/DEBUG:FULL' ]");
$"extra_ldflags=[ '/DEBUG:FULL', '/DEBUGTYPE:CV,FIXUP' ]");
var outDir = OUTPUT_PATH.Combine(dir);
EnsureDirectoryExists(outDir);
@ -136,6 +136,7 @@ Task("ANGLE")
System.IO.File.AppendAllLines(cmake.FullPath, new [] {
$"set(VCPKG_PLATFORM_TOOLSET \"{platform_toolset}\")",
$"set(VCPKG_DEP_INFO_OVERRIDE_VARS \"{platform_toolset}\")",
$"set(VCPKG_LINKER_FLAGS \"/DEBUG:FULL /DEBUGTYPE:CV,FIXUP\")",
});
}
}

Просмотреть файл

@ -186,6 +186,7 @@
<SubSystem>Console</SubSystem>
<IgnoreAllDefaultLibraries>false</IgnoreAllDefaultLibraries>
<GenerateWindowsMetadata>false</GenerateWindowsMetadata>
<AdditionalOptions>/DEBUGTYPE:CV,FIXUP</AdditionalOptions>
</Link>
</ItemDefinitionGroup>
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
@ -201,6 +202,7 @@
<SubSystem>Console</SubSystem>
<IgnoreAllDefaultLibraries>false</IgnoreAllDefaultLibraries>
<GenerateWindowsMetadata>false</GenerateWindowsMetadata>
<AdditionalOptions>/DEBUGTYPE:CV,FIXUP</AdditionalOptions>
</Link>
</ItemDefinitionGroup>
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|arm'">
@ -216,6 +218,7 @@
<SubSystem>Console</SubSystem>
<IgnoreAllDefaultLibraries>false</IgnoreAllDefaultLibraries>
<GenerateWindowsMetadata>false</GenerateWindowsMetadata>
<AdditionalOptions>/DEBUGTYPE:CV,FIXUP</AdditionalOptions>
</Link>
</ItemDefinitionGroup>
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|ARM64'">
@ -231,6 +234,7 @@
<SubSystem>Console</SubSystem>
<IgnoreAllDefaultLibraries>false</IgnoreAllDefaultLibraries>
<GenerateWindowsMetadata>false</GenerateWindowsMetadata>
<AdditionalOptions>/DEBUGTYPE:CV,FIXUP</AdditionalOptions>
</Link>
</ItemDefinitionGroup>
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|arm'">
@ -246,6 +250,7 @@
<SubSystem>Console</SubSystem>
<IgnoreAllDefaultLibraries>false</IgnoreAllDefaultLibraries>
<GenerateWindowsMetadata>false</GenerateWindowsMetadata>
<AdditionalOptions>/DEBUGTYPE:CV,FIXUP</AdditionalOptions>
</Link>
</ItemDefinitionGroup>
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|ARM64'">
@ -261,6 +266,7 @@
<SubSystem>Console</SubSystem>
<IgnoreAllDefaultLibraries>false</IgnoreAllDefaultLibraries>
<GenerateWindowsMetadata>false</GenerateWindowsMetadata>
<AdditionalOptions>/DEBUGTYPE:CV,FIXUP</AdditionalOptions>
</Link>
</ItemDefinitionGroup>
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
@ -276,6 +282,7 @@
<SubSystem>Console</SubSystem>
<IgnoreAllDefaultLibraries>false</IgnoreAllDefaultLibraries>
<GenerateWindowsMetadata>false</GenerateWindowsMetadata>
<AdditionalOptions>/DEBUGTYPE:CV,FIXUP</AdditionalOptions>
</Link>
</ItemDefinitionGroup>
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
@ -291,6 +298,7 @@
<SubSystem>Console</SubSystem>
<IgnoreAllDefaultLibraries>false</IgnoreAllDefaultLibraries>
<GenerateWindowsMetadata>false</GenerateWindowsMetadata>
<AdditionalOptions>/DEBUGTYPE:CV,FIXUP</AdditionalOptions>
</Link>
</ItemDefinitionGroup>
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />

Просмотреть файл

@ -53,7 +53,7 @@ Task("libSkiaSharp")
clang +
win_vcvars_version +
$"extra_cflags=[ '-DSKIA_C_DLL', '/MT{d}', '/EHsc', '/Z7', '-D_HAS_AUTO_PTR_ETC=1' ] " +
$"extra_ldflags=[ '/DEBUG:FULL' ] " +
$"extra_ldflags=[ '/DEBUG:FULL', '/DEBUGTYPE:CV,FIXUP' ] " +
ADDITIONAL_GN_ARGS);
var outDir = OUTPUT_PATH.Combine($"{VARIANT}/{dir}");

Просмотреть файл

@ -148,6 +148,7 @@
</ClCompile>
<Link>
<SubSystem>Windows</SubSystem>
<AdditionalOptions>/DEBUGTYPE:CV,FIXUP</AdditionalOptions>
</Link>
</ItemDefinitionGroup>
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
@ -163,6 +164,7 @@
</ClCompile>
<Link>
<SubSystem>Windows</SubSystem>
<AdditionalOptions>/DEBUGTYPE:CV,FIXUP</AdditionalOptions>
</Link>
</ItemDefinitionGroup>
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|ARM64'">
@ -178,6 +180,7 @@
</ClCompile>
<Link>
<SubSystem>Windows</SubSystem>
<AdditionalOptions>/DEBUGTYPE:CV,FIXUP</AdditionalOptions>
</Link>
</ItemDefinitionGroup>
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
@ -197,6 +200,7 @@
<SubSystem>Windows</SubSystem>
<EnableCOMDATFolding>true</EnableCOMDATFolding>
<OptimizeReferences>true</OptimizeReferences>
<AdditionalOptions>/DEBUGTYPE:CV,FIXUP</AdditionalOptions>
</Link>
</ItemDefinitionGroup>
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
@ -216,6 +220,7 @@
<SubSystem>Windows</SubSystem>
<EnableCOMDATFolding>true</EnableCOMDATFolding>
<OptimizeReferences>true</OptimizeReferences>
<AdditionalOptions>/DEBUGTYPE:CV,FIXUP</AdditionalOptions>
</Link>
</ItemDefinitionGroup>
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|ARM64'">
@ -235,6 +240,7 @@
<SubSystem>Windows</SubSystem>
<EnableCOMDATFolding>true</EnableCOMDATFolding>
<OptimizeReferences>true</OptimizeReferences>
<AdditionalOptions>/DEBUGTYPE:CV,FIXUP</AdditionalOptions>
</Link>
</ItemDefinitionGroup>
<ItemGroup>

Просмотреть файл

@ -0,0 +1,54 @@
<?xml version="1.0" encoding="utf-8"?>
<package>
<metadata>
<!-- package -->
<id>SkiaSharp.Views.NativeAssets.UWP</id>
<title>SkiaSharp Views &amp; Layers - Native Assets for UWP</title>
<version>1.0.0</version>
<description>
SkiaSharp Views &amp; Layers are a set of platform-specific views and containers that can be used to draw on the screen.
</description>
<summary>
SkiaSharp Views &amp; Layers are a set of platform-specific views and containers that can be used to draw on the screen.
</summary>
<releaseNotes>
Please visit https://go.microsoft.com/fwlink/?linkid=868517 to view the release notes.
</releaseNotes>
<projectUrl>https://go.microsoft.com/fwlink/?linkid=868515</projectUrl>
<iconUrl>https://go.microsoft.com/fwlink/?linkid=2130524</iconUrl>
<tags>ui xamarin graphics ios android linux windows uwp tvos watchos macos tizen cross-platform skiasharp</tags>
<!-- legal -->
<licenseUrl>https://go.microsoft.com/fwlink/?linkid=868514</licenseUrl>
<authors>Microsoft</authors>
<owners>Microsoft</owners>
<requireLicenseAcceptance>true</requireLicenseAcceptance>
<copyright>© Microsoft Corporation. All rights reserved.</copyright>
<dependencies>
<group targetFramework="uap10.0">
</group>
</dependencies>
</metadata>
<files>
<!-- placeholders -->
<file src="_._" target="lib/uap10.0/_._" />
<!-- SkiaSharp.Views.Interop.UWP.dll -->
<file src="runtimes/win10-x64/nativeassets/uap10.0/SkiaSharp.Views.Interop.UWP.dll" />
<file src="runtimes/win10-x64/nativeassets/uap10.0/SkiaSharp.Views.Interop.UWP.pdb" />
<file src="runtimes/win10-x86/nativeassets/uap10.0/SkiaSharp.Views.Interop.UWP.dll" />
<file src="runtimes/win10-x86/nativeassets/uap10.0/SkiaSharp.Views.Interop.UWP.pdb" />
<file src="runtimes/win10-arm/nativeassets/uap10.0/SkiaSharp.Views.Interop.UWP.dll" />
<file src="runtimes/win10-arm/nativeassets/uap10.0/SkiaSharp.Views.Interop.UWP.pdb" />
<file src="runtimes/win10-arm64/nativeassets/uap10.0/SkiaSharp.Views.Interop.UWP.dll" />
<file src="runtimes/win10-arm64/nativeassets/uap10.0/SkiaSharp.Views.Interop.UWP.pdb" />
<!-- legal -->
<file src="LICENSE.txt" />
</files>
</package>

Просмотреть файл

@ -36,6 +36,7 @@ Please visit https://go.microsoft.com/fwlink/?linkid=868517 to view the release
</group>
<group targetFramework="uap10.0">
<dependency id="SkiaSharp" version="1.0.0" />
<dependency id="SkiaSharp.Views.NativeAssets.UWP" version="1.0.0" />
</group>
<group targetFramework="monoandroid1.0">
<dependency id="SkiaSharp" version="1.0.0" />
@ -123,12 +124,6 @@ Please visit https://go.microsoft.com/fwlink/?linkid=868517 to view the release
<file src="lib/net6.0-tizen/SkiaSharp.Views.Tizen.pdb" target="lib/net6.0-tizen7.0/SkiaSharp.Views.Tizen.pdb" />
<file src="lib/net6.0-tizen/SkiaSharp.Views.Tizen.xml" target="lib/net6.0-tizen7.0/SkiaSharp.Views.Tizen.xml" />
<!-- SkiaSharp.Views.Interop.UWP.dll -->
<file src="runtimes/win10-x64/nativeassets/uap10.0/SkiaSharp.Views.Interop.UWP.dll" />
<file src="runtimes/win10-x86/nativeassets/uap10.0/SkiaSharp.Views.Interop.UWP.dll" />
<file src="runtimes/win10-arm/nativeassets/uap10.0/SkiaSharp.Views.Interop.UWP.dll" />
<file src="runtimes/win10-arm64/nativeassets/uap10.0/SkiaSharp.Views.Interop.UWP.dll" />
<!-- legal -->
<file src="LICENSE.txt" />

Просмотреть файл

Просмотреть файл

@ -4,40 +4,53 @@ pr: none
parameters:
- name: buildExternals
displayName: 'The specific native artifacts to use for this build.'
displayName: 'The Build ID containing the specific native artifacts to use:'
type: string
default: 'latest'
- name: VM_IMAGE_HOST
displayName: 'The generic host build agent configuration:'
type: object
default:
pool:
name: Azure Pipelines
vmImage: ubuntu-20.04
os: windows
- name: VM_IMAGE_WINDOWS
displayName: 'The Windows build agent configuration:'
type: object
default:
pool:
name: Azure Pipelines
vmImage: windows-2022
os: windows
- name: VM_IMAGE_MAC
displayName: 'The macOS build agent configuration:'
type: object
default:
pool:
name: Azure Pipelines
vmImage: macos-12
os: macos
- name: VM_IMAGE_LINUX
displayName: 'The Linux build agent configuration:'
type: object
default:
pool:
name: Azure Pipelines
vmImage: ubuntu-20.04
- name: runCompliance
os: linux
- name: enableSigning
displayName: 'Enable package signing (Test signing)'
type: boolean
default: false
- name: runCompliance
displayName: 'Run post-build compliance tasks (such as API Scan and PoliCheck)'
type: boolean
default: false
- name: use1ESPipelineTemplates
displayName: 'Run the build using the internal 1ES Pipeline Templates'
type: boolean
default: false
pool:
name: Azure Pipelines
vmImage: ubuntu-20.04
variables:
- template: /scripts/azure-pipelines-variables.yml@self
@ -49,17 +62,51 @@ resources:
name: xamarin/yaml-templates
endpoint: xamarin
ref: refs/heads/main
- repository: 1ESPipelineTemplates
type: git
name: 1ESPipelineTemplates/1ESPipelineTemplates
ref: refs/tags/release
stages:
- template: /scripts/azure-templates-stages.yml@self
parameters:
buildPipelineType: 'both'
buildExternals: ${{ parameters.buildExternals }}
runCompliance: ${{ parameters.runCompliance }}
VM_IMAGE_HOST: ${{ parameters.VM_IMAGE_HOST }}
VM_IMAGE_WINDOWS: ${{ parameters.VM_IMAGE_WINDOWS }}
VM_IMAGE_WINDOWS_NATIVE: ${{ parameters.VM_IMAGE_WINDOWS }}
VM_IMAGE_MAC: ${{ parameters.VM_IMAGE_MAC }}
VM_IMAGE_MAC_NATIVE: ${{ parameters.VM_IMAGE_MAC }}
VM_IMAGE_LINUX: ${{ parameters.VM_IMAGE_LINUX }}
VM_IMAGE_LINUX_NATIVE: ${{ parameters.VM_IMAGE_LINUX }}
extends:
${{ if eq('${{ parameters.use1ESPipelineTemplates }}', 'true') }}:
template: v1/1ES.Unofficial.PipelineTemplate.yml@1ESPipelineTemplates
${{ if ne('${{ parameters.use1ESPipelineTemplates }}', 'true') }}:
template: /scripts/azure-template.yml@self
parameters:
pool: ${{ parameters.VM_IMAGE_HOST.pool }}
customBuildTags:
- ES365AIMigrationTooling
stages:
- template: /scripts/azure-templates-stages.yml@self
parameters:
buildPipelineType: 'both'
buildExternals: ${{ parameters.buildExternals }}
enableSigning: ${{ parameters.enableSigning }}
${{ if eq(parameters.runCompliance, 'true') }}:
sdl:
apiscan:
enabled: true
binskim:
break: false
codeInspector:
enabled: true
credscan:
suppressionsFile: $(Build.SourcesDirectory)\scripts\guardian\CredScanSuppressions.json
policheck:
enabled: true
exclusionsFile: $(Build.SourcesDirectory)\scripts\guardian\PoliCheckExclusions.xml
spotBugs:
enabled: false
suppression:
suppressionFile: $(Build.SourcesDirectory)\scripts\guardian\source.gdnsuppress
tsa:
enabled: true
configFile: $(Build.SourcesDirectory)\scripts\guardian\tsaoptions-v2.json
use1ESPipelineTemplates: ${{ parameters.use1ESPipelineTemplates }}
VM_IMAGE_HOST: ${{ parameters.VM_IMAGE_HOST }}
VM_IMAGE_WINDOWS: ${{ parameters.VM_IMAGE_WINDOWS }}
VM_IMAGE_WINDOWS_NATIVE: ${{ parameters.VM_IMAGE_WINDOWS }}
VM_IMAGE_MAC: ${{ parameters.VM_IMAGE_MAC }}
VM_IMAGE_MAC_NATIVE: ${{ parameters.VM_IMAGE_MAC }}
VM_IMAGE_LINUX: ${{ parameters.VM_IMAGE_LINUX }}
VM_IMAGE_LINUX_NATIVE: ${{ parameters.VM_IMAGE_LINUX }}

Просмотреть файл

@ -10,50 +10,58 @@ pr:
parameters:
- name: buildExternals
displayName: 'The specific native artifacts to use for this build.'
displayName: 'The Build ID containing the specific native artifacts to use:'
type: string
default: 'latest'
- name: VM_IMAGE_HOST
displayName: 'The generic host build agent configuration:'
type: object
default:
pool:
name: Azure Pipelines
vmImage: ubuntu-20.04
os: windows
- name: VM_IMAGE_WINDOWS
displayName: 'The Windows build agent configuration:'
type: object
default:
pool:
name: Azure Pipelines
vmImage: windows-2022
os: windows
- name: VM_IMAGE_MAC
displayName: 'The macOS build agent configuration:'
type: object
default:
pool:
name: Azure Pipelines
vmImage: macos-12
os: macos
- name: VM_IMAGE_LINUX
displayName: 'The Linux build agent configuration:'
type: object
default:
pool:
name: Azure Pipelines
vmImage: ubuntu-20.04
pool:
name: Azure Pipelines
vmImage: ubuntu-20.04
os: linux
variables:
- template: /scripts/azure-pipelines-variables.yml@self
stages:
- template: /scripts/azure-templates-stages.yml@self
parameters:
buildPipelineType: 'both'
buildExternals: ${{ parameters.buildExternals }}
VM_IMAGE_HOST: ${{ parameters.VM_IMAGE_HOST }}
VM_IMAGE_WINDOWS: ${{ parameters.VM_IMAGE_WINDOWS }}
VM_IMAGE_WINDOWS_NATIVE: ${{ parameters.VM_IMAGE_WINDOWS }}
VM_IMAGE_MAC: ${{ parameters.VM_IMAGE_MAC }}
VM_IMAGE_MAC_NATIVE: ${{ parameters.VM_IMAGE_MAC }}
VM_IMAGE_LINUX: ${{ parameters.VM_IMAGE_LINUX }}
VM_IMAGE_LINUX_NATIVE: ${{ parameters.VM_IMAGE_LINUX }}
extends:
template: /scripts/azure-template.yml@self
parameters:
pool: ${{ parameters.VM_IMAGE_HOST.pool }}
stages:
- template: /scripts/azure-templates-stages.yml@self
parameters:
buildPipelineType: 'both'
buildExternals: ${{ parameters.buildExternals }}
VM_IMAGE_HOST: ${{ parameters.VM_IMAGE_HOST }}
VM_IMAGE_WINDOWS: ${{ parameters.VM_IMAGE_WINDOWS }}
VM_IMAGE_WINDOWS_NATIVE: ${{ parameters.VM_IMAGE_WINDOWS }}
VM_IMAGE_MAC: ${{ parameters.VM_IMAGE_MAC }}
VM_IMAGE_MAC_NATIVE: ${{ parameters.VM_IMAGE_MAC }}
VM_IMAGE_LINUX: ${{ parameters.VM_IMAGE_LINUX }}
VM_IMAGE_LINUX_NATIVE: ${{ parameters.VM_IMAGE_LINUX }}

Просмотреть файл

@ -4,29 +4,37 @@ pr: none
parameters:
- name: VM_IMAGE_HOST
displayName: 'The generic host build agent configuration:'
type: object
default:
pool:
name: Azure Pipelines
vmImage: ubuntu-20.04
os: windows
- name: VM_IMAGE_WINDOWS
displayName: 'The Windows build agent configuration:'
type: object
default:
pool:
name: Azure Pipelines
vmImage: windows-2022
os: windows
- name: VM_IMAGE_MAC
displayName: 'The macOS build agent configuration:'
type: object
default:
pool:
name: Azure Pipelines
vmImage: macos-12
os: macos
- name: VM_IMAGE_LINUX
displayName: 'The Linux build agent configuration:'
type: object
default:
pool:
name: Azure Pipelines
vmImage: ubuntu-20.04
os: linux
variables:
- template: /scripts/azure-pipelines-variables.yml@self
@ -43,14 +51,18 @@ resources:
source: SkiaSharp
trigger: true
stages:
- template: /scripts/azure-templates-stages.yml@self
parameters:
buildPipelineType: 'tests'
VM_IMAGE_HOST: ${{ parameters.VM_IMAGE_HOST }}
VM_IMAGE_WINDOWS: ${{ parameters.VM_IMAGE_WINDOWS }}
VM_IMAGE_WINDOWS_NATIVE: ${{ parameters.VM_IMAGE_WINDOWS }}
VM_IMAGE_MAC: ${{ parameters.VM_IMAGE_MAC }}
VM_IMAGE_MAC_NATIVE: ${{ parameters.VM_IMAGE_MAC }}
VM_IMAGE_LINUX: ${{ parameters.VM_IMAGE_LINUX }}
VM_IMAGE_LINUX_NATIVE: ${{ parameters.VM_IMAGE_LINUX }}
extends:
template: /scripts/azure-template.yml@self
parameters:
pool: ${{ parameters.VM_IMAGE_HOST.pool }}
stages:
- template: /scripts/azure-templates-stages.yml@self
parameters:
buildPipelineType: 'tests'
VM_IMAGE_HOST: ${{ parameters.VM_IMAGE_HOST }}
VM_IMAGE_WINDOWS: ${{ parameters.VM_IMAGE_WINDOWS }}
VM_IMAGE_WINDOWS_NATIVE: ${{ parameters.VM_IMAGE_WINDOWS }}
VM_IMAGE_MAC: ${{ parameters.VM_IMAGE_MAC }}
VM_IMAGE_MAC_NATIVE: ${{ parameters.VM_IMAGE_MAC }}
VM_IMAGE_LINUX: ${{ parameters.VM_IMAGE_LINUX }}
VM_IMAGE_LINUX_NATIVE: ${{ parameters.VM_IMAGE_LINUX }}

Просмотреть файл

@ -1,4 +1,5 @@
variables:
SKIASHARP_MAJOR_VERSION: 2
SKIASHARP_VERSION: 2.88.8
FEATURE_NAME_PREFIX: 'feature/'
VERBOSITY: normal

Просмотреть файл

@ -10,33 +10,45 @@ pr:
parameters:
- name: buildExternals
displayName: 'The specific native artifacts to use for this build.'
displayName: 'The Build ID containing the specific native artifacts to use:'
type: string
default: 'latest'
- name: VM_IMAGE_HOST
displayName: 'The generic host build agent configuration:'
type: object
default:
pool:
name: Azure Pipelines
vmImage: ubuntu-20.04
name: Maui-1ESPT
image: 1ESPT-Windows2022
os: windows
- name: VM_IMAGE_WINDOWS
displayName: 'The Windows build agent configuration:'
type: object
default:
pool:
name: Azure Pipelines
vmImage: windows-2022
name: Maui-1ESPT
image: 1ESPT-Windows2022
os: windows
- name: VM_IMAGE_MAC
displayName: 'The macOS build agent configuration:'
type: object
default:
pool:
name: Azure Pipelines
vmImage: macos-12
os: macos
- name: VM_IMAGE_LINUX
displayName: 'The Linux build agent configuration:'
type: object
default:
pool:
name: Azure Pipelines
vmImage: ubuntu-20.04
name: Maui-1ESPT
image: 1ESPT-Ubuntu20.04
os: linux
- name: runCompliance
displayName: 'Run post-build compliance tasks (such as API Scan and PoliCheck)'
type: boolean
default: false
variables:
- template: /scripts/azure-pipelines-variables.yml@self
@ -48,16 +60,51 @@ resources:
name: xamarin/yaml-templates
endpoint: xamarin
ref: refs/heads/main
- repository: 1ESPipelineTemplates
type: git
name: 1ESPipelineTemplates/1ESPipelineTemplates
ref: refs/tags/release
stages:
- template: /scripts/azure-templates-stages.yml@self
parameters:
buildPipelineType: 'build'
buildExternals: ${{ parameters.buildExternals }}
VM_IMAGE_HOST: ${{ parameters.VM_IMAGE_HOST }}
VM_IMAGE_WINDOWS: ${{ parameters.VM_IMAGE_WINDOWS }}
VM_IMAGE_WINDOWS_NATIVE: ${{ parameters.VM_IMAGE_WINDOWS }}
VM_IMAGE_MAC: ${{ parameters.VM_IMAGE_MAC }}
VM_IMAGE_MAC_NATIVE: ${{ parameters.VM_IMAGE_MAC }}
VM_IMAGE_LINUX: ${{ parameters.VM_IMAGE_LINUX }}
VM_IMAGE_LINUX_NATIVE: ${{ parameters.VM_IMAGE_LINUX }}
extends:
template: v1/1ES.Official.PipelineTemplate.yml@1ESPipelineTemplates
parameters:
pool: ${{ parameters.VM_IMAGE_HOST.pool }}
customBuildTags:
- ES365AIMigrationTooling
stages:
- template: /scripts/azure-templates-stages.yml@self
parameters:
buildPipelineType: 'build'
buildExternals: ${{ parameters.buildExternals }}
${{ if and(eq(variables['System.TeamProject'], 'devdiv'), ne(variables['System.PullRequest.IsFork'], 'true')) }}:
enableSigning: true
${{ if or(parameters.runCompliance, and(eq(variables['Build.Reason'], 'Schedule'), or(eq(variables['Build.SourceBranch'], 'refs/heads/main'), startsWith(variables['Build.SourceBranch'], 'refs/heads/release/')))) }}:
sdl:
apiscan:
enabled: true
binskim:
enabled: true
break: false
codeInspector:
enabled: true
credscan:
enabled: true
# suppressionsFile: $(Build.SourcesDirectory)\scripts\guardian\CredScanSuppressions.json
policheck:
enabled: true
exclusionsFile: $(Build.SourcesDirectory)\scripts\guardian\PoliCheckExclusions.xml
spotBugs:
enabled: false
suppression:
suppressionFile: $(Build.SourcesDirectory)\scripts\guardian\source.gdnsuppress
tsa:
enabled: true
configFile: $(Build.SourcesDirectory)\scripts\guardian\tsaoptions-v2.json
use1ESPipelineTemplates: true
VM_IMAGE_HOST: ${{ parameters.VM_IMAGE_HOST }}
VM_IMAGE_WINDOWS: ${{ parameters.VM_IMAGE_WINDOWS }}
VM_IMAGE_WINDOWS_NATIVE: ${{ parameters.VM_IMAGE_WINDOWS }}
VM_IMAGE_MAC: ${{ parameters.VM_IMAGE_MAC }}
VM_IMAGE_MAC_NATIVE: ${{ parameters.VM_IMAGE_MAC }}
VM_IMAGE_LINUX: ${{ parameters.VM_IMAGE_LINUX }}
VM_IMAGE_LINUX_NATIVE: ${{ parameters.VM_IMAGE_LINUX }}

Просмотреть файл

@ -0,0 +1,31 @@
parameters:
- name: stages
type: stageList
default: []
- name: pool
type: object
default: {}
- name: customBuildTags
type: object
default: null
stages:
- ${{ each stage in parameters.stages }}:
- ${{ each stageProperty in stage }}:
${{ if notIn(stageProperty.key, 'jobs', 'pool') }}:
${{ stageProperty.key }}: ${{ stageProperty.value }}
pool: ${{ parameters.pool }}
jobs:
- ${{ each job in stage.jobs }}:
- ${{ each jobProperty in job }}:
${{ if notIn(jobProperty.key, 'steps', 'templateContext') }}:
${{ jobProperty.key }}: ${{ jobProperty.value }}
steps:
- ${{ job.steps }}
- ${{ each output in job.templateContext.outputs }}:
- task: PublishPipelineArtifact@1
displayName: ${{ output.displayName }}
condition: ${{ coalesce(output.condition, 'succeeded()') }}
inputs:
artifactName: ${{ output.artifactName }}
targetPath: ${{ output.targetPath }}

Просмотреть файл

@ -1,7 +1,7 @@
parameters:
name: '' # in the form type_platform_host
displayName: '' # the human name
vmImage: '' # the VM image
vmImage: '' # the configuration for the build agent
packages: '' # any additional packages
target: '' # the bootstrapper target
dependsOn: [] # the dependiencies
@ -29,8 +29,12 @@ parameters:
installDotNet: true # whether or not to install the dotnet SDK
installLlvm: true # whether or not to install the LLVM compiler
installEmsdk: false # whether or not to install the Emscripten SDK
artifactName: '' # the name of the artifact to merge this run into
publishArtifacts: [] # the additional artifacts to publish
tools: [] # any additional .net global tools
skipInstall: false # whether or not to install any tools
skipSteps: false # whether or not to run any steps
use1ESPipelineTemplates: false # whether or not we are building using the internal 1ES Pipeline Templates
sdl: [] # the SDL properties to use for this job
jobs:
- job: ${{ parameters.name }}
@ -44,10 +48,38 @@ jobs:
${{ parameters.vmImage.variables }}
${{ if ne(length(parameters.variables), 0) }}:
${{ parameters.variables }}
templateContext:
sdl: ${{ parameters.sdl }}
outputParentDirectory: 'output'
outputs:
- ${{ if eq(parameters.shouldPublish, 'true') }}:
- output: pipelineArtifact
displayName: 'Publish the ${{ parameters.name }} artifacts'
artifactName: ${{ parameters.name }}
targetPath: 'output'
- output: pipelineArtifact
displayName: 'Publish the failed ${{ parameters.name }} artifacts'
condition: failed()
artifactName: ${{ parameters.name }}_failed_$(System.JobAttempt)
targetPath: 'output'
- ${{ each additionalArtifact in parameters.publishArtifacts }}:
- output: pipelineArtifact
displayName: 'Publish the ${{ additionalArtifact.name }} artifacts'
artifactName: ${{ additionalArtifact.name }}
targetPath: ${{ additionalArtifact.path }}
- ${{ if eq(additionalArtifact.always, 'true') }}:
- output: pipelineArtifact
displayName: 'Publish the failed ${{ additionalArtifact.name }} artifacts'
condition: failed()
artifactName: ${{ additionalArtifact.name }}_failed_$(System.JobAttempt)
targetPath: ${{ additionalArtifact.path }}
steps:
# prepare
- checkout: self
submodules: recursive
- pwsh: Write-Host '${{ convertToJson(parameters.sdl) }}'
displayName: Print current SDL input
- template: /scripts/azure-templates-variables.yml@self
# checkout required skia PR
@ -71,7 +103,7 @@ jobs:
- ${{ parameters.provisioningSteps }}
# install any packages on linux
- ${{ if and(eq(parameters.docker, ''), endsWith(parameters.name, '_linux')) }}:
- ${{ if and(eq(parameters.docker, ''), endsWith(parameters.name, '_linux'), ne(parameters.skipInstall, 'true')) }}:
- bash: |
sudo apt update
sudo apt install -y ${{ parameters.packages }}
@ -80,24 +112,20 @@ jobs:
condition: and(succeeded(), eq(variables['DOWNLOAD_EXTERNALS'], ''), ne('${{ parameters.packages }}', ''))
# make sure mono/msbuild is the correct version
- ${{ if and(eq(parameters.docker, ''), endsWith(parameters.name, '_linux')) }}:
- ${{ if and(eq(parameters.docker, ''), endsWith(parameters.name, '_linux'), ne(parameters.skipInstall, 'true')) }}:
- bash: ./scripts/install-mono.sh $(MONO_VERSION_LINUX)
displayName: Install Mono and MSBuild
retryCountOnTaskFailure: 3
condition: and(succeeded(), eq(variables['DOWNLOAD_EXTERNALS'], ''), ne(variables['MONO_VERSION_LINUX'], ''))
- ${{ if endsWith(parameters.name, '_macos') }}:
- ${{ if and(endsWith(parameters.name, '_macos'), ne(parameters.skipInstall, 'true')) }}:
- bash: sudo ./scripts/select-xamarin.sh $(MONO_VERSION_MACOS)
displayName: Switch to the latest Xamarin SDK
retryCountOnTaskFailure: 3
condition: and(succeeded(), eq(variables['DOWNLOAD_EXTERNALS'], ''))
# install extra bits for the native builds
- ${{ if startsWith(parameters.name, 'native_') }}:
- ${{ if and(startsWith(parameters.name, 'native_'), ne(parameters.skipInstall, 'true')) }}:
# switch to the correct Python version
- pwsh: .\scripts\install-python.ps1
displayName: Install Python
retryCountOnTaskFailure: 3
condition: and(succeeded(), eq(variables['DOWNLOAD_EXTERNALS'], ''))
- task: UsePythonVersion@0
displayName: Switch to the correct Python version
retryCountOnTaskFailure: 3
@ -130,7 +158,7 @@ jobs:
condition: and(succeeded(), eq(variables['DOWNLOAD_EXTERNALS'], ''))
# install extra bits for the managed builds
- ${{ if not(startsWith(parameters.name, 'native_')) }}:
- ${{ if and(not(startsWith(parameters.name, 'native_')), ne(parameters.skipInstall, 'true')) }}:
# install the bits needed for Android on macOS and Windows
- ${{ if and(eq(parameters.installAndroidSdk, 'true'), not(endsWith(parameters.name, '_linux'))) }}:
# install the correct version of the JDK for .NET 6
@ -205,32 +233,32 @@ jobs:
displayName: Install the .NET Core workloads
# select the correct/latest version of Visual Studio
- ${{ if endsWith(parameters.name, '_windows') }}:
- ${{ if and(endsWith(parameters.name, '_windows'), ne(parameters.skipInstall, 'true')) }}:
- pwsh: .\scripts\select-vs.ps1
displayName: Select Visual Studio
condition: and(succeeded(), eq(variables['DOWNLOAD_EXTERNALS'], ''))
# install nuget
- ${{ if endsWith(parameters.name, '_windows') }}:
- ${{ if and(endsWith(parameters.name, '_windows'), ne(parameters.skipInstall, 'true')) }}:
- pwsh: .\scripts\install-nuget.ps1
displayName: Install NuGet
condition: and(succeeded(), eq(variables['DOWNLOAD_EXTERNALS'], ''))
# install the mac tools
- ${{ if endsWith(parameters.name, '_macos') }}:
- ${{ if and(endsWith(parameters.name, '_macos'), ne(parameters.skipInstall, 'true')) }}:
- bash: sudo ./scripts/select-xcode.sh $(XCODE_VERSION)
displayName: Switch to the latest Xcode
condition: and(succeeded(), eq(variables['DOWNLOAD_EXTERNALS'], ''))
# install the linux tools
- ${{ if and(eq(parameters.installEmsdk, 'true'), endsWith(parameters.name, '_linux')) }}:
- ${{ if and(eq(parameters.installEmsdk, 'true'), endsWith(parameters.name, '_linux'), ne(parameters.skipInstall, 'true')) }}:
- bash: ./scripts/install-emsdk.sh $(EMSCRIPTEN_VERSION)
displayName: Install the Emscripten SDK
retryCountOnTaskFailure: 3
condition: and(succeeded(), eq(variables['DOWNLOAD_EXTERNALS'], ''))
# install the Windows tools
- ${{ if endsWith(parameters.name, '_windows') }}:
- ${{ if and(endsWith(parameters.name, '_windows'), ne(parameters.skipInstall, 'true')) }}:
- ${{ if not(contains(parameters.name, '_checks_')) }}:
# install the older Windows SDKs
- ${{ if eq(parameters.installWindowsSdk, 'true') }}:
@ -252,11 +280,12 @@ jobs:
condition: and(succeeded(), eq(variables['DOWNLOAD_EXTERNALS'], ''))
# install any .NET Core global tools
- ${{ each tool in parameters.tools }}:
- pwsh: dotnet tool install -g ${{ tool }}
displayName: Install ${{ tool }}
retryCountOnTaskFailure: 3
condition: and(succeeded(), eq(variables['DOWNLOAD_EXTERNALS'], ''))
- ${{ if ne(parameters.skipInstall, 'true') }}:
- ${{ each tool in parameters.tools }}:
- pwsh: dotnet tool install -g ${{ tool }}
displayName: Install ${{ tool }}
retryCountOnTaskFailure: 3
condition: and(succeeded(), eq(variables['DOWNLOAD_EXTERNALS'], ''))
# download artifacts
- template: /scripts/azure-templates-download-artifacts.yml@self
@ -277,77 +306,68 @@ jobs:
- ${{ parameters.preBuildSteps }}
# build
- ${{ if eq(parameters.docker, '') }}:
- ${{ if endsWith(parameters.name, '_windows') }}:
- pwsh: |
dotnet tool restore
${{ parameters.initScript }}
dotnet cake --target=${{ parameters.target }} --verbosity=${{ parameters.verbosity }} --configuration=${{ coalesce(parameters.configuration, 'Release') }} ${{ parameters.additionalArgs }}
env:
JavaSdkDirectory: $(JAVA_HOME)
LLVM_HOME: $(LLVM_HOME)
# There seems to be a bug in some verions of mspdbcmf.exe. This looks to be fixed in a VS preview.
AppxSymbolPackageEnabled: false
displayName: Run the bootstrapper for ${{ parameters.target }}
retryCountOnTaskFailure: ${{ parameters.retryCount }}
condition: and(succeeded(), eq(variables['DOWNLOAD_EXTERNALS'], ''))
- ${{ if not(endsWith(parameters.name, '_windows')) }}:
- ${{ if ne(parameters.skipSteps, 'true') }}:
- ${{ if eq(parameters.docker, '') }}:
- ${{ if endsWith(parameters.name, '_windows') }}:
- pwsh: |
Get-Content $PSCommandPath
dotnet tool restore
${{ parameters.initScript }}
dotnet cake --target=${{ parameters.target }} --verbosity=${{ parameters.verbosity }} --configuration=${{ coalesce(parameters.configuration, 'Release') }} ${{ parameters.additionalArgs }}
env:
JavaSdkDirectory: $(JAVA_HOME)
LLVM_HOME: $(LLVM_HOME)
# There seems to be a bug in some verions of mspdbcmf.exe. This looks to be fixed in a VS preview.
AppxSymbolPackageEnabled: false
displayName: Run the bootstrapper for ${{ parameters.target }}
retryCountOnTaskFailure: ${{ parameters.retryCount }}
condition: and(succeeded(), eq(variables['DOWNLOAD_EXTERNALS'], ''))
- ${{ if not(endsWith(parameters.name, '_windows')) }}:
- bash: |
cat ${BASH_SOURCE[0]}
dotnet tool restore
${{ parameters.initScript }}
dotnet cake --target=${{ parameters.target }} --verbosity=${{ parameters.verbosity }} --configuration=${{ coalesce(parameters.configuration, 'Release') }} ${{ parameters.additionalArgs }}
env:
JavaSdkDirectory: $(JAVA_HOME)
displayName: Run the bootstrapper for ${{ parameters.target }}
retryCountOnTaskFailure: ${{ parameters.retryCount }}
condition: and(succeeded(), eq(variables['DOWNLOAD_EXTERNALS'], ''))
- ${{ if ne(parameters.docker, '') }}:
- ${{ if eq(parameters.use1ESPipelineTemplates, 'true') }}:
- task: 1ES.BuildContainerImage@1
displayName: Build the Docker image for ${{ parameters.docker }}
condition: and(succeeded(), eq(variables['DOWNLOAD_EXTERNALS'], ''))
inputs:
dockerfile: ${{ parameters.docker }}/Dockerfile
context: ${{ parameters.docker }}
image: skiasharp:skiasharp
buildArguments: --tag skiasharp ${{ parameters.dockerArgs }}
enableNetwork: true
- ${{ if ne(parameters.use1ESPipelineTemplates, 'true') }}:
- task: Docker@2
displayName: Build the Docker image for ${{ parameters.docker }}
condition: and(succeeded(), eq(variables['DOWNLOAD_EXTERNALS'], ''))
inputs:
command: build
buildContext: ${{ parameters.docker }}
dockerfile: ${{ parameters.docker }}/Dockerfile
arguments: --tag skiasharp ${{ parameters.dockerArgs }}
- bash: |
dotnet tool restore
${{ parameters.initScript }}
dotnet cake --target=${{ parameters.target }} --verbosity=${{ parameters.verbosity }} --configuration=${{ coalesce(parameters.configuration, 'Release') }} ${{ parameters.additionalArgs }}
env:
JavaSdkDirectory: $(JAVA_HOME)
displayName: Run the bootstrapper for ${{ parameters.target }}
echo dotnet tool restore > cmd.sh
echo dotnet cake --target=${{ parameters.target }} --verbosity=${{ parameters.verbosity }} --configuration=${{ coalesce(parameters.configuration, 'Release') }} ${{ parameters.additionalArgs }} >> cmd.sh
sed -i 's/--gnArgs=\" \"//' cmd.sh
cat cmd.sh
displayName: Generate the script for the Docker image
condition: and(succeeded(), eq(variables['DOWNLOAD_EXTERNALS'], ''))
- bash: |
docker run --rm --name skiasharp --volume $(pwd):/work skiasharp /bin/bash /work/cmd.sh
displayName: Run the bootstrapper for ${{ parameters.target }} using the Docker image
retryCountOnTaskFailure: ${{ parameters.retryCount }}
condition: and(succeeded(), eq(variables['DOWNLOAD_EXTERNALS'], ''))
- ${{ if ne(parameters.docker, '') }}:
- task: Docker@2
displayName: Build the Docker image for ${{ parameters.docker }}
condition: and(succeeded(), eq(variables['DOWNLOAD_EXTERNALS'], ''))
inputs:
command: build
buildContext: ${{ parameters.docker }}
dockerfile: ${{ parameters.docker }}/Dockerfile
arguments: --tag skiasharp ${{ parameters.dockerArgs }}
- bash: |
echo dotnet tool restore > cmd.sh
echo dotnet cake --target=${{ parameters.target }} --verbosity=${{ parameters.verbosity }} --configuration=${{ coalesce(parameters.configuration, 'Release') }} ${{ parameters.additionalArgs }} >> cmd.sh
sed -i 's/--gnArgs=\" \"//' cmd.sh
displayName: Generate the script for the Docker image
condition: and(succeeded(), eq(variables['DOWNLOAD_EXTERNALS'], ''))
- bash: |
docker run --rm --name skiasharp --volume $(pwd):/work skiasharp /bin/bash /work/cmd.sh
displayName: Run the bootstrapper for ${{ parameters.target }} using the Docker image
retryCountOnTaskFailure: ${{ parameters.retryCount }}
condition: and(succeeded(), eq(variables['DOWNLOAD_EXTERNALS'], ''))
# post-build steps
- ${{ parameters.postBuildSteps }}
# publish artifacts
- task: PublishBuildArtifacts@1
displayName: Publish the ${{ parameters.name }} artifacts
condition: or(${{ parameters.shouldPublish }}, failed())
retryCountOnTaskFailure: 3
inputs:
artifactName: ${{ parameters.name }}
pathToPublish: 'output'
- ${{ if ne(parameters.artifactName, '') }}:
- task: PublishBuildArtifacts@1
displayName: Publish the combined ${{ parameters.artifactName }} artifacts
retryCountOnTaskFailure: 3
inputs:
artifactName: ${{ parameters.artifactName }}
pathToPublish: 'output'
- ${{ if eq(variables['System.TeamProject'], 'devdiv') }}:
- task: ComponentGovernanceComponentDetection@0
displayName: Run component detection
condition: always()
inputs:
scanType: 'Register'
verbosity: 'Verbose'
alertWarningLevel: 'High'
- ${{ if eq(parameters.buildPipelineType, 'tests') }}:
- template: /scripts/azure-templates-github-status.yml@self

Просмотреть файл

@ -54,9 +54,10 @@ steps:
downloadType: 'single'
allowPartiallySucceededBuilds: true
artifactName: ${{ artifact.name }}
downloadPath: 'download-temp'
downloadPath: 'download-temp/${{ artifact.name }}'
- pwsh: |
Get-ChildItem '.\download-temp\'
New-Item '.\output\${{ artifact.dir }}\' -Type Directory -Force | Out-Null
Get-ChildItem '.\download-temp\${{ artifact.name }}\' | Copy-Item -Destination '.\output\${{ artifact.dir }}\' -Recurse -Force
Remove-Item '.\download-temp\${{ artifact.name }}\' -Recurse -Force

Просмотреть файл

@ -1,8 +1,9 @@
parameters:
artifactName: '' # the name of the artifact to merge this run into
buildExternals: '' # the build number to download externals from
buildPipelineType: 'both' # the type of build pipeline setup
vmImage: '' # the VM image
vmImage: '' # the configuration for the build agent
use1ESPipelineTemplates: false # whether or not we are building using the internal 1ES Pipeline Templates
sdl: [] # the SDL properties to use for this job
builds:
- name: ''
desc: ''
@ -24,11 +25,12 @@ jobs:
parameters:
name: ${{ replace(replace(format('native_linux_{0}_{1}_{2}_{3}_linux', item.arch, item.variant, build.name, item.alt), '__', '_'), '__', '_') }}
displayName: Linux ${{ replace(replace(replace(replace(replace(format('({0}|{1}|{2}|{3})', item.arch, item.variant, build.name, item.alt), '||', '|'), '||', '|'), '(|', '('), '|)', ')'), '|', ', ') }}
sdl: ${{ parameters.sdl }}
buildExternals: ${{ parameters.buildExternals }}
buildPipelineType: ${{ parameters.buildPipelineType }}
vmImage: ${{ parameters.vmImage }}
use1ESPipelineTemplates: ${{ parameters.use1ESPipelineTemplates }}
docker: ${{ item.docker }}
dockerArgs: ${{ item.dockerArgs }}
target: ${{ coalesce(item.target, 'externals-linux') }}
additionalArgs: --buildarch=${{ item.arch }} --variant=${{ coalesce(item.variant, 'linux') }}${{ build.name }} --gnArgs="\"${{ build.gnArgs }} ${{ item.gnArgs }}\"" ${{ build.additionalArgs }} ${{ item.additionalArgs }}
artifactName: ${{ parameters.artifactName }}

Просмотреть файл

@ -0,0 +1,53 @@
parameters:
name: '' # in the form type_platform_host
displayName: '' # the human name
dependsOn: [] # the dependiencies
vmImage: '' # the configuration for the build agent
buildPipelineType: 'both' # the type of build pipeline setup
requiredArtifacts: [] # the artifacts that this build needs to download
matrixArtifacts: [] # the artifacts that this build needs to download
sdl: [] # the SDL properties to use for this job
jobs:
- template: /scripts/azure-templates-bootstrapper.yml@self
parameters:
name: ${{ parameters.name }}
displayName: ${{ parameters.displayName }}
dependsOn: ${{ parameters.dependsOn }}
sdl: ${{ parameters.sdl }}
buildPipelineType: ${{ parameters.buildPipelineType }}
vmImage: ${{ parameters.vmImage }}
skipInstall: true
skipSteps: true
requiredArtifacts: ${{ parameters.requiredArtifacts }}
preBuildSteps:
- pwsh: az devops configure --defaults organization=$(System.TeamFoundationCollectionUri) project=$(System.TeamProject) --use-git-aliases true
displayName: Configure the az CLI tool
- ${{ each artifact in parameters.matrixArtifacts }}:
- pwsh: |
$artifactJson=@'
${{ artifact.jobs }}
'@
echo $artifactJson
$json = ConvertFrom-Json $artifactJson
$objects = $json | Get-Member -MemberType NoteProperty
$names = $objects | ForEach-Object { $json."$($_.Name)".name }
Write-Host "Found $($names.Length) items:"
$names | ForEach-Object { Write-Host " - $_" }
$dir = "$(Build.SourcesDirectory)/output"
New-Item "$dir" -Type Directory -Force | Out-Null
$id = "$(Build.BuildId)"
foreach ($name in $names) {
Write-Host "Downloading '$name'..."
az pipelines runs artifact download --artifact-name "$name" --path "$dir" --run-id "$id" --verbose
}
Write-Host "Downloads complete."
Get-ChildItem "$dir"
env:
AZURE_DEVOPS_EXT_PAT: $(System.AccessToken)
displayName: Download the pre-built ${{ artifact.name }} artifacts

Просмотреть файл

@ -19,7 +19,19 @@ parameters:
type: object
- name: VM_IMAGE_LINUX_NATIVE
type: object
- name: runCompliance
- name: sdl
type: object
default:
apiscan:
enabled: false
binskim:
break: false
spotBugs:
enabled: false
- name: use1ESPipelineTemplates
type: boolean
default: false
- name: enableSigning
type: boolean
default: false
@ -53,175 +65,175 @@ stages:
parameters:
name: native_android_x86_windows
displayName: Android x86
sdl: ${{ parameters.sdl }}
buildExternals: ${{ parameters.buildExternals }}
buildPipelineType: ${{ parameters.buildPipelineType }}
vmImage: ${{ parameters.VM_IMAGE_WINDOWS_NATIVE }}
target: externals-android
additionalArgs: --buildarch=x86
installWindowsSdk: false
artifactName: native
- template: /scripts/azure-templates-bootstrapper.yml@self # Build Native Android|x64 (Win)
parameters:
name: native_android_x64_windows
displayName: Android x64
sdl: ${{ parameters.sdl }}
buildExternals: ${{ parameters.buildExternals }}
buildPipelineType: ${{ parameters.buildPipelineType }}
vmImage: ${{ parameters.VM_IMAGE_WINDOWS_NATIVE }}
target: externals-android
additionalArgs: --buildarch=x64
installWindowsSdk: false
artifactName: native
- template: /scripts/azure-templates-bootstrapper.yml@self # Build Native Android|arm (Win)
parameters:
name: native_android_arm_windows
displayName: Android arm
sdl: ${{ parameters.sdl }}
buildExternals: ${{ parameters.buildExternals }}
buildPipelineType: ${{ parameters.buildPipelineType }}
vmImage: ${{ parameters.VM_IMAGE_WINDOWS_NATIVE }}
target: externals-android
additionalArgs: --buildarch=arm
installWindowsSdk: false
artifactName: native
- template: /scripts/azure-templates-bootstrapper.yml@self # Build Native Android|arm64 (Win)
parameters:
name: native_android_arm64_windows
displayName: Android arm64
sdl: ${{ parameters.sdl }}
buildExternals: ${{ parameters.buildExternals }}
buildPipelineType: ${{ parameters.buildPipelineType }}
vmImage: ${{ parameters.VM_IMAGE_WINDOWS_NATIVE }}
target: externals-android
additionalArgs: --buildarch=arm64
installWindowsSdk: false
artifactName: native
- template: /scripts/azure-templates-bootstrapper.yml@self # Build Native Tizen (Win)
parameters:
name: native_tizen_windows
displayName: Tizen
sdl: ${{ parameters.sdl }}
buildExternals: ${{ parameters.buildExternals }}
buildPipelineType: ${{ parameters.buildPipelineType }}
vmImage: ${{ parameters.VM_IMAGE_WINDOWS_NATIVE }}
target: externals-tizen
installWindowsSdk: false
artifactName: native
- template: /scripts/azure-templates-bootstrapper.yml@self # Build ANGLE UWP|x86 (Win)
parameters:
name: native_uwp_angle_x86_windows
displayName: ANGLE x86
sdl: ${{ parameters.sdl }}
buildExternals: ${{ parameters.buildExternals }}
buildPipelineType: ${{ parameters.buildPipelineType }}
vmImage: ${{ parameters.VM_IMAGE_WINDOWS_NATIVE }}
target: ANGLE
additionalArgs: -Script .\native\uwp\build.cake --buildarch=x86
artifactName: native
- template: /scripts/azure-templates-bootstrapper.yml@self # Build ANGLE UWP|x64 (Win)
parameters:
name: native_uwp_angle_x64_windows
displayName: ANGLE x64
sdl: ${{ parameters.sdl }}
buildExternals: ${{ parameters.buildExternals }}
buildPipelineType: ${{ parameters.buildPipelineType }}
vmImage: ${{ parameters.VM_IMAGE_WINDOWS_NATIVE }}
target: ANGLE
additionalArgs: -Script .\native\uwp\build.cake --buildarch=x64
artifactName: native
- template: /scripts/azure-templates-bootstrapper.yml@self # Build ANGLE UWP|arm (Win)
parameters:
name: native_uwp_angle_arm_windows
displayName: ANGLE arm
sdl: ${{ parameters.sdl }}
buildExternals: ${{ parameters.buildExternals }}
buildPipelineType: ${{ parameters.buildPipelineType }}
vmImage: ${{ parameters.VM_IMAGE_WINDOWS_NATIVE }}
target: ANGLE
additionalArgs: -Script .\native\uwp\build.cake --buildarch=arm
artifactName: native
- template: /scripts/azure-templates-bootstrapper.yml@self # Build ANGLE UWP|arm64 (Win)
parameters:
name: native_uwp_angle_arm64_windows
displayName: ANGLE arm64
sdl: ${{ parameters.sdl }}
buildExternals: ${{ parameters.buildExternals }}
buildPipelineType: ${{ parameters.buildPipelineType }}
vmImage: ${{ parameters.VM_IMAGE_WINDOWS_NATIVE }}
target: ANGLE
additionalArgs: -Script .\native\uwp\build.cake --buildarch=arm64
artifactName: native
- template: /scripts/azure-templates-bootstrapper.yml@self # Build Native UWP|x86 (Win)
parameters:
name: native_uwp_x86_windows
displayName: UWP x86
sdl: ${{ parameters.sdl }}
buildExternals: ${{ parameters.buildExternals }}
buildPipelineType: ${{ parameters.buildPipelineType }}
vmImage: ${{ parameters.VM_IMAGE_WINDOWS_NATIVE }}
target: externals-uwp
additionalArgs: --buildarch=x86 --skipAngle=true
artifactName: native
- template: /scripts/azure-templates-bootstrapper.yml@self # Build Native UWP|x64 (Win)
parameters:
name: native_uwp_x64_windows
displayName: UWP x64
sdl: ${{ parameters.sdl }}
buildExternals: ${{ parameters.buildExternals }}
vmImage: ${{ parameters.VM_IMAGE_WINDOWS_NATIVE }}
target: externals-uwp
additionalArgs: --buildarch=x64 --skipAngle=true
artifactName: native
- template: /scripts/azure-templates-bootstrapper.yml@self # Build Native UWP|arm (Win)
parameters:
name: native_uwp_arm_windows
displayName: UWP arm
sdl: ${{ parameters.sdl }}
buildExternals: ${{ parameters.buildExternals }}
buildPipelineType: ${{ parameters.buildPipelineType }}
vmImage: ${{ parameters.VM_IMAGE_WINDOWS_NATIVE }}
target: externals-uwp
additionalArgs: --buildarch=arm --skipAngle=true
artifactName: native
- template: /scripts/azure-templates-bootstrapper.yml@self # Build Native UWP|arm64 (Win)
parameters:
name: native_uwp_arm64_windows
displayName: UWP arm64
sdl: ${{ parameters.sdl }}
buildExternals: ${{ parameters.buildExternals }}
buildPipelineType: ${{ parameters.buildPipelineType }}
vmImage: ${{ parameters.VM_IMAGE_WINDOWS_NATIVE }}
target: externals-uwp
additionalArgs: --buildarch=arm64 --skipAngle=true
artifactName: native
- template: /scripts/azure-templates-bootstrapper.yml@self # Build Native Win32|x86 (Win)
parameters:
name: native_win32_x86_windows
displayName: Win32 x86
sdl: ${{ parameters.sdl }}
buildExternals: ${{ parameters.buildExternals }}
buildPipelineType: ${{ parameters.buildPipelineType }}
vmImage: ${{ parameters.VM_IMAGE_WINDOWS_NATIVE }}
target: externals-windows
additionalArgs: --buildarch=x86
artifactName: native
- template: /scripts/azure-templates-bootstrapper.yml@self # Build Native Win32|x64 (Win)
parameters:
name: native_win32_x64_windows
displayName: Win32 x64
sdl: ${{ parameters.sdl }}
buildExternals: ${{ parameters.buildExternals }}
buildPipelineType: ${{ parameters.buildPipelineType }}
vmImage: ${{ parameters.VM_IMAGE_WINDOWS_NATIVE }}
target: externals-windows
additionalArgs: --buildarch=x64
artifactName: native
- template: /scripts/azure-templates-bootstrapper.yml@self # Build Native Win32|arm64 (Win)
parameters:
name: native_win32_arm64_windows
displayName: Win32 arm64
sdl: ${{ parameters.sdl }}
buildExternals: ${{ parameters.buildExternals }}
buildPipelineType: ${{ parameters.buildPipelineType }}
vmImage: ${{ parameters.VM_IMAGE_WINDOWS_NATIVE }}
target: externals-windows
additionalArgs: --buildarch=arm64
artifactName: native
- template: /scripts/azure-templates-bootstrapper.yml@self # Build Native NanoServer|x64 (Win)
parameters:
name: native_win32_x64_nanoserver_windows
displayName: Nano Server x64
sdl: ${{ parameters.sdl }}
buildExternals: ${{ parameters.buildExternals }}
buildPipelineType: ${{ parameters.buildPipelineType }}
vmImage: ${{ parameters.VM_IMAGE_WINDOWS_NATIVE }}
target: externals-nanoserver
additionalArgs: --buildarch=x64
artifactName: native
- ${{ if ne(parameters.buildPipelineType, 'tests') }}:
- stage: native_macos
@ -232,6 +244,7 @@ stages:
parameters:
name: native_android_x86_macos
displayName: Android x86
sdl: ${{ parameters.sdl }}
buildExternals: ${{ parameters.buildExternals }}
buildPipelineType: ${{ parameters.buildPipelineType }}
vmImage: ${{ parameters.VM_IMAGE_MAC_NATIVE }}
@ -241,6 +254,7 @@ stages:
parameters:
name: native_android_x64_macos
displayName: Android x64
sdl: ${{ parameters.sdl }}
buildExternals: ${{ parameters.buildExternals }}
buildPipelineType: ${{ parameters.buildPipelineType }}
vmImage: ${{ parameters.VM_IMAGE_MAC_NATIVE }}
@ -250,6 +264,7 @@ stages:
parameters:
name: native_android_arm_macos
displayName: Android arm
sdl: ${{ parameters.sdl }}
buildExternals: ${{ parameters.buildExternals }}
buildPipelineType: ${{ parameters.buildPipelineType }}
vmImage: ${{ parameters.VM_IMAGE_MAC_NATIVE }}
@ -259,6 +274,7 @@ stages:
parameters:
name: native_android_arm64_macos
displayName: Android arm64
sdl: ${{ parameters.sdl }}
buildExternals: ${{ parameters.buildExternals }}
buildPipelineType: ${{ parameters.buildPipelineType }}
vmImage: ${{ parameters.VM_IMAGE_MAC_NATIVE }}
@ -268,38 +284,38 @@ stages:
parameters:
name: native_ios_macos
displayName: iOS
sdl: ${{ parameters.sdl }}
buildExternals: ${{ parameters.buildExternals }}
buildPipelineType: ${{ parameters.buildPipelineType }}
vmImage: ${{ parameters.VM_IMAGE_MAC_NATIVE }}
target: externals-ios
artifactName: native
- template: /scripts/azure-templates-bootstrapper.yml@self # Build Native Mac Catalyst (macOS)
parameters:
name: native_maccatalyst_macos
displayName: Mac Catalyst
sdl: ${{ parameters.sdl }}
buildExternals: ${{ parameters.buildExternals }}
buildPipelineType: ${{ parameters.buildPipelineType }}
vmImage: ${{ parameters.VM_IMAGE_MAC_NATIVE }}
target: externals-maccatalyst
artifactName: native
- template: /scripts/azure-templates-bootstrapper.yml@self # Build Native macOS (macOS)
parameters:
name: native_macos_macos
displayName: macOS
sdl: ${{ parameters.sdl }}
buildExternals: ${{ parameters.buildExternals }}
buildPipelineType: ${{ parameters.buildPipelineType }}
vmImage: ${{ parameters.VM_IMAGE_MAC_NATIVE }}
target: externals-macos
artifactName: native
- template: /scripts/azure-templates-bootstrapper.yml@self # Build Native tvOS (macOS)
parameters:
name: native_tvos_macos
displayName: tvOS
sdl: ${{ parameters.sdl }}
buildExternals: ${{ parameters.buildExternals }}
buildPipelineType: ${{ parameters.buildPipelineType }}
vmImage: ${{ parameters.VM_IMAGE_MAC_NATIVE }}
target: externals-tvos
artifactName: native
- template: /scripts/azure-templates-bootstrapper.yml@self # Build Native watchOS (macOS)
parameters:
name: native_watchos_macos
@ -308,11 +324,11 @@ stages:
buildPipelineType: ${{ parameters.buildPipelineType }}
vmImage: ${{ parameters.VM_IMAGE_MAC_NATIVE }}
target: externals-watchos
artifactName: native
- template: /scripts/azure-templates-bootstrapper.yml@self # Build Native Tizen (macOS)
parameters:
name: native_tizen_macos
displayName: Tizen
sdl: ${{ parameters.sdl }}
buildExternals: ${{ parameters.buildExternals }}
buildPipelineType: ${{ parameters.buildPipelineType }}
vmImage: ${{ parameters.VM_IMAGE_MAC_NATIVE }}
@ -326,10 +342,11 @@ stages:
jobs:
- template: /scripts/azure-templates-linux-matrix.yml@self # Build Native Linux (Linux)
parameters:
artifactName: native
sdl: ${{ parameters.sdl }}
buildExternals: ${{ parameters.buildExternals }}
buildPipelineType: ${{ parameters.buildPipelineType }}
vmImage: ${{ parameters.VM_IMAGE_LINUX_NATIVE }}
use1ESPipelineTemplates: ${{ parameters.use1ESPipelineTemplates }}
builds:
- name: ''
- name: nodeps
@ -366,10 +383,11 @@ stages:
jobs:
- template: /scripts/azure-templates-wasm-matrix.yml@self # Build Native WASM (Linux)
parameters:
sdl: ${{ parameters.sdl }}
buildExternals: ${{ parameters.buildExternals }}
buildPipelineType: ${{ parameters.buildPipelineType }}
vmImage: ${{ parameters.VM_IMAGE_LINUX_NATIVE }}
artifactName: native
use1ESPipelineTemplates: ${{ parameters.use1ESPipelineTemplates }}
emscripten:
- 2.0.6:
displayName: 2.0.6
@ -423,18 +441,86 @@ stages:
features: _wasmeh,simd,mt
- ${{ if ne(parameters.buildPipelineType, 'tests') }}:
- stage: managed
displayName: Build Managed
- stage: native
displayName: Native
variables:
nativeLinuxJobs: $[ convertToJson(stageDependencies.native_linux) ]
nativeWasmJobs: $[ convertToJson(stageDependencies.native_wasm) ]
dependsOn:
- native_windows
- native_macos
- native_linux
- native_wasm
jobs:
- template: /scripts/azure-templates-merger.yml@self # Merge Native Artifacts
parameters:
name: native
displayName: Merge Native Artifacts
sdl: ${{ parameters.sdl }}
buildPipelineType: ${{ parameters.buildPipelineType }}
vmImage: ${{ parameters.VM_IMAGE_HOST }}
requiredArtifacts:
# Android
- name: native_android_x86_windows
- name: native_android_x64_windows
- name: native_android_arm_windows
- name: native_android_arm64_windows
# Tizen
- name: native_tizen_windows
# UWP
- name: native_uwp_angle_x86_windows
- name: native_uwp_angle_x64_windows
- name: native_uwp_angle_arm_windows
- name: native_uwp_angle_arm64_windows
- name: native_uwp_x86_windows
- name: native_uwp_x64_windows
- name: native_uwp_arm_windows
- name: native_uwp_arm64_windows
# Win32
- name: native_win32_x86_windows
- name: native_win32_x64_windows
- name: native_win32_arm64_windows
# Nano Server
- name: native_win32_x64_nanoserver_windows
# iOS
- name: native_ios_macos
# Mac Catalyst
- name: native_maccatalyst_macos
# macOS
- name: native_macos_macos
# tvOS
- name: native_tvos_macos
# tvOS
- name: native_watchos_macos
matrixArtifacts:
- name: native_linux
jobs: $(nativeLinuxJobs)
- name: native_wasm
jobs: $(nativeWasmJobs)
- template: /scripts/azure-templates-merger.yml@self # Merge Native WASM Artifacts
parameters:
name: native_wasm_linux
displayName: Merge Native WASM Artifacts
sdl: ${{ parameters.sdl }}
buildPipelineType: ${{ parameters.buildPipelineType }}
vmImage: ${{ parameters.VM_IMAGE_HOST }}
matrixArtifacts:
- name: native_wasm
jobs: $(nativeWasmJobs)
- ${{ if ne(parameters.buildPipelineType, 'tests') }}:
- stage: managed
displayName: Build Managed
${{ if eq(parameters.buildPipelineType, 'tests') }}:
dependsOn: prepare
${{ if eq(parameters.buildPipelineType, 'both') }}:
dependsOn: native
jobs:
- template: /scripts/azure-templates-bootstrapper.yml@self # Build Managed .NET Framework (Windows)
parameters:
name: managed_netfx_windows
displayName: Managed .NET Framework (Windows)
sdl: ${{ parameters.sdl }}
buildPipelineType: ${{ parameters.buildPipelineType }}
vmImage: ${{ parameters.VM_IMAGE_WINDOWS}}
target: libs
@ -442,7 +528,6 @@ stages:
installPreviewVs: true
requiredArtifacts:
- name: native
artifactName: managed
postBuildSteps:
- pwsh: Remove-Item ./output/native/ -Recurse -Force -ErrorAction Continue
displayName: Delete the native folder
@ -450,6 +535,7 @@ stages:
parameters:
name: managed_net_windows
displayName: Managed .NET (Windows)
sdl: ${{ parameters.sdl }}
buildPipelineType: ${{ parameters.buildPipelineType }}
vmImage: ${{ parameters.VM_IMAGE_WINDOWS}}
target: libs
@ -457,7 +543,6 @@ stages:
installPreviewVs: true
requiredArtifacts:
- name: native
artifactName: managed
postBuildSteps:
- pwsh: Remove-Item ./output/native/ -Recurse -Force -ErrorAction Continue
displayName: Delete the native folder
@ -465,13 +550,13 @@ stages:
parameters:
name: managed_macos
displayName: Managed (macOS)
sdl: ${{ parameters.sdl }}
buildPipelineType: ${{ parameters.buildPipelineType }}
vmImage: ${{ parameters.VM_IMAGE_MAC }}
target: libs
additionalArgs: --skipExternals="all"
requiredArtifacts:
- name: native
artifactName: managed
postBuildSteps:
- pwsh: Remove-Item ./output/native/ -Recurse -Force -ErrorAction Continue
displayName: Delete the native folder
@ -479,6 +564,7 @@ stages:
parameters:
name: managed_linux
displayName: Managed (Linux)
sdl: ${{ parameters.sdl }}
buildPipelineType: ${{ parameters.buildPipelineType }}
vmImage: ${{ parameters.VM_IMAGE_LINUX }}
packages: $(MANAGED_LINUX_PACKAGES)
@ -486,10 +572,26 @@ stages:
additionalArgs: --skipExternals="all"
requiredArtifacts:
- name: native
artifactName: managed
postBuildSteps:
- pwsh: Remove-Item ./output/native/ -Recurse -Force -ErrorAction Continue
displayName: Delete the native folder
- template: /scripts/azure-templates-merger.yml@self # Merge Managed Artifacts
parameters:
name: managed
displayName: Merge Managed Artifacts
sdl: ${{ parameters.sdl }}
dependsOn:
- managed_netfx_windows
- managed_net_windows
- managed_macos
- managed_linux
buildPipelineType: ${{ parameters.buildPipelineType }}
vmImage: ${{ parameters.VM_IMAGE_HOST }}
requiredArtifacts:
- name: managed_netfx_windows
- name: managed_net_windows
- name: managed_macos
- name: managed_linux
- ${{ if ne(parameters.buildPipelineType, 'tests') }}:
- stage: package
@ -500,10 +602,12 @@ stages:
parameters:
name: package_windows
displayName: Package NuGets
sdl: ${{ parameters.sdl }}
buildPipelineType: ${{ parameters.buildPipelineType }}
vmImage: ${{ parameters.VM_IMAGE_WINDOWS}}
target: nuget
additionalArgs: --packall=true --skipbuild=true
shouldPublish: false
installWindowsSdk: false
installAndroidSdk: false
installDotNet: false
@ -511,32 +615,42 @@ stages:
- name: managed
- name: native
postBuildSteps:
- task: PublishBuildArtifacts@1
displayName: Publish the nuget artifacts
inputs:
artifactName: nuget
pathToPublish: 'output/nugets'
- task: PublishBuildArtifacts@1
displayName: Publish the special nuget artifacts
inputs:
artifactName: nuget_special
pathToPublish: 'output/nugets-special'
- task: PublishBuildArtifacts@1
displayName: Publish the special nuget artifacts
inputs:
artifactName: nuget_symbols
pathToPublish: 'output/nugets-symbols'
- task: PublishBuildArtifacts@1
displayName: Publish the SignList.xml into nuget artifacts
inputs:
artifactName: nuget
pathToPublish: 'SignList.xml'
- pwsh: |
Remove-Item ./output/native/ -Recurse -Force
Remove-Item ./output/nugets/ -Recurse -Force
Remove-Item ./output/nugets-special/ -Recurse -Force
Remove-Item ./output/nugets-symbols/ -Recurse -Force
displayName: Delete the pre-published folders
Remove-Item ./output/native/ -Recurse -Force -ErrorAction Continue
Move-Item -Path '.\output\' -Destination '$(Build.ArtifactStagingDirectory)\output\'
New-Item '.\output\' -Type Directory -Force | Out-Null
displayName: Re-organize the output folder for publishing
- pwsh: |
Move-Item -Path '$(Build.ArtifactStagingDirectory)\output\nugets\' -Destination '.\output\'
Copy-Item -Path '.\scripts\SignList.xml' -Destination '.\output\nugets\'
displayName: Prepare the nugets artifact for publishing
- pwsh: |
Move-Item -Path '$(Build.ArtifactStagingDirectory)\output\nugets-symbols\' -Destination '.\output\'
displayName: Prepare the nugets-symbols artifact for publishing
- pwsh: |
$nupkgs = (Get-ChildItem ".\output\nugets*\*.*nupkg")
foreach ($nupkg in $nupkgs) {
$filename = $nupkg.Name.TrimEnd('.nupkg')
$dest = ".\output\extracted_nugets\$filename"
Write-Host "Extracting '$nupkg' to '$dest'..."
Expand-Archive $nupkg $dest
}
displayName: Extract all the .nupkg files for scanning
- pwsh: |
Move-Item -Path '$(Build.ArtifactStagingDirectory)\output\nugets-special\' -Destination '.\output\'
displayName: Prepare the nugets-special artifact for publishing
- pwsh: |
Move-Item -Path '$(Build.ArtifactStagingDirectory)\output\' -Destination '.\output\'
displayName: Prepare the build artifact for publishing
publishArtifacts:
- name: package_windows
path: '.\output\output\'
- name: nuget
path: '.\output\nugets'
- name: nuget_special
path: '.\output\nugets-special'
- name: nuget_symbols
path: '.\output\nugets-symbols'
- ${{ if ne(parameters.buildPipelineType, 'build') }}:
- stage: api_diff
@ -562,15 +676,12 @@ stages:
preBuildSteps:
- pwsh: .\scripts\install-gtk.ps1
displayName: Install GTK# 2.12
postBuildSteps:
- task: PublishBuildArtifacts@1
displayName: Publish the API diffs
condition: always()
inputs:
artifactName: api-diff
pathToPublish: '$(Build.SourcesDirectory)\output\api-diff'
publishArtifacts:
- name: api-diff
always: true
path: '$(Build.SourcesDirectory)\output\api-diff'
- ${{ if and(eq(variables['System.TeamProject'], 'devdiv'), ne(parameters.buildPipelineType, 'tests'), ne(variables['System.PullRequest.IsFork'], 'true')) }}:
- ${{ if eq(parameters.enableSigning, 'true') }}:
- stage: signing
displayName: Sign NuGets
dependsOn: package
@ -581,17 +692,8 @@ stages:
signType: 'Real'
${{ if not(or(eq(variables['Build.SourceBranch'], 'refs/heads/main'), startsWith(variables['Build.SourceBranch'], 'refs/heads/release/'))) }}:
signType: 'Test'
- ${{ if and(eq(variables['System.TeamProject'], 'devdiv'), ne(parameters.buildPipelineType, 'tests'), ne(variables['System.PullRequest.IsFork'], 'true')) }}:
- stage: sbom
displayName: 'Software Bill of Materials'
dependsOn: signing
jobs:
- template: compliance/sbom/job.v1.yml@xamarin-templates # Software Bill of Materials (SBOM): https://eng.ms/docs/cloud-ai-platform/devdiv/one-engineering-system-1es/1es-docs/secure-supply-chain/ado-sbom-generator
parameters:
artifactNames: ['nuget']
packageName: 'SkiaSharp'
packageFilter: '*.nupkg'
use1ESTemplate: ${{ parameters.use1ESPipelineTemplates }}
usePipelineArtifactTasks: true
- ${{ if ne(parameters.buildPipelineType, 'build') }}:
- stage: tests
@ -599,11 +701,7 @@ stages:
${{ if eq(parameters.buildPipelineType, 'tests') }}:
dependsOn: prepare
${{ if eq(parameters.buildPipelineType, 'both') }}:
dependsOn:
- native_windows
- native_macos
- native_linux
- native_wasm
dependsOn: native
jobs:
- template: /scripts/azure-templates-bootstrapper.yml@self # Tests|netfx (Windows)
parameters:
@ -619,6 +717,7 @@ stages:
requiredArtifacts:
- name: native_win32_x86_windows
- name: native_win32_x64_windows
- name: native_win32_arm64_windows
postBuildSteps:
- task: PublishTestResults@2
displayName: Publish the .NET Framework test results
@ -640,6 +739,7 @@ stages:
requiredArtifacts:
- name: native_win32_x86_windows
- name: native_win32_x64_windows
- name: native_win32_arm64_windows
postBuildSteps:
- task: PublishTestResults@2
displayName: Publish the .NET Core test results
@ -648,11 +748,9 @@ stages:
testResultsFormat: xUnit
testResultsFiles: 'tests/SkiaSharp*.NetCore.Tests/**/TestResults.xml'
testRunTitle: 'Windows .NET Core Tests'
- task: PublishBuildArtifacts@1
displayName: 'Publish the code coverage results'
inputs:
artifactName: coverage_netcore_windows
pathToPublish: 'output/coverage'
publishArtifacts:
- name: coverage_netcore_windows
path: 'output/coverage'
- template: /scripts/azure-templates-bootstrapper.yml@self # Tests|netfx (macOS)
parameters:
name: tests_netfx_macos
@ -691,11 +789,9 @@ stages:
testResultsFormat: xUnit
testResultsFiles: 'tests/SkiaSharp*.NetCore.Tests/**/TestResults.xml'
testRunTitle: 'macOS .NET Core Tests'
- task: PublishBuildArtifacts@1
displayName: 'Publish the code coverage results'
inputs:
artifactName: coverage_netcore_macos
pathToPublish: 'output/coverage'
publishArtifacts:
- name: coverage_netcore_macos
path: 'output/coverage'
- template: /scripts/azure-templates-bootstrapper.yml@self # Tests|android (macOS)
parameters:
name: tests_android_macos
@ -723,12 +819,10 @@ stages:
testResultsFormat: xUnit
testResultsFiles: 'output/logs/testlogs/SkiaSharp.Android.Tests/**/TestResults.xml'
testRunTitle: 'Android Tests'
- task: PublishBuildArtifacts@1
displayName: Publish the test logs
condition: always()
inputs:
artifactName: testlogs_android
pathToPublish: 'output/logs/testlogs'
publishArtifacts:
- name: testlogs_android
always: true
path: 'output/logs/testlogs'
- template: /scripts/azure-templates-bootstrapper.yml@self # Tests|ios (macOS)
parameters:
name: tests_ios_macos
@ -750,12 +844,10 @@ stages:
testResultsFormat: xUnit
testResultsFiles: 'output/logs/testlogs/SkiaSharp.iOS.Tests/**/TestResults.xml'
testRunTitle: 'iOS Tests'
- task: PublishBuildArtifacts@1
displayName: Publish the test logs
condition: always()
inputs:
artifactName: testlogs_ios
pathToPublish: 'output/logs/testlogs'
publishArtifacts:
- name: testlogs_ios
always: true
path: 'output/logs/testlogs'
- template: /scripts/azure-templates-bootstrapper.yml@self # Tests|netfx (Linux)
parameters:
name: tests_netfx_linux
@ -768,6 +860,7 @@ stages:
shouldPublish: false
requiredArtifacts:
- name: native_linux_x64_linux
- name: native_linux_arm64_linux
postBuildSteps:
- task: PublishTestResults@2
displayName: Publish the Mono test results
@ -788,6 +881,7 @@ stages:
shouldPublish: false
requiredArtifacts:
- name: native_linux_x64_linux
- name: native_linux_arm64_linux
postBuildSteps:
- task: PublishTestResults@2
displayName: Publish the .NET Core test results
@ -796,11 +890,9 @@ stages:
testResultsFormat: xUnit
testResultsFiles: 'tests/SkiaSharp*.NetCore.Tests/**/TestResults.xml'
testRunTitle: 'Linux .NET Core Tests'
- task: PublishBuildArtifacts@1
displayName: 'Publish the code coverage results'
inputs:
artifactName: coverage_netcore_linux
pathToPublish: 'output/coverage'
publishArtifacts:
- name: coverage_netcore_linux
path: 'output/coverage'
- template: /scripts/azure-templates-bootstrapper.yml@self # Tests [WASM] (Linux)
parameters:
name: tests_wasm_linux
@ -913,33 +1005,50 @@ stages:
installEmsdk: true
initScript: source ~/emsdk/emsdk_env.sh
- ${{ if and(eq(variables['System.TeamProject'], 'devdiv'), ne(parameters.buildPipelineType, 'tests'), ne(variables['System.PullRequest.IsFork'], 'true'), or(and(eq(variables['Build.Reason'], 'Schedule'), or(eq(variables['Build.SourceBranch'], 'refs/heads/main'), startsWith(variables['Build.SourceBranch'], 'refs/heads/release/'))), parameters.runCompliance)) }}:
- template: security/full/v1.yml@xamarin-templates
- ${{ if eq(parameters.sdl.apiscan.enabled, 'true') }}:
- template: security/apiscan/v0.yml@xamarin-templates
parameters:
stageDependsOn:
- managed
- native_windows
- native_macos
- native_linux
- native_wasm
complianceEnabled: true
complianceTimeoutInMinutes: 480
- package
timeoutInMinutes: 480
windowsPoolName: ${{ parameters.VM_IMAGE_HOST.pool.name }}
windowsImageOverride: ${{ parameters.VM_IMAGE_HOST.pool.image }}
scanArtifacts:
- managed
- native
antiMalwareEnabled: true
binSkimEnabled: true
policheckExclusionFile: $(Build.SourcesDirectory)\scripts\guardian\PoliCheckExclusions.xml
policheckGdnSuppressionFilesFolder: $(Build.SourcesDirectory)\scripts\guardian
credScanEnabled: true
credScanSuppressionFile: $(Build.SourcesDirectory)\scripts\guardian\CredScanSuppressions.json
sourceGdnSuppressionFile: $(Build.SourcesDirectory)\scripts\guardian\source.gdnsuppress
tsaConfigFile: $(Build.SourcesDirectory)\scripts\guardian\tsaoptions-v2.json
tsaReportBranch: $(Build.SourceBranch)
enableCodeInspector: true
apiScanEnabled: true
- nuget
- nuget_symbols
apiScanSoftwareName: 'SkiaSharp'
apiScanSoftwareVersionNum: $(Build.BuildNumber)
apiScanSoftwareVersionNum: $(SKIASHARP_MAJOR_VERSION)
apiScanPreserveLogsFolder: true
apiScanAuthConnectionString: 'runAs=App;AppId=$(ApiScanClientId)'
apiScanSurrogateConfigurationFolder: $(Build.ArtifactStagingDirectory)\APIScanSurrogates
preScanSteps:
- pwsh: |
$nupkgs = (Get-ChildItem "$(Build.ArtifactStagingDirectory)\binaries-to-scan\*\*.*nupkg")
foreach ($nupkg in $nupkgs) {
$filename = $nupkg.Name.TrimEnd('.nupkg')
$dest = "$(Build.ArtifactStagingDirectory)\binaries-to-scan\nuget_symbols-extracted\$filename"
Write-Host "Extracting '$nupkg' to '$dest'..."
Expand-Archive $nupkg $dest
Remove-Item $nupkg
}
displayName: Extract all the .nupkg files
- pwsh: |
$softwareFolder = "$(Build.ArtifactStagingDirectory)\binaries-to-scan"
$surrogateFile = "$(Build.SourcesDirectory)\scripts\guardian\APIScanSurrogates.in.xml"
$destFolder = "$(Build.ArtifactStagingDirectory)\APIScanSurrogates"
$destFile = "$destFolder\APIScanSurrogates.xml"
New-Item -ItemType Directory -Force -Path $destFolder | Out-Null
$surrogateContents = (Get-Content $surrogateFile)
$surrogateContents = $surrogateContents.Replace("{SOFTWARE_FOLDER}", $softwareFolder)
$nuspecs = (Get-ChildItem "$(Build.ArtifactStagingDirectory)\binaries-to-scan\nuget_symbols-extracted\*\*.nuspec")
foreach ($nuspec in $nuspecs) {
[xml] $nuspecContent = (Get-Content $nuspec)
$nuspecId = $nuspecContent.package.metadata.id
$nuspecVersion = $nuspecContent.package.metadata.version
$surrogateContents = $surrogateContents.Replace("{$nuspecId}", "$nuspecId.$nuspecVersion", 'InvariantCultureIgnoreCase')
}
$surrogateContents | Set-Content $destFile
displayName: Generate the surrogate files
- ${{ if eq(parameters.buildPipelineType, 'tests') }}:
- stage: finalize

Просмотреть файл

@ -1,8 +1,9 @@
parameters:
artifactName: '' # the name of the artifact to merge this run into
buildExternals: '' # the build number to download externals from
buildPipelineType: false
vmImage: '' # the VM image
buildPipelineType: 'both' # the type of build pipeline setup
vmImage: '' # the configuration for the build agent
use1ESPipelineTemplates: false # whether or not we are building using the internal 1ES Pipeline Templates
sdl: [] # the SDL properties to use for this job
emscripten: [ ]
jobs:
@ -11,17 +12,12 @@ jobs:
parameters:
name: native_wasm_${{ replace(version.displayName, '.', '_') }}_linux
displayName: WASM (${{ version.displayName }})
sdl: ${{ parameters.sdl }}
buildExternals: ${{ parameters.buildExternals }}
buildPipelineType: ${{ parameters.buildPipelineType }}
vmImage: ${{ parameters.vmImage }}
use1ESPipelineTemplates: ${{ parameters.use1ESPipelineTemplates }}
docker: scripts/Docker/wasm
target: externals-wasm
dockerArgs: --build-arg EMSCRIPTEN_VERSION=${{ version.version }}
additionalArgs: --emscriptenVersion=${{ version.version }} --emscriptenFeatures="${{ version.features }}"
artifactName: ${{ parameters.artifactName }}
postBuildSteps:
- task: PublishBuildArtifacts@1
displayName: Publish the native_wasm_linux artifacts
inputs:
artifactName: native_wasm_linux
pathToPublish: 'output'
additionalArgs: --emscriptenVersion=${{ version.version }} --emscriptenFeatures="${{ version.features }}"

Просмотреть файл

@ -0,0 +1,106 @@
<?xml version="1.0" encoding="utf-8"?>
<APIScanSurrogates>
<Mappings>
<!-- Win32 Clang to MSVC -->
<Mapping>
<SurrogateSet>
<BinarySet>
<SymbolLocations>
<SymbolLocation>{SOFTWARE_FOLDER}</SymbolLocation>
<SymbolLocation>SRV*https://symweb</SymbolLocation>
</SymbolLocations>
<Binary path="{SOFTWARE_FOLDER}\nuget_symbols-extracted\{skiasharp.nativeassets.uwp}\runtimes\win10-x86\nativeassets\uap10.0\libskiasharp.dll" />
</BinarySet>
</SurrogateSet>
<Targets>
<Binary path=".*\\nuget_symbols-extracted\\skiasharp\.nativeassets\.win32.*\\runtimes\\win-x86\\native\\libskiasharp\.dll" pathType="Regex" />
</Targets>
</Mapping>
<Mapping>
<SurrogateSet>
<BinarySet>
<SymbolLocations>
<SymbolLocation>{SOFTWARE_FOLDER}</SymbolLocation>
<SymbolLocation>SRV*https://symweb</SymbolLocation>
</SymbolLocations>
<Binary path="{SOFTWARE_FOLDER}\nuget_symbols-extracted\{skiasharp.nativeassets.uwp}\runtimes\win10-x64\nativeassets\uap10.0\libskiasharp.dll" />
</BinarySet>
</SurrogateSet>
<Targets>
<Binary path=".*\\nuget_symbols-extracted\\skiasharp\.nativeassets\.win32.*\\runtimes\\win-x64\\native\\libskiasharp\.dll" pathType="Regex" />
</Targets>
</Mapping>
<!-- ARM* to x64 -->
<Mapping>
<SurrogateSet>
<BinarySet>
<SymbolLocations>
<SymbolLocation>{SOFTWARE_FOLDER}</SymbolLocation>
<SymbolLocation>SRV*https://symweb</SymbolLocation>
</SymbolLocations>
<Binary path="{SOFTWARE_FOLDER}\nuget_symbols-extracted\{skiasharp.nativeassets.uwp}\runtimes\win10-x64\nativeassets\uap10.0\zlib1.dll" />
</BinarySet>
</SurrogateSet>
<Targets>
<Binary path=".*\\nuget_symbols-extracted\\skiasharp\.nativeassets\.uwp.*\\runtimes\\win10-arm.*\\nativeassets\\uap10\.0\\zlib1\.dll" pathType="Regex" />
</Targets>
</Mapping>
<Mapping>
<SurrogateSet>
<BinarySet>
<SymbolLocations>
<SymbolLocation>{SOFTWARE_FOLDER}</SymbolLocation>
<SymbolLocation>SRV*https://symweb</SymbolLocation>
</SymbolLocations>
<Binary path="{SOFTWARE_FOLDER}\nuget_symbols-extracted\{harfbuzzsharp.nativeassets.uwp}\runtimes\win10-x64\nativeassets\uap10.0\libharfbuzzsharp.dll" />
</BinarySet>
</SurrogateSet>
<Targets>
<Binary path=".*\\nuget_symbols-extracted\\harfbuzzsharp\.nativeassets\.uwp.*\\runtimes\\win10-arm.*\\nativeassets\\uap10\.0\\libharfbuzzsharp\.dll" pathType="Regex" />
</Targets>
</Mapping>
<Mapping>
<SurrogateSet>
<BinarySet>
<SymbolLocations>
<SymbolLocation>{SOFTWARE_FOLDER}</SymbolLocation>
<SymbolLocation>SRV*https://symweb</SymbolLocation>
</SymbolLocations>
<Binary path="{SOFTWARE_FOLDER}\nuget_symbols-extracted\{harfbuzzsharp.nativeassets.uwp}\runtimes\win10-x64\nativeassets\uap10.0\libharfbuzzsharp.dll" />
</BinarySet>
</SurrogateSet>
<Targets>
<Binary path=".*\\nuget_symbols-extracted\\harfbuzzsharp\.nativeassets\.win32.*\\runtimes\\win-arm.*\\native\\libharfbuzzsharp\.dll" pathType="Regex" />
</Targets>
</Mapping>
<!-- NanoServer Clang to MSVC -->
<Mapping>
<SurrogateSet>
<BinarySet>
<SymbolLocations>
<SymbolLocation>{SOFTWARE_FOLDER}</SymbolLocation>
<SymbolLocation>SRV*https://symweb</SymbolLocation>
</SymbolLocations>
<Binary path="{SOFTWARE_FOLDER}\nuget_symbols-extracted\{skiasharp.nativeassets.uwp}\runtimes\win10-x86\nativeassets\uap10.0\libskiasharp.dll" />
</BinarySet>
</SurrogateSet>
<Targets>
<Binary path=".*\\nuget_symbols-extracted\\skiasharp\.nativeassets\.nanoserver.*\\runtimes\\win-x86\\native\\libskiasharp\.dll" pathType="Regex" />
</Targets>
</Mapping>
<Mapping>
<SurrogateSet>
<BinarySet>
<SymbolLocations>
<SymbolLocation>{SOFTWARE_FOLDER}</SymbolLocation>
<SymbolLocation>SRV*https://symweb</SymbolLocation>
</SymbolLocations>
<Binary path="{SOFTWARE_FOLDER}\nuget_symbols-extracted\{skiasharp.nativeassets.uwp}\runtimes\win10-x64\nativeassets\uap10.0\libskiasharp.dll" />
</BinarySet>
</SurrogateSet>
<Targets>
<Binary path=".*\\nuget_symbols-extracted\\skiasharp\.nativeassets\.nanoserver.*\\runtimes\\win-x64\\native\\libskiasharp\.dll" pathType="Regex" />
</Targets>
</Mapping>
</Mappings>
</APIScanSurrogates>

Просмотреть файл

@ -31,12 +31,9 @@ if ($IsMacOS) {
} else {
$platform = "win32"
}
$downloadUrl = (($pythonManifest
| Where-Object { $_.version -eq $Version }
| Select-Object -First 1).files
| Where-Object { $_.platform -eq $platform -and $_.arch -eq $Arch }
| Select-Object -First 1).download_url
$manifestFileVersion = $pythonManifest | Where-Object { $_.version -eq $Version } | Select-Object -First 1
$manifestFileItem = $manifestFileVersion.files | Where-Object { $_.platform -eq $platform -and $_.arch -eq $Arch } | Select-Object -First 1
$downloadUrl = $manifestFileItem.download_url
# download
$tempDir = Join-Path "$HOME_DIR" "python-temp"

Просмотреть файл

@ -33,4 +33,9 @@
<ItemGroup>
<Content Include="..\Content\**\*" Link="%(RecursiveDir)%(FileName)%(Extension)" CopyToOutputDirectory="Always" />
</ItemGroup>
<ItemGroup>
<None Update="xunit.runner.json">
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
</None>
</ItemGroup>
</Project>

Просмотреть файл

@ -0,0 +1,6 @@
{
"$schema": "https://xunit.net/schema/current/xunit.runner.schema.json",
"diagnosticMessages": true,
"internalDiagnosticMessages": true,
"longRunningTestSeconds": 5
}