-
Notifications
You must be signed in to change notification settings - Fork 1.4k
Use Azure Trusted Signing #5122
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
Verified artifacts from this workflow run:
|
Verified artifacts from this workflow run:
|
Use Azure Trusted Signing to sign the Windows artifacts instead of the existing code-signing certificate.
- Refactor workflow so that the Windows binary can be signed before it is added to the Windows installer. - Avoid string interpolation in shell commands.
Add comments to workflow where relevant.
Resolve TODO to check that unsigned builds work.
Restore publish jobs now that testing is completed.
48403c5
to
3e84893
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.
Pull Request Overview
This PR migrates from traditional certificate-based code signing to Azure Trusted Signing for Windows artifacts in the GitHub Actions build workflow. The change adds signing for the k6.exe
binary itself and replaces the existing MSI installer signing process.
- Implements Azure Trusted Signing using Microsoft's Sign CLI tool and Azure authentication
- Adds conditional signing logic that only signs artifacts from the default branch, version tags, or manual dispatches
- Restructures the Windows packaging workflow to separate binary signing, installer creation, and installer signing into distinct jobs
Tip: Customize your code reviews with copilot-instructions.md. Create the file or learn how to get started.
Fix missing artifact to use for the installer build.
Restore conditions now testing is completed.
Addressed various review comments:
|
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.
LGTM!
I have a comment around naming, that is not blocking, and would be nice if we can it run the signing again before we merge it.
Thank you for all the work 🙇
.github/workflows/build.yml
Outdated
subscription-id=azure-trusted-signing:subscription-id | ||
tenant-id=azure-trusted-signing:tenant-id | ||
# TODO Add functionality to allow passing a directory to sign without needing an artifact first |
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 we are uploading this before so the workflow can download it?
If so can we ranem it to windows-binary-to-sign
to again be something that is more obvious
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.
No, it's also needed for when the workflow runs when signing is disabled (e.g. in a PR) (see 69ba0db).
Although that does mean as the artifact has to exist anyway I can just delete the comment.
The artifact is needed anyway.
I think we're good as-is. To run it again with signing, as this is a PR, I would have to re-edit the PR force it on and ensure there isn't an accidental real publish, then revert those changes again before it can be merged. The edits since the last run with signing are trivial enough that I think there's enough confidence it works for both unsigned and signed builds. |
Update the `Manufacturer` value to match the new Windows signing certificate (grafana#5122).
Update the `Manufacturer` value to match the new Windows signing certificate (#5122).
What?
Use Azure Trusted Signing to sign the Windows artifacts instead of the existing code-signing certificate.
The
k6.exe
file itself is now also signed.I suggest this is merged as-is to complete the rotation of the certificate, then I can do a follow-up PR to refactor this to use a shared re-usable action for signing once that's implemented and merged (see grafana/shared-workflows#1290).Before
After
Why?
The existing certificate expires on Thursday 2nd October 2025.
Checklist
I have added tests for my changes.I have run linter and tests locally (make check
) and all pass.Checklist: Documentation (only for k6 maintainers and if relevant)
I have updated or added an issue to the TypeScript definitions: grafana/k6-DefinitelyTyped#NUMBER if applicableRelated PR(s)/Issue(s)
None.