-
Notifications
You must be signed in to change notification settings - Fork 4.9k
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
Add root build definition which builds the entire repo #98
Comments
Adding @jkoritzinsky who is currently making progress on "live live build" as there seems to be quite a bit of overlap to prevent duplication of efforts. |
Just wanted to make sure we're all in the same page as we've had super long discussions on Friday on what the plan is for this. (You guys were OOF). @jashook @sbomer and I, discussed on the structure for this and we think we shouldn't put an effort to put up a pipeline that builds the entire repo just yet as we should try and re-use as much as possible from the CI builds in order to parallelyze. Also @dagood was going to put a pipeline that uses the local live live logic that @jkoritzinsky put up together for one configuration in order to start the signing work and then the signing work should just be ported over to the "libraries" live live CI build as part of the official build. As a result of that @jashook put up together this file: https://github.com/dotnet/consolidation/pull/30 |
Thanks for summarizing the status. Removing my assignment as work is already in progress here. |
I've updated the description to summarize the last plan that we discussed today in the morning. Please feel free to update and comment with thoughts and opinions if you agree or disagree with something on that plan. |
Sounds great to me. As to the nearest sequencing, my expectations are the following:
|
Hearing of that the first time. Do we actually want that? |
I think I missed this as well. There are interesting benefits to doing this. We will de-duplicate the builds on the outerloop jobs in the same way as the PR. It would also remove the possibility that a change to one pipeline silently breaks another pipeline's outerloop testing. It does have drawbacks though. Outerloop testing would be difficult to determine specific problems by CI council. In addition, metrics for test failures and other statistics for the pipeline, which are heavily used currently become noisier. Lastly, we will most likely keep runtime.yml as close to internal.yml as possible. I think this naturally expands to wanting to share as much logic with outerloop testing as possible. I personally think that machine utilization is important enough to deal with noisier analytics. As for tracking to 95% success rate of the pipeline. I think I am fine with tracking all four in the same pipeline, realistically we all have the same goal and it makes sense to have some sense of shared responsibility. |
I wanted to summarize what we just discussed in the infra standup: We should have four layers of builds:
|
I have a PR open for signed/official builds: #1016. Still doing a little more validation on publish. |
#1016 is merged, and the first build is running here: https://dev.azure.com/dnceng/internal/_build/results?buildId=461841&view=results. 🎉 Now monitoring for publish results, and we'll be working on pushing them downstream. |
Succeeded, but didn't publish to dotnetcli, only the blob feed (https://dotnetfeed.blob.core.windows.net/dotnet-core/assets/core-setup/Runtime/5.0.0-alpha.1.19618.2/dotnet-runtime-5.0.0-alpha.1.19618.2-win-x64.exe). Looks like dotnet/core-setup#8426 never got ported to
/cc @mmitche |
It also looks like CoreCLR packages weren't published, seeing dotnet/winforms#2533. |
Fixes for dotnetcli publish (#1092) and CoreCLR publish (#1090) are now both merged. https://dev.azure.com/dnceng/internal/_build/results?buildId=463477&view=results is running with the fixes. I'm monitoring and will post an update once it's done. ~3-4 hours seems to be the norm. |
Looks like it worked, for example this got published: and But auto-update PRs weren't updated with this new build, not sure why. Will look into that when I have a chance. |
Auto-update PRs were updated, but are in a bad state. Filed #1129 for aspnet/extensions and dotnet/toolset. Some native crypto issue. dotnet/winforms is waiting for an update from repo maintainers. dotnet/winforms#2533 |
The PR is still failing to build:
|
See dotnet/winforms#2533 (comment) about the WinForms issue. |
Status:
|
Done by: #1473 |
Ported from @jashook's doc: https://github.com/dotnet/consolidation/pull/30
Overview
The purpose of this comment is to give a design of the CI build of
dontet/runtime
using the live builds of each folder under src. This replace the old package restore dependency flow between what used to bedotnet/coreclr
,dotnet/corefx
anddotnet/core-setup
.It is important to note that this focuses on the
CI
build of thedotnet/runtime
product. This distinction is required because the developer worklow for the repository is different and is being added here: #55.Goal
We want to have a single pipeline that builds a minimum matrix of coreclr, libraries and installer for all paths in the repository excluding
docs/*
.The simple justification is that our setup already mostly requires this. Coreclr changes have to build libraries to run tests. Libraries has to build CoreCLR to build and to run tests once we're live / live. The only real delta here is whether or not to build installers. That can be done in parallel with testing though hence it doesn't affect throughput.
The approach would be to condition a full platform matrix and condition test runs based on changed paths. There would be an early job which defines variables (i.e
changedLibraries
,changedCoreClr
) and then we would condition build and test jobs based on those variables.The downside to this approach is that a bunch of jobs will be shown as skipped when the path doesn't applies, but long-term we can request a feature that defines a variable at compile time with the changed paths and then we can condition at compile time rather than run time.
The advantages is that now we have less .yml entry-points to maintain and we avoid a lot of build duplication on our CI when a change touches multiple subsets.
Building
runtime/src/coreclr
andruntime/src/corefx
should each have templates which allow the following parameters, platforms:[<OS>_<Arch>]
, buildConfig[debug, checked, release]
, jobTemplate.Sample yml:
This will allow us to re-use the platform fan out template logic for the coreclr and libraries steps build.
This is about to be done for coreclr and libraries (#294 and #274).
Pipeline mock up
build coreclr
->build libraries
->build installer
->sign
->publish
build coreclr (full matrix including checked builds)
->build libraries
->build libraries tests, build coreclr managed tests, build coreclr native tests
->run tests
build coreclr
->build libraries
->build libraries tests
->run libraries tests
build coreclr
->build libraries
->build installer
->build installer tests
->run installer tests
cc @dotnet/runtime-infrastructure
The text was updated successfully, but these errors were encountered: