Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

[wasm] Make chrome version bumps for testing explicit, instead of automatic updates to latest #90772

Merged
merged 5 commits into from
Aug 18, 2023
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
65 changes: 65 additions & 0 deletions .github/workflows/bump-chrome-version.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,65 @@
name: Update Chrome Version used for wasm testing

permissions:
contents: write
pull-requests: write

on:
schedule:
- cron: '0 0 * * 0'

workflow_dispatch:

jobs:
update:
runs-on: ubuntu-latest
steps:
- name: Checkout
uses: actions/checkout@v3
- name: Setup Branch
run: |
git config user.name github-actions[bot]
git config user.email github-actions[bot]@users.noreply.github.com
git checkout -b update-chrome-version-${{ github.run_id }}

- name: Run UpdateToLatestVersion
run: >-
make -C src/mono/wasm build-tasks &&
.dotnet/dotnet build eng/testing/bump-chrome-version.proj -p:Configuration=Release &&
git add eng/testing/ChromeVersions.props

- name: Check for changes
id: check_changes
run: |
echo "has_changes=$(git diff-index --quiet HEAD && echo false || echo true)" >> $GITHUB_OUTPUT

- name: Commit Update
run: |
echo steps.check_changes.outputs.has_changes=${{steps.check_changes.outputs.has_changes}}
if ${{steps.check_changes.outputs.has_changes}} == 'true'; then
git commit -m "Automated bump of chrome version"
git push --set-upstream origin update-chrome-version-${{ github.run_id }}
else
echo "No changes detected."
fi

- name: Create PR
if: steps.check_changes.outputs.has_changes == 'true'
uses: actions/github-script@v6
with:
script: |
const { data: pullRequest } = await github.rest.pulls.create({
base: context.ref,
head: "update-chrome-version-${{ github.run_id }}",
owner: context.repo.owner,
repo: context.repo.repo,
title: '[wasm] Bump chrome version used for testing',
body: ''
});
await github.rest.pulls.requestReviewers({
owner: context.repo.owner,
repo: context.repo.repo,
pull_number: pullRequest.number,
reviewers: ["radical"]
});
return pullRequest.number;
6 changes: 3 additions & 3 deletions eng/pipelines/common/evaluate-default-paths.yml
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,7 @@ parameters:
# do not set them when using the template
_const_paths:
_wasm_specific_only: [
eng/testing/ProvisioningVersions.props
eng/testing/ChromeVersions.props
eng/testing/WasmRunner*
eng/testing/WasiRunner*
eng/testing/scenarios/BuildWasmAppsJobsList.txt
Expand Down Expand Up @@ -182,7 +182,7 @@ jobs:
include:
- eng/Version.Details.xml
- eng/Versions.props
eng/testing/ProvisioningVersions.props
eng/testing/ChromeVersions.props
- eng/testing/scenarios/BuildWasmAppsJobsList.txt
- eng/testing/workloads-testing.targets
- src/installer/pkg/sfx/Microsoft.NETCore.App/*
Expand Down Expand Up @@ -215,7 +215,7 @@ jobs:
- subset: wasmdebuggertests
combined: true
include:
- eng/testing/ProvisioningVersions.props
- eng/testing/ChromeVersions.props
- src/libraries/System.Runtime.InteropServices/*
- src/libraries/System.Runtime.InteropServices.JavaScript/*
- src/mono/mono/*
Expand Down
11 changes: 11 additions & 0 deletions eng/testing/ChromeVersions.props
Original file line number Diff line number Diff line change
@@ -0,0 +1,11 @@
<Project>
<PropertyGroup>
<linux_ChromeVersion>115.0.5790.170</linux_ChromeVersion>
<linux_ChromeRevision>1148114</linux_ChromeRevision>
<linux_ChromeBaseSnapshotUrl>https://storage.googleapis.com/chromium-browser-snapshots/Linux_x64/1148123</linux_ChromeBaseSnapshotUrl>

<win_ChromeVersion>115.0.5790.171</win_ChromeVersion>
<win_ChromeRevision>1148114</win_ChromeRevision>
<win_ChromeBaseSnapshotUrl>https://storage.googleapis.com/chromium-browser-snapshots/Win_x64/1148119</win_ChromeBaseSnapshotUrl>
</PropertyGroup>
</Project>
68 changes: 0 additions & 68 deletions eng/testing/ProvisioningVersions.props

This file was deleted.

52 changes: 52 additions & 0 deletions eng/testing/bump-chrome-version.proj
Original file line number Diff line number Diff line change
@@ -0,0 +1,52 @@
<Project DefaultTargets="UpdateChromeVersion">

<Import Project="..\Directory.Build.props" />
<UsingTask AssemblyFile="$(WasmBuildTasksAssemblyPath)" TaskName="Microsoft.WebAssembly.Build.Tasks.GetChromeVersions" />

<Target Name="UpdateChromeVersion">
<GetChromeVersions
OSIdentifier="linux"
OSPrefix="Linux_x64"
Channel="$(ChromeChannel)"
MaxMajorVersionsToCheck="1"
IntermediateOutputPath="$(ArtifactsObjDir)">
<Output TaskParameter="ChromeVersion" PropertyName="linux_ChromeVersion" />
<Output TaskParameter="V8Version" PropertyName="linux_V8Version" />
<Output TaskParameter="BranchPosition" PropertyName="linux_ChromeRevision" />
<Output TaskParameter="BaseSnapshotUrl" PropertyName="linux_ChromeBaseSnapshotUrl" />
</GetChromeVersions>

<GetChromeVersions
OSIdentifier="win"
OSPrefix="Win_x64"
Channel="$(ChromeChannel)"
MaxMajorVersionsToCheck="1"
IntermediateOutputPath="$(ArtifactsObjDir)">
<Output TaskParameter="ChromeVersion" PropertyName="win_ChromeVersion" />
<Output TaskParameter="V8Version" PropertyName="win_V8Version" />
<Output TaskParameter="BranchPosition" PropertyName="win_ChromeRevision" />
<Output TaskParameter="BaseSnapshotUrl" PropertyName="win_ChromeBaseSnapshotUrl" />
</GetChromeVersions>

<PropertyGroup>
<_PropsContent>
&lt;Project&gt;
&lt;PropertyGroup&gt;
&lt;linux_ChromeVersion&gt;$(linux_ChromeVersion)&lt;/linux_ChromeVersion&gt;
&lt;linux_ChromeRevision&gt;$(linux_ChromeRevision)&lt;/linux_ChromeRevision&gt;
&lt;linux_ChromeBaseSnapshotUrl&gt;$(linux_ChromeBaseSnapshotUrl)&lt;/linux_ChromeBaseSnapshotUrl&gt;

&lt;win_ChromeVersion&gt;$(win_ChromeVersion)&lt;/win_ChromeVersion&gt;
&lt;win_ChromeRevision&gt;$(win_ChromeRevision)&lt;/win_ChromeRevision&gt;
&lt;win_ChromeBaseSnapshotUrl&gt;$(win_ChromeBaseSnapshotUrl)&lt;/win_ChromeBaseSnapshotUrl&gt;
&lt;/PropertyGroup&gt;
&lt;/Project&gt;
</_PropsContent>
</PropertyGroup>
<Message Text="Writing version props: $(_PropsContent)" Importance="High" />
<WriteLinesToFile Lines="$(_PropsContent)" File="$(RepositoryEngineeringDir)testing\ChromeVersions.props" Overwrite="true" />
</Target>

<Import Project="..\Directory.Build.targets" />

</Project>
95 changes: 59 additions & 36 deletions eng/testing/wasm-provisioning.targets
Original file line number Diff line number Diff line change
@@ -1,12 +1,43 @@
<Project>
<Import Project="$(MSBuildThisFileDirectory)ProvisioningVersions.props" />
<PropertyGroup>
<!--
Set ChromeChannel properties to get the latest versions
-->
<ChromeChannel>stable</ChromeChannel>

<ChromeOSIdentifier Condition="$([MSBuild]::IsOSPlatform('windows'))">win</ChromeOSIdentifier>
<ChromeOSIdentifier Condition="$([MSBuild]::IsOSPlatform('linux'))">linux</ChromeOSIdentifier>
<ChromeOSIdentifier Condition="'$(ChromeOSIdentifier)' == ''">unsupported-platform</ChromeOSIdentifier>

<!-- disable by default on unsupported platforms -->
<InstallChromeForTests Condition="'$(InstallChromeForTests)' == '' and '$(ChromeOSIdentifier)' == ''">false</InstallChromeForTests>

<FirefoxDir>$(ArtifactsBinDir)firefox\</FirefoxDir>
<FirefoxStampFile>$([MSBuild]::NormalizePath($(FirefoxDir), '.install-firefox-$(FirefoxRevision).stamp'))</FirefoxStampFile>
<_BrowserStampDir>$(ArtifactsBinDir)\</_BrowserStampDir>
</PropertyGroup>

<Import Project="$(MSBuildThisFileDirectory)ChromeVersions.props" />

<PropertyGroup Condition="'$(BrowserHost)' != 'windows'">
<FirefoxRevision>108.0.1</FirefoxRevision>
<FirefoxUrl>https://ftp.mozilla.org/pub/firefox/releases/$(FirefoxRevision)/linux-x86_64/en-US/firefox-$(FirefoxRevision).tar.bz2</FirefoxUrl>
<FirefoxBinaryName>firefox</FirefoxBinaryName>
</PropertyGroup>

<PropertyGroup Condition="'$(ChromeOSIdentifier)' == 'linux'">
<ChromeDirName>chrome-linux</ChromeDirName>
<ChromeDriverDirName>chromedriver_linux64</ChromeDriverDirName>
<ChromeBinaryName>chrome</ChromeBinaryName>
<ChromeDriverBinaryName>chromedriver</ChromeDriverBinaryName>
<_ChromeOSPrefix>Linux_x64</_ChromeOSPrefix>

<ChromeVersion>$(linux_ChromeVersion)</ChromeVersion>
<ChromeRevision>$(linux_ChromeRevision)</ChromeRevision>
<_ChromeBaseSnapshotUrl>$(linux_ChromeBaseSnapshotUrl)</_ChromeBaseSnapshotUrl>

<ChromeUrl>$(linux_ChromeBaseSnapshotUrl)/chrome-linux.zip</ChromeUrl>
<ChromeDriverUrl>$(linux_ChromeBaseSnapshotUrl)/chromedriver_linux64.zip</ChromeDriverUrl>
</PropertyGroup>

<PropertyGroup Condition="'$(ChromeOSIdentifier)' == 'win'">
Expand All @@ -15,18 +46,38 @@
<ChromeBinaryName>chrome.exe</ChromeBinaryName>
<ChromeDriverBinaryName>chromedriver.exe</ChromeDriverBinaryName>
<_ChromeOSPrefix>Win_x64</_ChromeOSPrefix>

<ChromeVersion>$(win_ChromeVersion)</ChromeVersion>
<ChromeRevision>$(win_ChromeRevision)</ChromeRevision>
<_ChromeBaseSnapshotUrl>$(win_ChromeBaseSnapshotUrl)</_ChromeBaseSnapshotUrl>

<ChromeUrl>$(win_ChromeBaseSnapshotUrl)/chrome-win.zip</ChromeUrl>
<ChromeDriverUrl>$(win_ChromeBaseSnapshotUrl)/chromedriver_win32.zip</ChromeDriverUrl>
</PropertyGroup>

<PropertyGroup>
<_BrowserStampDir>$(ArtifactsBinDir)\</_BrowserStampDir>
<PropertyGroup Condition="'$(ChromeVersion)' != ''">
<ChromeDir>$(ArtifactsBinDir)chrome\</ChromeDir>
<ChromeDriverDir>$(ArtifactsBinDir)chromedriver\</ChromeDriverDir>
<ChromeStampFile>$([MSBuild]::NormalizePath('$(ChromeDir)', '.install-$(ChromeVersion)-$(ChromeRevision).stamp'))</ChromeStampFile>
<ChromeDriverStampFile>$([MSBuild]::NormalizePath('$(ChromeDriverDir)', '.install-$(ChromeVersion)-$(ChromeRevision).stamp'))</ChromeDriverStampFile>

<ChromeBinaryPath>$([MSBuild]::NormalizePath($(ChromeDir), $(ChromeDirName), $(ChromeBinaryName)))</ChromeBinaryPath>
<ChromeDriverBinaryPath>$([MSBuild]::NormalizePath($(ChromeDriverDir), $(ChromeDriverDirName), $(ChromeDriverBinaryName)))</ChromeDriverBinaryPath>
</PropertyGroup>

<PropertyGroup Condition="'$(BrowserHost)' != 'windows'">
<FirefoxRevision>108.0.1</FirefoxRevision>
<FirefoxUrl>https://ftp.mozilla.org/pub/firefox/releases/$(FirefoxRevision)/linux-x86_64/en-US/firefox-$(FirefoxRevision).tar.bz2</FirefoxUrl>
<FirefoxBinaryName>firefox</FirefoxBinaryName>
</PropertyGroup>

<Target Name="DownloadAndInstallChrome"
AfterTargets="GetChromeVersion"
AfterTargets="Build"
Condition="(!Exists($(ChromeStampFile)) or !Exists($(ChromeBinaryPath))) and '$(InstallChromeForTests)' == 'true'">

<Error Condition="'$(ChromeVersion)' == ''"
Text="No %24(ChromeVersion) set. This can be set in eng/testing/ChromeVersions.props" />

<RemoveDir Directories="$(ChromeDir)" />

<Message Text="** Installing chrome version $(ChromeVersion), rev: $(ChromeRevision). To disable this set the msuild property InstallChromeForTests=false ."
Expand All @@ -46,9 +97,12 @@
</Target>

<Target Name="DownloadAndInstallChromeDriver"
AfterTargets="GetChromeVersion"
AfterTargets="Build"
Condition="(!Exists($(ChromeDriverStampFile)) or !Exists($(ChromeDriverBinaryPath))) and '$(InstallChromeForTests)' == 'true'">

<Error Condition="'$(ChromeVersion)' == ''"
Text="No %24(ChromeVersion) set. This can be set in eng/testing/ChromeVersions.props" />

<RemoveDir Directories="$(ChromeDriverDir)" />

<Message Text="** Installing chromedriver version $(ChromeVersion), rev: $(ChromeRevision). To disable this set the msuild property InstallChromeForTests=false ."
Expand Down Expand Up @@ -94,35 +148,4 @@

<Touch Files="$(FirefoxStampFile)" AlwaysCreate="true" />
</Target>

<UsingTask AssemblyFile="$(WasmBuildTasksAssemblyPath)"
TaskName="Microsoft.WebAssembly.Build.Tasks.GetChromeVersions" />

<Target Name="GetChromeVersion" AfterTargets="Build" Condition="'$(InstallChromeForTests)' == 'true'">
<GetChromeVersions
Condition="'$(ChromeVersion)' == ''"
OSIdentifier="$(ChromeOSIdentifier)"
OSPrefix="$(_ChromeOSPrefix)"
Channel="$(ChromeChannel)"
IntermediateOutputPath="$(ArtifactsObjDir)">
<Output TaskParameter="ChromeVersion" PropertyName="ChromeVersion" />
<Output TaskParameter="V8Version" PropertyName="V8Version" />
<Output TaskParameter="BranchPosition" PropertyName="ChromeRevision" />
<Output TaskParameter="BaseSnapshotUrl" PropertyName="_ChromeBaseSnapshotUrl" />
</GetChromeVersions>

<PropertyGroup Condition="'$(ChromeOSIdentifier)' == 'linux'">
<ChromeUrl>$(_ChromeBaseSnapshotUrl)/chrome-linux.zip</ChromeUrl>
<ChromeDriverUrl>$(_ChromeBaseSnapshotUrl)/chromedriver_linux64.zip</ChromeDriverUrl>
</PropertyGroup>
<PropertyGroup Condition="'$(ChromeOSIdentifier)' == 'win'">
<ChromeUrl>$(_ChromeBaseSnapshotUrl)/chrome-win.zip</ChromeUrl>
<ChromeDriverUrl>$(_ChromeBaseSnapshotUrl)/chromedriver_win32.zip</ChromeDriverUrl>
</PropertyGroup>

<PropertyGroup>
<ChromeStampFile>$([MSBuild]::NormalizePath('$(ChromeDir)', '.install-$(ChromeVersion)-$(ChromeRevision).stamp'))</ChromeStampFile>
<ChromeDriverStampFile>$([MSBuild]::NormalizePath('$(ChromeDriverDir)', '.install-$(ChromeVersion)-$(ChromeRevision).stamp'))</ChromeDriverStampFile>
</PropertyGroup>
</Target>
</Project>
11 changes: 6 additions & 5 deletions src/tasks/WasmBuildTasks/GetChromeVersions.cs
Original file line number Diff line number Diff line change
Expand Up @@ -24,10 +24,6 @@ public class GetChromeVersions : MBU.Task
private const string s_depsUrlPrefix = $"https://omahaproxy.appspot.com/deps.json?version=";
private const int s_versionCheckThresholdDays = 1;

// start at the branch position found in all.json, and try to
// download chrome, and chromedriver. If not found, then try up to
// s_numBranchPositionsToTry lower versions
private const int s_numBranchPositionsToTry = 50;
private static readonly HttpClient s_httpClient = new();

public string Channel { get; set; } = "stable";
Expand All @@ -44,6 +40,11 @@ public class GetChromeVersions : MBU.Task

public int MaxMajorVersionsToCheck { get; set; } = 2;

// start at the branch position found in all.json, and try to
// download chrome, and chromedriver. If not found, then try up to
// MaxBranchPositionsToCheck lower versions
public int MaxBranchPositionsToCheck { get; set; } = 75;

[Output]
public string ChromeVersion { get; set; } = string.Empty;
[Output]
Expand Down Expand Up @@ -240,7 +241,7 @@ private async Task<Stream> GetDownloadFileStreamAsync(string filename, string ur
string baseUrl = $"{s_snapshotBaseUrl}/{OSPrefix}";

int branchPosition = int.Parse(version.branch_base_position);
for (int i = 0; i < s_numBranchPositionsToTry; i++)
for (int i = 0; i < MaxBranchPositionsToCheck; i++)
{
string branchUrl = $"{baseUrl}/{branchPosition}";
string url = $"{branchUrl}/REVISIONS";
Expand Down