Skip to content

Commit 10afe97

Browse files
authored
[ci] Support building on dnceng-public (#1105)
New PR build pipeline: https://dev.azure.com/dnceng-public/public/_build?definitionId=305
1 parent 8305dd0 commit 10afe97

File tree

7 files changed

+152
-27
lines changed

7 files changed

+152
-27
lines changed

azure-pipelines-public.yml

Lines changed: 50 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,50 @@
1+
trigger: none
2+
3+
pr:
4+
- main
5+
6+
parameters:
7+
- name: RunDotnetNextTest
8+
displayName: Run on .NET next preview?
9+
type: boolean
10+
default: false
11+
12+
variables:
13+
- template: build/ci/variables.yml
14+
15+
stages:
16+
- stage: build_windows
17+
displayName: Build - Windows
18+
jobs:
19+
- template: build/ci/build.yml@self
20+
parameters:
21+
name: windows
22+
buildPool:
23+
name: $(NetCorePublicPoolName)
24+
demands:
25+
- ImageOverride -equals $(WindowsPoolImageNetCorePublic)
26+
runDotnetNextTest: ${{ parameters.RunDotnetNextTest }}
27+
use1ESTemplate: false
28+
installAndroidDependencies: true
29+
30+
- stage: build_mac
31+
displayName: Build - Mac
32+
dependsOn: []
33+
jobs:
34+
- template: build/ci/build.yml@self
35+
parameters:
36+
name: macos
37+
buildPool:
38+
name: Azure Pipelines
39+
vmImage: macOS-15
40+
runDotnetNextTest: ${{ parameters.RunDotnetNextTest }}
41+
use1ESTemplate: false
42+
43+
- template: build/ci/stage-standard-tests.yml@self
44+
parameters:
45+
buildPool:
46+
name: $(NetCorePublicPoolName)
47+
demands:
48+
- ImageOverride -equals $(WindowsPoolImageNetCorePublic)
49+
runDotnetNextTest: ${{ parameters.RunDotnetNextTest }}
50+
installAndroidDependencies: true

azure-pipelines.yml

Lines changed: 1 addition & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -26,12 +26,6 @@ parameters:
2626
variables:
2727
# Variables used by both AndroidX/GPS go in the template
2828
- template: build/ci/variables.yml@self
29-
30-
# Variables only used by AndroidX go here
31-
- name: skipUnitTests
32-
value: false
33-
- name: skipSamplesTests
34-
value: true
3529

3630
resources:
3731
repositories:
@@ -70,7 +64,7 @@ extends:
7064

7165
- stage: build_mac
7266
displayName: Build - Mac
73-
dependsOn:
67+
dependsOn: []
7468

7569
jobs:
7670
- template: build/ci/build.yml@self

build/ci/build.yml

Lines changed: 24 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,9 @@ parameters:
77
timeoutInMinutes: 300 # Max job runtime in minutes
88
runAPIScan: false # Run APIScan analysis
99
runDotnetNextTest: false
10-
10+
use1ESTemplate: true
11+
installAndroidDependencies: false
12+
1113
tools: # Additional .NET global tools to install
1214
- 'Cake.Tool': '4.0.0'
1315
- 'private-api-tools': '1.0.3'
@@ -23,24 +25,25 @@ jobs:
2325
pool: ${{ parameters.buildPool }}
2426
workspace:
2527
clean: all
26-
27-
templateContext:
28-
sdl:
29-
spotBugs:
30-
enabled: false
31-
binskim:
32-
scanOutputDirectoryOnly: true
33-
outputs:
34-
- output: pipelineArtifact
35-
targetPath: ${{ parameters.artifactsPath }}
36-
artifactName: output-${{ parameters.name }}
37-
condition: always()
28+
${{ if eq(parameters.use1ESTemplate, true) }}:
29+
templateContext:
30+
sdl:
31+
spotBugs:
32+
enabled: false
33+
binskim:
34+
scanOutputDirectoryOnly: true
35+
outputs:
36+
- output: pipelineArtifact
37+
targetPath: ${{ parameters.artifactsPath }}
38+
artifactName: output-${{ parameters.name }}
39+
condition: always()
3840

3941
steps:
4042
- template: setup-environment.yml
4143
parameters:
4244
dotnetTools: ${{ parameters.tools }}
4345
runDotnetNextTest: ${{ parameters.runDotnetNextTest }}
46+
installAndroidDependencies: ${{ parameters.installAndroidDependencies }}
4447

4548
- template: build-and-test.yml
4649
parameters:
@@ -64,3 +67,11 @@ jobs:
6467
Write-Host "${{ parameters.artifactsPath }}\SignList.xml already existed, nothing copied."
6568
}
6669
displayName: Copy SignList.xml to output
70+
71+
- ${{ if ne(parameters.use1ESTemplate, true) }}:
72+
- task: PublishPipelineArtifact@1
73+
displayName: Upload logs
74+
inputs:
75+
artifactName: output-${{ parameters.name }}
76+
targetPath: ${{ parameters.artifactsPath }}
77+
condition: always()

build/ci/job-extended-tests.yml

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,8 @@ parameters:
88
testProject: # The test .csproj to build
99
testAssembly: # The test .dll to execute
1010
runDotnetNextTest: false
11-
11+
installAndroidDependencies: false
12+
1213
tools: # Additional .NET global tools to install
1314
- 'dotnet-test-slicer' : '0.1.0-alpha7'
1415
- 'Cake.Tool': '4.0.0'
@@ -26,6 +27,7 @@ jobs:
2627
parameters:
2728
dotnetTools: ${{ parameters.tools }}
2829
runDotnetNextTest: ${{ parameters.runDotnetNextTest }}
30+
installAndroidDependencies: ${{ parameters.installAndroidDependencies }}
2931

3032
- task: DownloadPipelineArtifact@2
3133
inputs:

build/ci/setup-environment.yml

Lines changed: 64 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,10 @@
11
parameters:
22
dotnetTools: []
33
runDotnetNextTest: false
4-
4+
installAndroidDependencies: false
5+
androidSdkRoot: C:\Android\android-sdk
6+
javaSdkRoot: $(Agent.ToolsDirectory)\jdk11
7+
58
steps:
69
# before the build starts, make sure the tooling is as expected
710
- task: UseDotNet@2
@@ -54,14 +57,71 @@ steps:
5457
displayName: Install Preview .NET Workloads
5558
5659
- bash: |
57-
echo "##vso[task.setvariable variable=JAVA_HOME]/Library/Java/JavaVirtualMachines/microsoft-11.jdk/Contents/Home"
60+
if [[ "$(Agent.Name)" == *"Azure Pipelines"* ]]; then
61+
echo "##vso[task.setvariable variable=JAVA_HOME]$(JAVA_HOME_11_X64)"
62+
else
63+
echo "##vso[task.setvariable variable=JAVA_HOME]/Library/Java/JavaVirtualMachines/microsoft-11.jdk/Contents/Home"
64+
fi
5865
displayName: Use Java 11 SDK (Mac)
5966
condition: eq( variables['Agent.OS'], 'Darwin' )
60-
67+
6168
- task: JavaToolInstaller@0
6269
displayName: Use Java 11 SDK (Windows)
63-
condition: eq( variables['Agent.OS'], 'Windows_NT' )
70+
condition: and(eq( variables['Agent.OS'], 'Windows_NT' ), ne(${{ parameters.installAndroidDependencies }}, true))
6471
inputs:
6572
versionSpec: '11'
6673
jdkArchitectureOption: 'x64'
6774
jdkSourceOption: 'PreInstalled'
75+
76+
- ${{ if eq(parameters.installAndroidDependencies, true) }}:
77+
- task: DotNetCoreCLI@2
78+
displayName: Create android template
79+
inputs:
80+
command: custom
81+
custom: new
82+
arguments: android -o $(Agent.TempDirectory)/TempDroid
83+
84+
- task: DotNetCoreCLI@2
85+
displayName: Install android dependencies
86+
inputs:
87+
command: build
88+
projects: $(Agent.TempDirectory)/TempDroid/TempDroid.csproj
89+
arguments: >-
90+
-t:InstallAndroidDependencies -p:AcceptAndroidSdkLicenses=true
91+
-p:AndroidSdkDirectory=${{ parameters.androidSdkRoot }}
92+
-v:n -bl:output/install-android-dependencies.binlog
93+
retryCountOnTaskFailure: 3
94+
95+
- pwsh: |
96+
Write-Host "##vso[task.setvariable variable=ANDROID_SDK_ROOT]${{ parameters.androidSdkRoot }}"
97+
displayName: Set ANDROID_SDK_ROOT to ${{ parameters.androidSdkRoot }}
98+
99+
- pwsh: |
100+
if ($IsWindows) {
101+
$env:JAVA_HOME = Get-ChildItem -Path "C:\Program Files (x86)\Android\openjdk" -Filter "*jdk*" | Select-Object -First 1
102+
}
103+
$sdkManager = Get-ChildItem -Path "${{ parameters.androidSdkRoot }}\cmdline-tools" -Filter "sdkmanager*" -Recurse | Select-Object -First 1
104+
$yesInput = "y`n" * 10
105+
$yesInput | & $sdkManager --licenses
106+
& $sdkManager "build-tools;29.0.3" "platforms;android-29"
107+
displayName: Install extra Android SDK packages
108+
109+
- pwsh: |
110+
$url = "https://aka.ms/download-jdk/microsoft-jdk-11.0.26-windows-x64.zip"
111+
if ($IsMacOS) {
112+
$url = "https://aka.ms/download-jdk/microsoft-jdk-11.0.26-macos-x64.tar.gz"
113+
}
114+
$fileName = [System.IO.Path]::GetFileName($url)
115+
Invoke-WebRequest -Uri $url -OutFile $fileName
116+
Write-Host "##vso[task.setvariable variable=JDK_11_FILE_PATH]$(Build.StagingDirectory)/$fileName"
117+
displayName: Download Java 11 SDK
118+
workingDirectory: $(Build.StagingDirectory)
119+
120+
- task: JavaToolInstaller@0
121+
displayName: Use Java 11 SDK
122+
inputs:
123+
versionSpec: '11'
124+
jdkArchitectureOption: 'x64'
125+
jdkSourceOption: LocalDirectory
126+
jdkFile: $(JDK_11_FILE_PATH)
127+
jdkDestinationDirectory: ${{ parameters.javaSdkRoot }}

build/ci/stage-standard-tests.yml

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,8 @@ parameters:
44
buildPool: # VM pool information
55
stageCondition: and(succeeded(), ne('$(skipUnitTests)', 'true')) # When to run this stage
66
runDotnetNextTest: false
7-
7+
installAndroidDependencies: false
8+
89
stages:
910
- stage: standard_tests
1011
displayName: Standard Tests
@@ -21,4 +22,5 @@ stages:
2122
testProject: $(standardTestProject)
2223
testAssembly: $(standardTestAssembly)
2324
buildPool: ${{ parameters.buildPool }}
24-
runDotnetNextTest: ${{ parameters.runDotnetNextTest }}
25+
runDotnetNextTest: ${{ parameters.runDotnetNextTest }}
26+
installAndroidDependencies: ${{ parameters.installAndroidDependencies }}

build/ci/variables.yml

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -27,6 +27,8 @@ variables:
2727
# Standard test variables
2828
standardTestProject: tests/allpackages/AllPackagesTests.csproj # Standard tests project file
2929
standardTestAssembly: tests/allpackages/bin/$(configuration)/net8.0/AllPackagesTests.dll # Standard tests compiled binary
30+
skipUnitTests: false
31+
skipSamplesTests: true
3032

3133
# Extended test variables
3234
extendedTestProject: tests/extended/ExtendedTests.csproj # Extended tests project file
@@ -36,3 +38,7 @@ variables:
3638
dotnetNextVersion: 9.0.100 # .NET preview version to install
3739
dotnetNextFrameworkVersion: 9 # The number to use for TF (eg: net9.0-android)
3840
dotnetNextApiLevel: 35 # The Android SDK API Level to use (eg: -android35.0)
41+
42+
# dnceng-public variables
43+
NetCorePublicPoolName: NetCore-Public-XL
44+
WindowsPoolImageNetCorePublic: windows.vs2022.amd64.open

0 commit comments

Comments
 (0)