-
Notifications
You must be signed in to change notification settings - Fork 5.2k
Use platform-matrix and split jobs by steps for libraries pipelines #274
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
Conversation
trylek
left a comment
There was a problem hiding this 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!
4ae62a5 to
3fa0328
Compare
|
/azp run runtime-libraries outerloop |
|
Azure Pipelines successfully started running 1 pipeline(s). |
jashook
left a comment
There was a problem hiding this 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.
|
/azp run runtime-libraries outerloop |
|
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 --> |
There was a problem hiding this comment.
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 |
There was a problem hiding this comment.
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?
There was a problem hiding this comment.
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
There was a problem hiding this comment.
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?
There was a problem hiding this comment.
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.
There was a problem hiding this comment.
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.
There was a problem hiding this comment.
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
There was a problem hiding this comment.
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.
There was a problem hiding this comment.
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.
There was a problem hiding this comment.
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.
There was a problem hiding this comment.
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 |
There was a problem hiding this comment.
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?
There was a problem hiding this comment.
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.
There was a problem hiding this comment.
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 |
There was a problem hiding this comment.
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.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
There was a problem hiding this comment.
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 |
There was a problem hiding this comment.
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.
There was a problem hiding this comment.
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.
122db5d to
029c37f
Compare
|
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. |
Or rather if there is no intent to emit In reply to: 560437235 [](ancestors = 560437235) Refers to: eng/referenceAssemblies.props:18 in f985105. [](commit_id = f985105, deletion_comment = False) |
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:
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