Skip to content

Conversation

@HaoK
Copy link
Member

@HaoK HaoK commented Aug 9, 2021

See https://dev.azure.com/dnceng/public/_build?definitionId=1026&_a=summary for the new pipeline, this will run the windows test leg (which contains components e2e tests). Starting point for moving components e2e tests out of pr checks.

Next steps to consider:

  • only run components e2e tests
  • also run quarantined tests?
  • add triggers (every 4 hours/daily?)

cc @SteveSandersonMS @pranavkm @davidfowl

@HaoK HaoK requested a review from a team as a code owner August 9, 2021 19:04
@ghost ghost added the area-infrastructure Includes: MSBuild projects/targets, build scripts, CI, Installers and shared framework label Aug 9, 2021
@SteveSandersonMS
Copy link
Member

SteveSandersonMS commented Aug 10, 2021

also run quarantined tests?

@HaoK That part is important. Do you have a suggestion on how we do that? Do we need some new functionality within the build system to support that, or is there an existing flag or similar we could pass?

Update: see below.

@SteveSandersonMS
Copy link
Member

SteveSandersonMS commented Aug 10, 2021

Actually, I have a better proposal for how we handle the quarantined E2E tests:

  1. We stop running the components E2E test as part of the main build pipeline
    • ... but in some way that doesn't also stop them from running in the new pipeline that @HaoK has added in this PR
  2. We unquarantine all the components E2E tests unconditionally
  3. For any of them that really fail in the new pipeline, we investigate and either fix or requarantine, depending on whether we think there's an easy fix

This is because the existing set of quarantines for E2E test are just random noise. The quarantinings in most cases don't reflect any reality about reliability; they are just a record of prior random failures due to unknown causes that might be infrastructural. It's likely that some of the tests do have genuine problems, but we have no reason to think it's all or even most of the quarantined ones.

What do you think, @HaoK? And how can we stop the components E2E tests from running in the main build pipeline without also stopping them running in your new pipeline? Once we solve that I think we could merge this PR 😄

@HaoK
Copy link
Member Author

HaoK commented Aug 10, 2021

Yeah that sounds reasonable to me, my guess is that if you enable all of the tests the failure rate will be very high but that's a good idea to start from no quarantine.

I think the easiest way to do what you want is to add a new property to the Components E2ETest csproj like this:

    <SkipTests Condition="'$(RunComponentTests)' != 'true'">true</SkipTests>

Similar to how template tests are selectively run as well: https://github.com/dotnet/aspnetcore/blob/main/src/ProjectTemplates/test/ProjectTemplates.Tests.csproj#L12

Then in the yaml for ci you just need to set it to false: add a new /p:RunComponentTests=false

https://github.com/dotnet/aspnetcore/blob/main/.azure/pipelines/ci.yml#L656

And we'd also add a /p:RunComponentTests=true to the components pipeline in this PR, and you'd also probably want to turn off any other tests that run in the windows test group (signalr? I'm not sure what else this runs today, but I know there's a few other remaining tests in there)

@HaoK
Copy link
Member Author

HaoK commented Aug 10, 2021

You don't actually need to unquarantine tests for this new pipeline either, you can just specify: /p:RunQuarantinedTests=true which will run them all

@HaoK HaoK requested a review from a team as a code owner August 11, 2021 15:42
@SteveSandersonMS
Copy link
Member

@HaoK Hope this is OK - I've added a further change here intended to complete what we need for now (disabling the e2e tests in the main build). It uses the technique you recommended.

Copy link
Member

@SteveSandersonMS SteveSandersonMS left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Also looking for your review @HaoK on the further update I did here.

@HaoK
Copy link
Member Author

HaoK commented Aug 11, 2021

Looks good to me, altho there's one further thing to consider since there also seems to be build reliability with the E2E test app, which is to skip building the project in the main ci.yml as well?

@SteveSandersonMS
Copy link
Member

@HaoK I didn't realise there were any issues building the E2ETests project. That sounds serious and we would want to know if that goes wrong. I don't think we should be suppressing that kind of problem (e.g., maybe it reflects some actual SDK issue).

@HaoK
Copy link
Member Author

HaoK commented Aug 11, 2021

Also once you have this pipeline as follow-up, might be worth looking into how to inclue the blazor templates + new playwright e2e as part of this pipeline which are currently in quarantine on the helix legs

@HaoK
Copy link
Member Author

HaoK commented Aug 11, 2021

I didn't realise there were any issues building the E2ETests project. That sounds serious and we would want to know if that goes wrong. I don't think we should be suppressing that kind of problem (e.g., maybe it reflects some actual SDK issue).

Yeah its usually some variation of something in the basictest app being filed locked, sometimes when compression, sometimes during other build steps. We've had that issue for a long time in some form or another, I saw it on a few builds recently (both locally) and on CI

@SteveSandersonMS
Copy link
Member

@HaoK Looking at the list of checks in the GitHub UI now, I see it no longer includes anything about this new pipeline. Have I broken it? I did rename the file from components.yml to components-e2e-tests.yml. Would that have somehow stopped it from running?

Yeah its usually some variation of something in the basictest app being filed locked, sometimes when compression, sometimes during other build steps. We've had that issue for a long time in some form or another, I saw it on a few builds recently (both locally) and on CI

That sounds like an issue we need to debug, not suppress.

@SteveSandersonMS
Copy link
Member

Oh wait, I see - it's in the AzDO config. I'll try to update it.

@SteveSandersonMS
Copy link
Member

Done - it's running now.

@HaoK
Copy link
Member Author

HaoK commented Aug 12, 2021

Looks like its green, so do you want me to merge this or are you going to merge this?

@SteveSandersonMS SteveSandersonMS merged commit 64dca63 into main Aug 12, 2021
@SteveSandersonMS SteveSandersonMS deleted the haok/sel branch August 12, 2021 07:21
@ghost ghost added this to the 6.0-rc1 milestone Aug 12, 2021
@SteveSandersonMS
Copy link
Member

Merged 👍

Thanks for sorting out the main parts of this Hao!

@dougbu
Copy link
Contributor

dougbu commented Aug 12, 2021

Note this pipeline runs more than just components tests e.g. the overall ASP.NET Core functional tests. Was that intended❔

@HaoK
Copy link
Member Author

HaoK commented Aug 12, 2021

I pointed that out as well, but I think for the purposes of a tripwire for components, its probably harmless as is, since its unlikely that the other tests are going to be what causes this check to be red

@github-actions github-actions bot locked and limited conversation to collaborators Dec 8, 2023
Sign up for free to subscribe to this conversation on GitHub. Already have an account? Sign in.

Labels

area-infrastructure Includes: MSBuild projects/targets, build scripts, CI, Installers and shared framework

Projects

None yet

Development

Successfully merging this pull request may close these issues.

4 participants