-
-
Notifications
You must be signed in to change notification settings - Fork 8.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
CI: Split Up Windows Signing Job #10240
Conversation
Wouldn't it make more sense to split this up into 2 separate actions (see also https://github.com/actions/cache which maintains separate That way you can use Also allows us to keep each usage scenario self-contained in a bespoke action for each without having to increase complexity of a single action. |
There's still a decent bit of overlap and I didn't want to create two separate places to keep up to date as far as third-party actions and hashes goes. There are also two steps that could be removed entirely now given that we have decided not to sign manifests on CI for the foreseeable future. Edit: Another one could be removed if we stop double-zipping our Windows builds on CI. With the new artifacts v4 system that is no longer necessary for speed. |
Right, I'll hold off on further review until those refinements have landed. |
One thing that should definitely be changed is the name of the action however - every other action in the repo has a name that clearly states its intent/job (e.g. "build-obs", "run-clang-format", "steam-upload"), so this one sticks out. I'd prefer if |
2edabbc
to
40825a3
Compare
Updated now to properly support the dual-signature feature we want to use for game capture in 30.2 while we transition to the new cert. Also cleaned up a few things and tested it to make sure the draft release is created with the installer and ZIPs properly added and hashed.
By that, do you meant the name of the folder ( |
40825a3
to
e785929
Compare
Yep, something like |
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.
Commit message nits:
- sigining -> signing
- windows -> Windows
Otherwise, seems fine.
It stands for Building OBS Updates Fast(er). |
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.
Is the package
step (of the workflow and the action) ever run without a consecutive update
step as which makes "merging" two separate workflows and actions into the same file necessary.
They're always run consecutively, they're just split up so that the creation of the draft release is not blocked by the creation of the updater files, which can take a long time (~28 minutes). Since the action in both cases is almost identical save for two steps and a command line parameter I didn't want to split it up and have to maintain two files that are mostly the same. |
I'd argue that the latter is preferable (see also the code formatting actions) because it puts logical representation of workflow actions/steps before implementation (as the implementation can and should change over time). If something about the packaging action changes, it then requires ensuring that both packaging and signing will work because both are intermingled in the same "thing". Also if updater creation takes that long, I'd just throw it into the |
Previously we decided that we wanted to have the updater files ready for testing and deployment before we publish a github release, so that's a question for @RytoEX if we want to go back on that. We could then also move the Sparkle job into the publish workflow and increase the number of deltas there so we cover more than one version as well (Windows currently goes back ~2 years) and just let it take however long it takes. |
I think I'm okay with experimenting with this. It would mean adjusting our overall release workflow a bit (GitHub would end up being first, with everything else following after), but I'm not strictly opposed. @PatTheMav ? |
Putting the Sparkle job in the release workflow seems beneficial to me as well. |
With that in mind I would then propose the following approach:
This will also make way for the following changes:
|
e785929
to
b683b80
Compare
Implemented the changes outlined above, tested it on my fork as well and seems to work fine. |
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 good to me. How much work would it be to add arm64 Windows builds to this?
Mainly I'm interested in how much more work would it be to make the architecture a variable now vs later when we actually produce arm64 builds (so does YAGNI apply or not).
To be honest I've not really thought about how we'll handle multi-architecture Windows at all yet. Will require some further thought about how we want to implement that in the Windows updater setup, e.g. go the Sparkle route and have different feeds entirely, or do we want something unified (no need to duplicate non-binary files), etc. |
b683b80
to
6880b7c
Compare
6880b7c
to
ab0bb21
Compare
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 fine other than my question about rclone/pandoc versions.
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.
Seems fine.
Description
Splits up the windows signing workflow into "package" and "updater" steps which are responsible for the singing/packaging and creation of updater files/delta updates respectively.
Motivation and Context
How Has This Been Tested?
Partially tested on my fork, will require follow-up test once finalised.
Types of changes
Checklist: