Skip to content

Commit 54e2820

Browse files
authored
Avoid changing global state in CI runs II (#21643)
* Avoid changing global state in CI runs II - move `dotnet` tools into `$PWD/.dotnet/tools/` - add `dotnet` tools to `$env:PATH` - install `jq` in `$PWD/.tools/` - install `nginx` in `$PWD/.tools/nginx/` nits: - remove an extra (incorrect) `$env:JAVA_HOME` setting - build.ps1 finds a local JDK and sets this variable (and `$env:PATH`) properly - avoid `'$(SELENIUMPROCESSTRACKINGFOLDER)' == '\artifacts\tmp\selenium\'` - `$(BuildDirectory)` was normally the empty string (w/o fix) - use `$(BuildDirectory)` a bit more * Add files. disable artifact / test results publications to avoid warnings on CI - artifacts/log is often empty when binary logs are disabled - no tests create *.trx files - don't have Java test results either - only test jobs need test results published
1 parent 2989e23 commit 54e2820

File tree

5 files changed

+35
-41
lines changed

5 files changed

+35
-41
lines changed

.azure/pipelines/ci.yml

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -19,8 +19,6 @@ pr:
1919
- '*'
2020

2121
variables:
22-
- name: DOTNET_CLI_HOME
23-
value: $(Agent.BuildDirectory)
2422
- name: DOTNET_SKIP_FIRST_TIME_EXPERIENCE
2523
value: true
2624
- name: _TeamName
@@ -704,14 +702,16 @@ stages:
704702
vmImage: 'ubuntu-16.04'
705703
variables:
706704
DotNetCoreSdkDir: $(Agent.ToolsDirectory)/dotnet
705+
# This isn't needed in the path because build does not need to _use_ global tools.
706+
DOTNET_CLI_HOME: $(System.DefaultWorkingDirectory)
707707
DOTNET_SYSTEM_GLOBALIZATION_INVARIANT: true
708708
steps:
709709
- script: |
710710
source eng/common/native/common-library.sh
711-
mkdir -p $HOME/bin
712-
GetFile https://github.com/stedolan/jq/releases/download/jq-1.6/jq-linux64 $HOME/bin/jq
713-
chmod +x $HOME/bin/jq
714-
echo "##vso[task.prependpath]$HOME/bin"
711+
mkdir -p $(System.DefaultWorkingDirectory)/.tools
712+
GetFile https://github.com/stedolan/jq/releases/download/jq-1.6/jq-linux64 $(System.DefaultWorkingDirectory)/.tools/jq
713+
chmod +x $(System.DefaultWorkingDirectory)/.tools/jq
714+
echo "##vso[task.prependpath]$(System.DefaultWorkingDirectory)/.tools"
715715
displayName: Install jq
716716
- ${{ if ne(variables['System.TeamProject'], 'public') }}:
717717
- task: Bash@3

.azure/pipelines/jobs/default-build.yml

Lines changed: 17 additions & 33 deletions
Original file line numberDiff line numberDiff line change
@@ -52,7 +52,7 @@ parameters:
5252
condition: ''
5353
# jobName: '' - use agentOs by default.
5454
# jobDisplayName: '' - use agentOs by default.
55-
artifacts: []
55+
artifacts: []
5656
buildDirectory: ''
5757
buildScript: ''
5858
installTar: true
@@ -80,7 +80,7 @@ jobs:
8080
enableMicrobuild: true
8181
enablePublishBuildAssets: true
8282
enablePublishUsingPipelines: ${{ variables._PublishUsingPipelines }}
83-
enablePublishTestResults: true # publish test results to AzDO (populates AzDO Tests tab)
83+
enablePublishTestResults: ${{ eq(parameters.isTestingJob, 'true') }} # publish test results to AzDO (populates AzDO Tests tab)
8484
enableTelemetry: true
8585
helixRepo: dotnet/aspnetcore
8686
helixType: build.product/
@@ -116,12 +116,13 @@ jobs:
116116
- BuildScriptArgs: ${{ parameters.buildArgs }}
117117
- _BuildConfig: ${{ parameters.configuration }}
118118
- BuildConfiguration: ${{ parameters.configuration }}
119-
- BuildDirectory: ${{ parameters.buildDirectory }}
120-
- DOTNET_CLI_HOME: $(Agent.BuildDirectory)
119+
- ${{ if eq(parameters.buildDirectory, '') }}:
120+
- BuildDirectory: $(System.DefaultWorkingDirectory)
121+
- ${{ if ne(parameters.buildDirectory, '') }}:
122+
- BuildDirectory: ${{ parameters.buildDirectory }}
123+
- DOTNET_CLI_HOME: $(System.DefaultWorkingDirectory)
121124
- DOTNET_SKIP_FIRST_TIME_EXPERIENCE: true
122125
- TeamName: AspNetCore
123-
- ${{ if and(eq(parameters.installJdk, 'true'), eq(parameters.agentOs, 'Windows')) }}:
124-
- JAVA_HOME: $(Agent.BuildDirectory)\.tools\jdk\win-x64
125126
- ${{ if or(ne(parameters.codeSign, true), ne(variables['System.TeamProject'], 'internal')) }}:
126127
- _SignType: ''
127128
- ${{ if and(eq(parameters.codeSign, true), eq(variables['System.TeamProject'], 'internal')) }}:
@@ -164,6 +165,12 @@ jobs:
164165
- ${{ if and(eq(parameters.installTar, 'true'), eq(parameters.agentOs, 'Windows')) }}:
165166
- powershell: ./eng/scripts/InstallTar.ps1
166167
displayName: Find or install Tar
168+
- ${{ if eq(parameters.agentOs, 'Windows') }}:
169+
- powershell: Write-Host "##vso[task.prependpath]$(DOTNET_CLI_HOME)\.dotnet\tools"
170+
displayName: Add dotnet tools to path
171+
- ${{ if ne(parameters.agentOs, 'Windows') }}:
172+
- script: echo "##vso[task.prependpath]$(DOTNET_CLI_HOME)/.dotnet/tools"
173+
displayName: Add dotnet tools to path
167174

168175
- ${{ parameters.beforeBuild }}
169176

@@ -191,10 +198,10 @@ jobs:
191198
- ${{ if eq(parameters.steps, '')}}:
192199
- ${{ if eq(parameters.buildScript, '') }}:
193200
- ${{ if eq(parameters.agentOs, 'Windows') }}:
194-
- script: .\$(BuildDirectory)\build.cmd -ci -nobl -Configuration $(BuildConfiguration) $(BuildScriptArgs) /p:DotNetSignType=$(_SignType)
201+
- script: $(BuildDirectory)\build.cmd -ci -nobl -Configuration $(BuildConfiguration) $(BuildScriptArgs) /p:DotNetSignType=$(_SignType)
195202
displayName: Run build.cmd
196203
- ${{ if ne(parameters.agentOs, 'Windows') }}:
197-
- script: ./$(BuildDirectory)/build.sh --ci --nobl --configuration $(BuildConfiguration) $(BuildScriptArgs)
204+
- script: $(BuildDirectory)/build.sh --ci --nobl --configuration $(BuildConfiguration) $(BuildScriptArgs)
198205
displayName: Run build.sh
199206
- ${{ if ne(parameters.buildScript, '') }}:
200207
- script: $(BuildScript) -ci -nobl -Configuration $(BuildConfiguration) $(BuildScriptArgs)
@@ -232,29 +239,15 @@ jobs:
232239
condition: and(or(succeeded(), eq('${{ artifact.publishOnError }}', 'true')), or(eq(variables['system.pullrequest.isfork'], false), eq('${{ artifact.includeForks }}', 'true')))
233240
continueOnError: true
234241
inputs:
235-
${{ if eq(parameters.buildDirectory, '') }}:
236-
pathtoPublish: ${{ artifact.path }}
237-
${{ if ne(parameters.buildDirectory, '') }}:
238-
pathtoPublish: ${{ parameters.buildDirectory }}\${{ artifact.path }}
242+
pathtoPublish: $(BuildDirectory)/${{ artifact.path }}
239243
${{ if eq(artifact.name, '') }}:
240244
artifactName: artifacts-$(AgentOsName)-$(BuildConfiguration)
241245
${{ if ne(artifact.name, '') }}:
242246
artifactName: ${{ artifact.name }}
243247
artifactType: Container
244248
parallel: true
245249

246-
- ${{ if eq(parameters.isTestingJob, true) }}:
247-
- task: PublishTestResults@2
248-
displayName: Publish VSTest test results
249-
condition: always()
250-
continueOnError: true
251-
inputs:
252-
testRunTitle: $(AgentOsName)-$(BuildConfiguration)
253-
testRunner: vstest
254-
testResultsFiles: '**/artifacts/**/*.trx'
255-
mergeTestResults: true
256-
buildConfiguration: $(BuildConfiguration)
257-
buildPlatform: $(AgentOsName)
250+
- ${{ if and(eq(parameters.isTestingJob, true), ne(parameters.jobName, 'Windows_Templates_Test')) }}:
258251
- task: PublishTestResults@2
259252
displayName: Publish js test results
260253
condition: always()
@@ -263,12 +256,3 @@ jobs:
263256
testResultsFiles: '**/artifacts/log/**/*.junit.xml'
264257
buildConfiguration: $(BuildConfiguration)
265258
buildPlatform: $(AgentOsName)
266-
- task: PublishTestResults@2
267-
displayName: Publish Java test results
268-
condition: always()
269-
inputs:
270-
testRunner: junit
271-
testResultsFiles: '**/TEST-junit-jupiter.xml'
272-
buildConfiguration: $(BuildConfiguration)
273-
buildPlatform: $(AgentOsName)
274-
mergeTestResults: true

build.ps1

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -369,6 +369,9 @@ if ($BinaryLog) {
369369
if (-not $bl) {
370370
$MSBuildArguments += "/bl:" + (Join-Path $LogDir "Build.binlog")
371371
}
372+
} elseif ($CI) {
373+
# Ensure the artifacts/log directory isn't empty to avoid warnings.
374+
New-Item (Join-Path $LogDir "empty.log") -ItemType File -ErrorAction SilentlyContinue >$null
372375
}
373376

374377
# Capture MSBuild crash logs

build.sh

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -338,6 +338,9 @@ if [[ "$binary_log" == true ]]; then
338338
if [[ "$found" == false ]]; then
339339
msbuild_args[${#msbuild_args[*]}]="/bl:$log_dir/Build.binlog"
340340
fi
341+
elif [[ "$ci" == true ]]; then
342+
# Ensure the artifacts/log directory isn't empty to avoid warnings.
343+
touch "$log_dir/empty.log"
341344
fi
342345

343346
# Capture MSBuild crash logs

eng/scripts/install-nginx-linux.sh

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -2,8 +2,12 @@
22

33
set -euo pipefail
44

5+
scriptroot="$( cd -P "$( dirname "${BASH_SOURCE[0]}" )" && pwd )"
6+
reporoot="$(dirname "$(dirname "$scriptroot")")"
7+
nginxinstall="$reporoot/.tools/nginx"
8+
59
curl -sSL http://nginx.org/download/nginx-1.14.2.tar.gz | tar zxfv - -C /tmp && cd /tmp/nginx-1.14.2/
6-
./configure --prefix=$HOME/nginxinstall --with-http_ssl_module --without-http_rewrite_module
10+
./configure --prefix=$nginxinstall --with-http_ssl_module --without-http_rewrite_module
711
make
812
make install
9-
echo "##vso[task.prependpath]$HOME/nginxinstall/sbin"
13+
echo "##vso[task.prependpath]$nginxinstall/sbin"

0 commit comments

Comments
 (0)