Skip to content

Commit

Permalink
perf pipeline: Switch to node 14.x (#74017)
Browse files Browse the repository at this point in the history
* perf pipeline: Switch to node 14.x

- Switch to node 14.x instead of 18.x, because the latter doesn't seem
to be compatible with ubuntu 18.x:
`node: /lib/x86_64-linux-gnu/libc.so.6: version `GLIBC_2.28' not found (required by node)`

- Also, remove the existing `nodejs` package before installing a new
one, because these machines are shared, and would get affected by
installations performed by other runs.

* perf pipeline: install wasm pre-reqs only on wasm jobs

* perf pipeline: correctly return exit code, so helix can pick that up and set _commandExitCode

* Set a default value for non-wasm cases

* Change the prereqs condition so a failure needs to be explicitly marked

This allows cases which don't care about this, to continue working,
because they won't set `$PERF_PREREQS_INSTALL_FAILED`, and default to
continuing with the job.

* Use --user with pip install

* Update eng/testing/performance/microbenchmarks.proj
  • Loading branch information
radical authored Aug 17, 2022
1 parent c94557a commit a250bfe
Show file tree
Hide file tree
Showing 2 changed files with 24 additions and 18 deletions.
30 changes: 18 additions & 12 deletions eng/pipelines/coreclr/templates/run-performance-job.yml
Original file line number Diff line number Diff line change
Expand Up @@ -64,29 +64,35 @@ jobs:
- HelixPerfUploadTokenValue: '$(PerfCommandUploadTokenLinux)'
- ${{ if and(notin(variables['Build.Reason'], 'PullRequest'), eq(parameters.osGroup, 'windows')) }}:
- HelixPerfUploadTokenValue: '$(PerfCommandUploadToken)'
- ${{ if eq(parameters.runtimeType, 'wasm') }}:
- HelixPreCommandsWasmOnLinux: >-
sudo apt-get -y remove nodejs &&
curl -fsSL https://deb.nodesource.com/setup_14.x | sudo -E bash - &&
sudo apt-get -y install nodejs &&
npm install --prefix $HELIX_WORKITEM_PAYLOAD jsvu -g &&
$HELIX_WORKITEM_PAYLOAD/bin/jsvu --os=linux64 --engines=v8,javascriptcore
- ${{ if ne(parameters.runtimeType, 'wasm') }}:
- HelixPreCommandsWasmOnLinux: echo
- HelixPreCommandStemWindows: 'set ORIGPYPATH=%PYTHONPATH%;py -m pip install -U pip;py -3 -m venv %HELIX_WORKITEM_PAYLOAD%\.venv;call %HELIX_WORKITEM_PAYLOAD%\.venv\Scripts\activate.bat;set PYTHONPATH=;py -3 -m pip install -U pip;py -3 -m pip install azure.storage.blob==12.0.0;py -3 -m pip install azure.storage.queue==12.0.0;set "PERFLAB_UPLOAD_TOKEN=$(HelixPerfUploadTokenValue)"'
- HelixPreCommandStemLinux: >-
export ORIGPYPATH=$PYTHONPATH
export CRYPTOGRAPHY_ALLOW_OPENSSL_102=true;
echo "** Installing prerequistes **";
python3 -m pip install -U pip &&
python3 -m pip install --user -U pip &&
sudo apt-get -y install python3-venv &&
python3 -m venv $HELIX_WORKITEM_PAYLOAD/.venv &&
ls -l $HELIX_WORKITEM_PAYLOAD/.venv/bin/activate &&
export PYTHONPATH= &&
python3 -m pip install -U pip &&
pip3 install azure.storage.blob==12.0.0 &&
pip3 install azure.storage.queue==12.0.0 &&
python3 -m pip install --user -U pip &&
pip3 install --user azure.storage.blob==12.0.0 &&
pip3 install --user azure.storage.queue==12.0.0 &&
sudo apt-get update &&
sudo apt -y install curl dirmngr apt-transport-https lsb-release ca-certificates &&
curl -fsSL https://deb.nodesource.com/setup_18.x | sudo -E bash - &&
sudo apt-get -y install nodejs &&
npm install --prefix $HELIX_WORKITEM_PAYLOAD jsvu -g &&
$HELIX_WORKITEM_PAYLOAD/bin/jsvu --os=linux64 --engines=v8,javascriptcore &&
export PERFLAB_UPLOAD_TOKEN="$(HelixPerfUploadTokenValue)" &&
export PERF_PREREQS_INSTALLED=1;
test "x$PERF_PREREQS_INSTALLED" = "x1" || echo "** Error: Failed to install prerequites **"
- HelixPreCommandStemMusl: 'export ORIGPYPATH=$PYTHONPATH;sudo apk add icu-libs krb5-libs libgcc libintl libssl1.1 libstdc++ zlib cargo;sudo apk add libgdiplus --repository http://dl-cdn.alpinelinux.org/alpine/edge/testing; python3 -m venv $HELIX_WORKITEM_PAYLOAD/.venv;source $HELIX_WORKITEM_PAYLOAD/.venv/bin/activate;export PYTHONPATH=;python3 -m pip install -U pip;pip3 install azure.storage.blob==12.7.1;pip3 install azure.storage.queue==12.1.5;export PERFLAB_UPLOAD_TOKEN="$(HelixPerfUploadTokenValue)"'
$(HelixPreCommandsWasmOnLinux) &&
export PERFLAB_UPLOAD_TOKEN="$(HelixPerfUploadTokenValue)"
|| export PERF_PREREQS_INSTALL_FAILED=1;
test "x$PERF_PREREQS_INSTALL_FAILED" = "x1" && echo "** Error: Failed to install prerequites **"
- HelixPreCommandStemMusl: 'export ORIGPYPATH=$PYTHONPATH;sudo apk add icu-libs krb5-libs libgcc libintl libssl1.1 libstdc++ zlib cargo;sudo apk add libgdiplus --repository http://dl-cdn.alpinelinux.org/alpine/edge/testing; python3 -m venv $HELIX_WORKITEM_PAYLOAD/.venv;source $HELIX_WORKITEM_PAYLOAD/.venv/bin/activate;export PYTHONPATH=;python3 -m pip install --user -U pip;pip3 install --user azure.storage.blob==12.7.1;pip3 install --user azure.storage.queue==12.1.5;export PERFLAB_UPLOAD_TOKEN="$(HelixPerfUploadTokenValue)"'
- ExtraMSBuildLogsWindows: 'set MSBUILDDEBUGCOMM=1;set "MSBUILDDEBUGPATH=%HELIX_WORKITEM_UPLOAD_ROOT%"'
- ExtraMSBuildLogsLinux: 'export MSBUILDDEBUGCOMM=1;export "MSBUILDDEBUGPATH=$HELIX_WORKITEM_UPLOAD_ROOT"'
- HelixPreCommand: ''
Expand Down
12 changes: 6 additions & 6 deletions eng/testing/performance/microbenchmarks.proj
Original file line number Diff line number Diff line change
Expand Up @@ -132,10 +132,10 @@
<PayloadDirectory>$(WorkItemDirectory)</PayloadDirectory>
<PreCommands Condition="'$(Compare)' == 'true'">$(WorkItemCommand) --bdn-artifacts $(BaselineArtifactsDirectory) --bdn-arguments="--anyCategories $(BDNCategories) $(ExtraBenchmarkDotNetArguments) $(BaselineCoreRunArgument) --partition-count $(PartitionCount) --partition-index %(HelixWorkItem.Index)"</PreCommands>
<Command Condition="'$(AGENT_OS)' != 'Windows_NT'">
if [ "x$PERF_PREREQS_INSTALLED" = "x1" ]; then
$(WorkItemCommand) --bdn-artifacts $(ArtifactsDirectory) --bdn-arguments="--anyCategories $(BDNCategories) $(ExtraBenchmarkDotNetArguments) $(CoreRunArgument) --partition-count $(PartitionCount) --partition-index %(HelixWorkItem.Index)";
if [ "x$PERF_PREREQS_INSTALL_FAILED" = "x1" ]; then
echo "\n\n** Error: Failed to install prerequisites **\n\n"; (exit 1);
else
echo "\n\n** Error: Failed to install prerequisites **\n\n"; export _commandExitCode=1;
$(WorkItemCommand) --bdn-artifacts $(ArtifactsDirectory) --bdn-arguments="--anyCategories $(BDNCategories) $(ExtraBenchmarkDotNetArguments) $(CoreRunArgument) --partition-count $(PartitionCount) --partition-index %(HelixWorkItem.Index)";
fi</Command>
<Command Condition="'$(AGENT_OS)' == 'Windows_NT'">$(WorkItemCommand) --bdn-artifacts $(ArtifactsDirectory) --bdn-arguments="--anyCategories $(BDNCategories) $(ExtraBenchmarkDotNetArguments) $(CoreRunArgument) --partition-count $(PartitionCount) --partition-index %(HelixWorkItem.Index)"</Command>
<PostCommands Condition="'$(Compare)' == 'true'">$(DotnetExe) run -f $(PERFLAB_Framework) -p $(ResultsComparer) --base $(BaselineArtifactsDirectory) --diff $(ArtifactsDirectory) --threshold 2$(Percent) --xml $(XMLResults);$(FinalCommand)</PostCommands>
Expand All @@ -148,10 +148,10 @@
<PayloadDirectory>$(WorkItemDirectory)</PayloadDirectory>
<PreCommands Condition="'$(Compare)' == 'true'">$(WorkItemCommand) --bdn-artifacts $(BaselineArtifactsDirectory) --bdn-arguments="--anyCategories $(BDNCategories) $(ExtraBenchmarkDotNetArguments) $(BaselineCoreRunArgument)"</PreCommands>
<Command Condition="'$(AGENT_OS)' != 'Windows_NT'">
if [ "x$PERF_PREREQS_INSTALLED" = "x1" ]; then
$(WorkItemCommand) --bdn-artifacts $(ArtifactsDirectory) --bdn-arguments="--anyCategories $(BDNCategories) $(ExtraBenchmarkDotNetArguments) $(CoreRunArgument)";
if [ "x$PERF_PREREQS_INSTALL_FAILED" = "x1" ]; then
echo "\n\n** Error: Failed to install prerequisites **\n\n"; (exit 1);
else
echo "\n\n** Error: Failed to install prerequisites **\n\n"; export _commandExitCode=1;
$(WorkItemCommand) --bdn-artifacts $(ArtifactsDirectory) --bdn-arguments="--anyCategories $(BDNCategories) $(ExtraBenchmarkDotNetArguments) $(CoreRunArgument)";
fi</Command>
<Command Condition="'$(AGENT_OS)' == 'Windows_NT'">$(WorkItemCommand) --bdn-artifacts $(ArtifactsDirectory) --bdn-arguments="--anyCategories $(BDNCategories) $(ExtraBenchmarkDotNetArguments) $(CoreRunArgument)"</Command>
<PostCommands Condition="'$(Compare)' == 'true'">$(DotnetExe) run -f $(PERFLAB_Framework) -p $(ResultsComparer) --base $(BaselineArtifactsDirectory) --diff $(ArtifactsDirectory) --threshold 2$(Percent) --xml $(XMLResults)</PostCommands>
Expand Down

0 comments on commit a250bfe

Please sign in to comment.