-
Notifications
You must be signed in to change notification settings - Fork 1k
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
Refactor pipelines and add Installer jobs #40983
Conversation
…eline currently. Lots of commented bits. Only trying Windows builds.
… of the task. Forgot publishArgument for the build. Testing stuff with PhaseName.
… SetupNugetSources for now.
… container is set or not.
…es with variables. Only trying Windows builds for the moment. Many smaller fixes, including names of things.
…red to do the foreach logic.
@MiYanni I pushed a couple commits into your branch as the official build was failing because of duplicate assets. I also updated with latest main and fixed a missing |
With the latest commits the build manifest diff looks good. VS specific packages were missing which got fixed with the last commit. Wixpacks were also missing from signing/publishing which I fixed with the second last commit. Official validation build: https://dev.azure.com/dnceng/internal/_build/results?buildId=2457090&view=results The |
The |
@ViktorHofer That job ran just fine on my test runs for this PR: https://dnceng-public.visualstudio.com/public/_build/results?buildId=679666&view=logs&j=57a330b1-3866-5e48-ad49-546a977eda14 |
My theory is that this regressed with a recent dependency flow. |
Looking at the VMR windows failure |
Note
The commits for this PR will be squashed when merged.
Important
The publishing stage in the dotnet/installer repo MUST be disabled prior to merging this PR.
Summary
In the effort to move the dotnet/installer repo into this repo, we needed to move the different pipeline jobs into this repo. I realized when looking into this that there are a lot of different jobs in the Installer repo versus this repo. So, it was necessary to consolidate and refactor the pipelines in this repo to handle all the new variations.
I had some goals going into this:
Design
Due to the recent changes required for the 1ES PT, this design took several iterations. I attempted to use strategy matrix at first, but this didn't work as much of the information passed to the 1ES PT needs to be compile-time parameters, such as pool and container information. Strategy matrix only provides run-time variables, so I hit a limitation with it when trying to do the Linux container builds.
The main design uses the each expression to scaffold the different jobs and information that pertains to those jobs, which I've called parameter sets. There is one parameter set array per platform (windows, linux, macOS) so that we can have a set of default parameter sets which pertain to the jobs that run tests (generally, PR builds). Since there are also internal PRs, these default parameter set arrays are also used in the CI yaml in that particular situation.
The hierarchy is as such:
.vsts-ci.yml
or.vsts-pr.yml
) calls thesdk-job-matrix.yml
template per platform (windows, linux, macOS)..vsts-ci.yml
, while the default parameter sets (for testing) are defined insdk-job-matrix.yml
.sdk-job-matrix.yml
template uses an each-expression to create separate instances ofsdk-build.yml
per parameter set array entry.sdk-build.yml
template.sdk-build.yml
template calls the appropriatejob.yml
template in Arcade depending on if the pipeline using 1ES PT or not.oneESCompat
parameter provides the strings necessary to switch the appropriate paths and tasks for the 1ES PT-based pipeline (.vsts-ci.yml
).runTests
is set to true, which it is by default, but set to false for regular CI builds.sdk-defaults.yml
which has some shared variables between the pipeline yamls (.vsts-ci.yml
and.vsts-pr.yml
).Worthy Mentions
build-configuration.json
a toggleable step as part of the main job, instead of needing a separate job that has to allocate an agent to publish 1 json file to the artifacts.locBranch: release/8.0.4xx
displayName
for the jobs so that the job names have an easy and human-readable structure to them..vsts-ci.yml
pipeline instead of the.vsts-pr.yml
)Release
, which was decided upon for simplicity.Test Runs