Skip to content

Conversation

@safern
Copy link
Member

@safern safern commented Nov 26, 2019

In this PR we now use platform-matrix and the shared logic to define pool, containers, helix-queues, xplat variables, checkout the repo, etc.

Also, as part of this PR we now split the builds as follows:

  1. Build sources
  2. Build tests for 3 different OSs (Linux, OSX and Windows).
  3. Run tests for our test matrix.

At the beginning this might cause slower builds, but there will be follow up work in order to improve them as we're changing the queues to align with what coreclr uses in order to share the same native toolset and to be coherent with hour dependencies.

Of course we will keep working on improving CI times and making it better.

This is needed for coreclr to depend on libraries steps for live-live CI and next steps are to start plumbing coreclr into libraries builds.

Also, there's clean-up we can do afterwards to consolidate artifacts names and all the paths we use to publish and download artifacts.

FYI: @stephentoub

cc: @dotnet/runtime-infrastructure

Copy link
Member

@trylek trylek left a comment

Choose a reason for hiding this comment

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

Looks awesome to me. Thank you!

@safern safern force-pushed the LibrariesLiveLiveCi branch from 4ae62a5 to 3fa0328 Compare November 26, 2019 08:53
@safern
Copy link
Member Author

safern commented Nov 26, 2019

/azp run runtime-libraries outerloop

@azure-pipelines
Copy link

Azure Pipelines successfully started running 1 pipeline(s).

@safern safern marked this pull request as ready for review November 26, 2019 09:00
Copy link
Contributor

@jashook jashook left a comment

Choose a reason for hiding this comment

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

This looks great thank you for the work.

@safern
Copy link
Member Author

safern commented Nov 26, 2019

/azp run runtime-libraries outerloop

@azure-pipelines
Copy link

Azure Pipelines successfully started running 1 pipeline(s).

<PropertyGroup>
<IsReferenceAssembly Condition="'$(IsReferenceAssembly)' == '' and ($(MSBuildProjectFullPath.Contains('\ref\')) or $(MSBuildProjectFullPath.Contains('/ref/')))">true</IsReferenceAssembly>

<!-- Create a common root output directory for all reference assemblies -->
Copy link
Member

Choose a reason for hiding this comment

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

the comment needs to be updated.

value: $(Build.SourcesDirectory)/src/libraries
- name: pipelinesPath
value: /eng/pipelines/libraries
- name: isOfficialBuild
Copy link
Member

@ViktorHofer ViktorHofer Nov 26, 2019

Choose a reason for hiding this comment

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

isn't this something that coreclr's and installer's pipelines would use as well?

Copy link
Contributor

Choose a reason for hiding this comment

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

It is unclear if it will be used I think

Copy link
Member

Choose a reason for hiding this comment

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

don't you have any logic specific to internal builds?

Copy link
Member

Choose a reason for hiding this comment

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

Please just be considerate with making additional fundamental changes at this point as it will reset all the testing and delay my live-live pipeline work. Frankly speaking I would be the happiest if we could merge this change in right now its current form and follow up with additional cleanups in separate PR's.

Copy link
Member

Choose a reason for hiding this comment

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

I'm reviewing the PR right now and will comment on what points out. We can address those in a subsequent PR of course.

Copy link
Member Author

Choose a reason for hiding this comment

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

That was my plan. So at part of this iteration I wanted to just make the minimal set of changes on how we had set it up for libraries (using the same variables and all that). In a follow-up PR I plan working with @trylek and trying to define as much shared variables as possible.

But yes, this template can be shared and we can have a variable to know if it is internal or public build. As they use that to define the helix-queues. https://github.com/dotnet/runtime/blob/master/eng/pipelines/coreclr/templates/helix-queues-setup.yml#L118

Copy link
Member Author

Choose a reason for hiding this comment

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

So making changes around it now seems like effort incorrectly spent.

Yes, that's why I wanted to leave pretty much as is. Don't want to spin up CI again.

Anyway I will have a follow-up PR probably to unify the test and build steps again for the time being as the machine provisioning delay is impacting the build time by a LOT.

Copy link
Member

Choose a reason for hiding this comment

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

Thanks.

I believe code which is added via a PR should be reviewed carefully. In my experience, changing or getting rid of stuff after-merge is more costly/complex, mainly because of the lack of context. I would prefer having TODO comments where we intend to change the behavior later but I understand that we want to get this in asap therefore I'm fine with not adding them now.

Copy link
Member

Choose a reason for hiding this comment

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

This applies to any kind of PR, not specific to this one.

Copy link
Member Author

Choose a reason for hiding this comment

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

For this one since the changes were complicated and since we don’t really know what the final shape is going to be, I didn’t even knew which TODOs to add. After this is merged I will go and investigate what can be removed, honestly I submitted it as is as it was blocking @trylek.

I think reviewing the build result and platform matrix should suffice.


# Windows variables
- ${{ if eq(parameters.osGroup, 'Windows_NT') }}:
- _msbuildCommand: powershell -ExecutionPolicy ByPass -NoProfile eng\common\msbuild.ps1 -warnaserror:0 -ci
Copy link
Member

Choose a reason for hiding this comment

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

why do we need warnaserror false here?

Copy link
Member Author

Choose a reason for hiding this comment

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

Actually this was ported to xplat-setup and I can remove it. And I also think it was added for a reason I can’t remember anymore. So I will remove it in a follow up PR.

Copy link
Member

@ViktorHofer ViktorHofer Nov 26, 2019

Choose a reason for hiding this comment

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

Thanks.

And I also think it was added for a reason I can’t remember anymore.

That's exactly what I was referring to above with "lack of context" :)


- ${{ if eq(parameters.isOfficialBuild, true) }}:
- task: DotNetCoreCLI@2
displayName: Restore internal tools
Copy link
Member

Choose a reason for hiding this comment

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

I think it's worth discussing if we should extract that into the common layer in a subsequent PR.

Copy link
Member

Choose a reason for hiding this comment

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

Copy link
Member Author

Choose a reason for hiding this comment

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

Yeah I think this should definitely go into the common layer whenever we do the official build.

archType: ''
framework: netcoreapp
isOfficialBuild: false
timeoutInMinutes: 150
Copy link
Member

Choose a reason for hiding this comment

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

can we adjust the timeout per leg? Often we needed to change it only for arm/arm64.

Copy link
Member Author

Choose a reason for hiding this comment

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

Yes, we can override it in platform-matrix.

@safern safern force-pushed the LibrariesLiveLiveCi branch from 122db5d to 029c37f Compare November 27, 2019 01:53
@safern
Copy link
Member Author

safern commented Nov 28, 2019

I've modified the PR to run the tests as part of the build step (however the templates for granular steps is already there). The reason why I had to do this is because it turns out our tests are Configuration dependent, so if you build the tests on Debug they test framework behavior for that configuration, which was causing the build to have test failures because we wanted to have the minimal set of test builds. In order to avoid expanding the build-test matrix and introduce more steps, I decided to keep it simple to unblock @trylek's work to be able to merge before the holidays so that he can make progress on his end.

The plan is to submit a PR to make tests Configuration agnostic and once that's in, I can go back to what I had initially in .azure-ci and I will also do the clean up suggested in the reviews.

@safern
Copy link
Member Author

safern commented Nov 28, 2019

Libraries CI which is the only one really affected is green. Will merge to unblock @trylek's work, I will follow up with PRs once #378 is merged.

@safern safern merged commit ef33d76 into master Nov 28, 2019
@safern safern deleted the LibrariesLiveLiveCi branch November 28, 2019 10:23
@jaredpar
Copy link
Member

jaredpar commented Dec 2, 2019

<!-- disable CS8597 because we throw null on reference assemblies. -->

Is there an issue tracking the reference assembly code producing throw null! instead of disabling this warning?


Refers to: eng/referenceAssemblies.props:18 in f985105. [](commit_id = f985105, deletion_comment = False)

@jaredpar
Copy link
Member

jaredpar commented Dec 2, 2019

<!-- disable CS8597 because we throw null on reference assemblies. -->

Or rather if there is no intent to emit null correct code in reference assemblies, reasonable, why not use nullable annotate instead of compiling with nullable checking?


In reply to: 560437235 [](ancestors = 560437235)


Refers to: eng/referenceAssemblies.props:18 in f985105. [](commit_id = f985105, deletion_comment = False)

@ghost ghost locked as resolved and limited conversation to collaborators Dec 11, 2020
Sign up for free to subscribe to this conversation on GitHub. Already have an account? Sign in.

Projects

None yet

Development

Successfully merging this pull request may close these issues.

7 participants