Skip to content

Commit 0475a60

Browse files
authored
[ci] Add template for setting JAVA_HOME vars (#9671)
Adds a `setup-jdk-variables.yaml` template to set the `JAVA_HOME` and `JI_JAVA_HOME` variables from a single script location. A new `JI_JAVA_HOME_DEFAULT` variable will also be set to point to a current JDK that can be used to run various Android SDK tools as needed. Consolidating this logic should make it easier to update the default JDK version we install and/or test against in the future. Build jobs and some test jobs that run on custom agents will use the default android-toolchain path that xaprepare installs into. Most other test jobs will attempt to use the value of a preinstalled JDK found at `$JAVA_HOME_$(JAVA_VERSION)_$(OS_ARCH)` if it is defined.
1 parent 6d9b295 commit 0475a60

File tree

11 files changed

+61
-56
lines changed

11 files changed

+61
-56
lines changed

build-tools/automation/azure-pipelines-apidocs.yaml

Lines changed: 3 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -100,10 +100,9 @@ extends:
100100
- checkout: self
101101
submodules: recursive
102102

103-
- script: |
104-
echo "##vso[task.setvariable variable=JI_JAVA_HOME]$HOME/android-toolchain/jdk-17"
105-
echo "##vso[task.setvariable variable=JAVA_HOME]$HOME/android-toolchain/jdk-17"
106-
displayName: set JI_JAVA_HOME
103+
- template: /build-tools/automation/yaml-templates/setup-jdk-variables.yaml@self
104+
parameters:
105+
useAgentJdkPath: false
107106

108107
# Set MSBuild property overrides if parameters are set
109108
- ${{ if ne(parameters.apiLevel, 'default') }}:

build-tools/automation/azure-pipelines-nightly.yaml

Lines changed: 4 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -123,7 +123,7 @@ stages:
123123
- template: /build-tools/automation/yaml-templates/setup-test-environment.yaml
124124
parameters:
125125
xaprepareScenario: EmulatorTestDependencies
126-
jdkTestFolder: $(JAVA_HOME_11_X64)
126+
jdkMajorVersion: 11
127127

128128
- template: /build-tools/automation/yaml-templates/run-dotnet-preview.yaml
129129
parameters:
@@ -138,6 +138,7 @@ stages:
138138
avdApiLevel: $(avdApiLevel)
139139
avdAbi: $(avdAbi)
140140
avdType: $(avdType)
141+
emulatorMSBuildArgs: -p:JavaSdkDirectory=$(JI_JAVA_HOME_DEFAULT)
141142

142143
- template: /build-tools/automation/yaml-templates/apk-instrumentation.yaml
143144
parameters:
@@ -162,7 +163,6 @@ stages:
162163
emulatorMSBuildArgs: -p:TestAvdExtraBootArgs=-writable-system
163164
jobName: SystemApplicationTests
164165
jobTimeout: 120
165-
jdkTestFolder: $HOME/android-toolchain/jdk-17
166166
use1ESTemplate: false
167167
testSteps:
168168
- template: run-nunit-tests.yaml
@@ -195,15 +195,11 @@ stages:
195195
steps:
196196
- template: agent-cleanser/v1.yml@yaml-templates
197197

198-
- script: |
199-
echo "##vso[task.setvariable variable=JAVA_HOME]$HOME/android-toolchain/jdk-17"
200-
displayName: set JAVA_HOME to $HOME/android-toolchain/jdk-17
201-
202198
- template: /build-tools/automation/yaml-templates/setup-test-environment.yaml
203199
parameters:
204200
installTestSlicer: true
205201
xaprepareScenario: EmulatorTestDependencies
206-
jdkTestFolder: $HOME/android-toolchain/jdk-17
202+
useAgentJdkPath: false
207203

208204
- task: DownloadPipelineArtifact@2
209205
inputs:
@@ -251,15 +247,11 @@ stages:
251247
steps:
252248
- template: agent-cleanser/v1.yml@yaml-templates
253249

254-
- script: |
255-
echo "##vso[task.setvariable variable=JAVA_HOME]$HOME/android-toolchain/jdk-17"
256-
displayName: set JAVA_HOME to $HOME/android-toolchain/jdk-17
257-
258250
- template: /build-tools/automation/yaml-templates/setup-test-environment.yaml
259251
parameters:
260252
installTestSlicer: true
261253
xaprepareScenario: EmulatorTestDependencies
262-
jdkTestFolder: $HOME/android-toolchain/jdk-17
254+
useAgentJdkPath: false
263255

264256
- task: DownloadPipelineArtifact@2
265257
inputs:

build-tools/automation/azure-pipelines.yaml

Lines changed: 0 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -152,11 +152,6 @@ extends:
152152
inputs:
153153
forceReinstallCredentialProvider: true
154154

155-
- script: |
156-
echo ##vso[task.setvariable variable=JI_JAVA_HOME]%JAVA_HOME_17_X64%
157-
echo ##vso[task.setvariable variable=JAVA_HOME]%JAVA_HOME_17_X64%
158-
displayName: set JI_JAVA_HOME, JAVA_HOME to $(JAVA_HOME_17_X64)
159-
160155
- script: echo "##vso[task.prependpath]C:\Windows\System32\WindowsPowerShell\v1.0\"
161156
displayName: add powershell to path
162157

build-tools/automation/yaml-templates/build-windows.yaml

Lines changed: 1 addition & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -39,9 +39,7 @@ stages:
3939

4040
- template: /build-tools/automation/yaml-templates/clean.yaml
4141

42-
- script: |
43-
echo ##vso[task.setvariable variable=JI_JAVA_HOME]%JAVA_HOME_17_X64%
44-
displayName: set JI_JAVA_HOME to $(JAVA_HOME_17_X64)
42+
- template: /build-tools/automation/yaml-templates/setup-jdk-variables.yaml
4543

4644
- template: /build-tools/automation/yaml-templates/use-dot-net.yaml
4745
parameters:

build-tools/automation/yaml-templates/commercial-build.yaml

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -8,8 +8,9 @@ parameters:
88
use1ESTemplate: true
99

1010
steps:
11-
- script: echo "##vso[task.setvariable variable=JI_JAVA_HOME]$HOME/android-toolchain/jdk-17"
12-
displayName: set JI_JAVA_HOME
11+
- template: /build-tools/automation/yaml-templates/setup-jdk-variables.yaml
12+
parameters:
13+
useAgentJdkPath: false
1314

1415
- template: /build-tools/automation/yaml-templates/use-dot-net.yaml
1516
parameters:

build-tools/automation/yaml-templates/run-emulator-tests.yaml

Lines changed: 4 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,8 @@ parameters:
44
emulatorMSBuildArgs: ''
55
jobName: CheckTimeZoneInfoIsCorrectNode1
66
jobTimeout: 360
7-
jdkTestFolder: $(JAVA_HOME_17_X64)
7+
jdkMajorVersion: $(DefaultJavaSdkMajorVersion)
8+
useAgentJdkPath: false
89
testSteps: []
910
use1ESTemplate: true
1011

@@ -22,14 +23,11 @@ jobs:
2223
steps:
2324
- template: agent-cleanser/v1.yml@yaml-templates
2425

25-
- script: |
26-
echo "##vso[task.setvariable variable=JAVA_HOME]${{ parameters.jdkTestFolder }}"
27-
displayName: set JAVA_HOME to ${{ parameters.jdkTestFolder }}
28-
2926
- template: /build-tools/automation/yaml-templates/setup-test-environment.yaml
3027
parameters:
3128
xaprepareScenario: EmulatorTestDependencies
32-
jdkTestFolder: ${{ parameters.jdkTestFolder }}
29+
jdkMajorVersion: ${{ parameters.jdkMajorVersion }}
30+
useAgentJdkPath: ${{ parameters.useAgentJdkPath }}
3331

3432
- task: DownloadPipelineArtifact@2
3533
inputs:
Lines changed: 26 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,26 @@
1+
parameters:
2+
jdkMajorVersion: $(DefaultJavaSdkMajorVersion)
3+
useAgentJdkPath: true
4+
5+
steps:
6+
- pwsh: |
7+
$agentOS="$(Agent.OS)"
8+
$agentArch="$(Agent.OSArchitecture)"
9+
$jdkMajorVersion="${{ parameters.jdkMajorVersion }}"
10+
$xaPrepareJdkPath="$env:HOME/android-toolchain/jdk-$jdkMajorVersion"
11+
if ("$agentOS" -eq "Windows_NT") {
12+
$xaPrepareJdkPath="$env:USERPROFILE\android-toolchain\jdk-$jdkMajorVersion"
13+
}
14+
$jdkHomePath=$xaPrepareJdkPath
15+
if ("${{ parameters.useAgentJdkPath }}" -eq "true") {
16+
$defaultJdkHomeVarName="JAVA_HOME_$(DefaultJavaSdkMajorVersion)_${agentArch}"
17+
$defaultJdkHomePath=(Get-Item -Path "env:$defaultJdkHomeVarName").Value
18+
$jdkHomeVarName="JAVA_HOME_${jdkMajorVersion}_${agentArch}"
19+
$jdkHomePath=(Get-Item -Path "env:$jdkHomeVarName").Value
20+
}
21+
Write-Host "Setting variable 'JI_JAVA_HOME_DEFAULT' to '$defaultJdkHomePath'"
22+
Write-Host "##vso[task.setvariable variable=JI_JAVA_HOME_DEFAULT]$defaultJdkHomePath"
23+
Write-Host "Setting variable 'JAVA_HOME' and 'JI_JAVA_HOME' to '$jdkHomePath'"
24+
Write-Host "##vso[task.setvariable variable=JAVA_HOME]$jdkHomePath"
25+
Write-Host "##vso[task.setvariable variable=JI_JAVA_HOME]$jdkHomePath"
26+
displayName: set JAVA_HOME and JI_JAVA_HOME

build-tools/automation/yaml-templates/setup-test-environment.yaml

Lines changed: 6 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,8 @@
11
parameters:
22
configuration: $(XA.Build.Configuration)
33
xaSourcePath: $(System.DefaultWorkingDirectory)
4-
jdkTestFolder: $(JAVA_HOME_17_X64)
4+
jdkMajorVersion: $(DefaultJavaSdkMajorVersion)
5+
useAgentJdkPath: true
56
remove_dotnet: false
67
dotnetVersion: $(DotNetSdkVersion)
78
dotnetQuality: $(DotNetSdkQuality)
@@ -21,17 +22,10 @@ steps:
2122
clean: true
2223
submodules: recursive
2324

24-
- script: |
25-
echo "##vso[task.setvariable variable=JI_JAVA_HOME]${{ parameters.jdkTestFolder }}"
26-
echo "##vso[task.setvariable variable=DOTNET_TOOL_PATH]${{ parameters.xaSourcePath }}/bin/${{ parameters.configuration }}/dotnet/dotnet"
27-
displayName: set JI_JAVA_HOME to ${{ parameters.jdkTestFolder }}
28-
condition: and(succeeded(), ne(variables['agent.os'], 'Windows_NT'))
29-
30-
- script: |
31-
echo ##vso[task.setvariable variable=JI_JAVA_HOME]${{ parameters.jdkTestFolder }}
32-
echo ##vso[task.setvariable variable=DOTNET_TOOL_PATH]${{ parameters.xaSourcePath }}\bin\${{ parameters.configuration }}\dotnet\dotnet.exe
33-
displayName: set JI_JAVA_HOME to ${{ parameters.jdkTestFolder }}
34-
condition: and(succeeded(), eq(variables['agent.os'], 'Windows_NT'))
25+
- template: /build-tools/automation/yaml-templates/setup-jdk-variables.yaml
26+
parameters:
27+
jdkMajorVersion: ${{ parameters.jdkMajorVersion }}
28+
useAgentJdkPath: ${{ parameters.useAgentJdkPath }}
3529

3630
# Install latest .NET
3731
- template: /build-tools/automation/yaml-templates/use-dot-net.yaml

build-tools/automation/yaml-templates/variables.yaml

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -58,6 +58,8 @@ variables:
5858
value: $[or(startsWith(variables['Build.SourceBranch'], 'refs/heads/release/'), startsWith(variables['System.PullRequest.TargetBranch'], 'release/'))]
5959
- name: DefaultTestSdkPlatforms # Comma-separated SDK Platform(s) to install on test agents (no spaces)
6060
value: 35,Baklava
61+
- name: DefaultJavaSdkMajorVersion
62+
value: 17
6163
- name: ExcludedNightlyNUnitCategories
6264
value: 'cat != SystemApplication & cat != TimeZoneInfo & cat != Localization'
6365
- name: RunMAUITestJob

build-tools/scripts/TestApks.targets

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -380,6 +380,7 @@
380380
<!-- SDK component installation can be frail, try a few times. -->
381381
<Exec
382382
Command="&quot;$(CommandLineToolsBinPath)\sdkmanager&quot; &quot;$(SdkManagerImageName)&quot;"
383+
EnvironmentVariables="JAVA_HOME=$(JavaSdkDirectory)"
383384
ContinueOnError="true">
384385
<Output TaskParameter="ExitCode" PropertyName="_SdkManagerExitCode" />
385386
</Exec>
@@ -389,6 +390,7 @@
389390
/>
390391
<Exec
391392
Command="&quot;$(CommandLineToolsBinPath)\sdkmanager&quot; &quot;$(SdkManagerImageName)&quot;"
393+
EnvironmentVariables="JAVA_HOME=$(JavaSdkDirectory)"
392394
ContinueOnError="true"
393395
Condition=" '$(_SdkManagerExitCode)' != '0' ">
394396
<Output TaskParameter="ExitCode" PropertyName="_SdkManagerExitCode" />
@@ -399,6 +401,7 @@
399401
/>
400402
<Exec
401403
Command="&quot;$(CommandLineToolsBinPath)\sdkmanager&quot; &quot;$(SdkManagerImageName)&quot;"
404+
EnvironmentVariables="JAVA_HOME=$(JavaSdkDirectory)"
402405
ContinueOnError="true"
403406
Condition=" '$(_SdkManagerExitCode)' != '0' ">
404407
<Output TaskParameter="ExitCode" PropertyName="_SdkManagerExitCode" />

0 commit comments

Comments
 (0)