-
Notifications
You must be signed in to change notification settings - Fork 11
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
Consolidate workflows #37
Conversation
|
So it turns out sharing artifacts between .NET jobs isn't as simple as I'd hoped. .NET creates a lot of files outside of the build directory and even outside of the In the current iteration I have the following setup:
All jobs, except |
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.
Maybe I'm wrong for liking this but I like the 3 stage restore/build/[test|pack] (restore
, build --no-restore
, <action> --no-restore --no-build
) because then I can more easily blame each stage for how long they are taking and can track how long each steps take to blame them and evaluate possible improvements can be made. Because of that I know that restore on Windows generally takes much longer than it's equivalent step on Ubuntu.
In the same vein, before I had only tested --framework 462
on Windows because I considered the other TFM's covered by Ubuntu. With windows generally taking longer but also having slightly less to do the hope was that we can shorten the feedback loop a little bit.
Interested in your thoughts though.
@justindbaur thanks for the review 🙂
Having separate stages is still possible in this setup. The main differentiating factor is that, in this setup, those stages will be repeated across some jobs. If the goal is to measure performance of individual operations, then that can certainly be achieved – there will be more steps per job, but overall the situation won't change. Also, note that Windows runners are generally very slow. There's a recurring issue with just the
As you can see in the original workflow, the actual restore/build/test process wasn't the issue -- checkout was what took the longest amount of time: I don't think the overhead of the extra target is significant, but I can update the workflow to only run tests on |
So, to summarize:
If we want to retain the maximum efficiency that the previous workflow setup offered, we will have to merge all of the steps (except Note that currently, the duration of the workflow is essentially the duration of its slowest job ( What are your thoughts @justindbaur? |
@Tyrrrz When I was first setting up the jobs for multi targeting I was seeing the restore step take up a lot more time on windows, this was a particularly bad one. I would suspect that the I would agree that only running So I think please do separate out the stages, but you don't need to only run framework tests on windows right now. We can easily drop that in down the road but also I bet it's a little MSBuild |
@justindbaur Thanks for the feedback. I'll adapt the PR on Monday to incorporate your suggestions and tag you again :) |
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 this looks good!
@justindbaur please review again. Highlights:
|
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 great! Thanks for the changes.
This is my attempt to consolidate workflows from 2 to 1.
Highlights:
Please review this with high detail because it's hard to test locally 😅