-
Notifications
You must be signed in to change notification settings - Fork 96
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
Implement workflow to create GitHub release with attached git
installers
#399
Conversation
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.
This looks good!
I have a couple suggestions for the next steps:
- Please tag the tip of your branch using a tag name that matches the pattern (e.g.
v2.32.0.vfs.0.123
) and push to this repository (you should have write permissions). That will give us a test run with a draft release as something we can look at. - Since we will be forward-porting these patches with every rebase to every new Git for Windows version, I think it would make sense to prefix the commit messages with some sort of catchy "area" (and then continue in lower-case as is upstream Git's custom), e.g. "release: create initial Windows installer build".
- The first five commits are structured really well, I think. The commits starting with ab7655f look a bit like fixups to me. Would you mind squashing those changes into the appropriate commits?
- Regarding the secrets, I wonder whether we want to create a new workflow environment and install them there, then protect the environment by adding our team as require reviewer. That way, it is not enough to simply push the tag, but a member of our team has to approve the run, reducing the likelihood of those secrets being leaked inadvertently. In preparation for that, I created the
build-git-installers
environment (but if we decided that we don't want it, we can always delete that environment later). As far as I understand, all that needs to be done is to addenvironment: build-git-installers
to the jobs (unfortunately, it has to be done individually for every job that requires access to those secrets and cannot be configured on the workflow level, on the upside, this would allow us for finer-grained control where e.g. the ubuntu jobs have no access to the code-signing certificate, but it is probably not worth the effort in our context).
- trigger on tag matching basic "vfs" version pattern - validate tag is annotated & matches stricter checks - include `scalar` - build x86_64 & portable git installers, upload artifacts to workflow
- include `scalar` - build *unsigned* .dmg & .pkg for target OS version 10.6 - upload artifacts to workflow
- include `scalar` - build & upload unsigned .deb package
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. I mostly pointed out things that caught my eye, but don't actually need to change.
# Verify tag follows rules in GIT-VERSION-GEN (i.e., matches the specified "DEF_VER" in | ||
# GIT-VERSION-FILE) and matches tag determined from trigger | ||
make GIT-VERSION-FILE | ||
test "${{ steps.tag.outputs.version }}" == "$(sed -n 's/^GIT_VERSION = //p'< GIT-VERSION-FILE)" || die "GIT-VERSION-FILE tag does not match ${{ steps.tag.outputs.name }}" |
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.
This is a clever way to quickly check the tag matches the compiled Git version.
OSX_VERSION: 10.6 |
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.
Put this on the list of something we could update in our fork of git_osx_installer
, but this is a good workaround for now.
- name: Download Windows portable installer | ||
uses: actions/download-artifact@v2 | ||
with: | ||
name: win-portable-x86_64 | ||
path: win-portable-x86_64 | ||
- name: Download Windows x86_64 installer | ||
uses: actions/download-artifact@v2 | ||
with: | ||
name: win-installer-x86_64 | ||
path: win-installer-x86_64 |
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.
Action item for later: we have also been including the PDB files with our releases, on the off chance that we need to do a perf investigation with PerfView.
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.
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'll defer to @dscho here. I've only needed the PDBs for Git and not the rest. Further, our Azure Pipelines build only generated those PDBs. We should also be able to leverage the PDBs from git-for-windows/git
if we ever need to go into those dependencies.
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.
If it's alright with you, I'll open a separate issue for this - minor changes are needed in git-for-windows/build-extra
to include the PDBs in the installer (since this is built slightly differently than in the existing Azure DevOps pipeline) .
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.
That works for me. Incremental progress is important.
- sign using Azure-stored certificates & client - sign on Windows agent via python script - job skipped if credentials for accessing certificate aren't present
- create release & uploads artifact using Octokit - use job "if" condition to handle uploading signed *or* unsigned .deb
@dscho since I can't reply directly to your comment:
Tagged
Both of these items are done/addressed
The secrets used in this job were all pre-existing at the repository level and are used in other workflows ( |
Add HOME environment to fix code-signing on Windows build
Implement workflow to create GitHub release with attached `git` installers
Implement workflow to create GitHub release with attached `git` installers
Implement workflow to create GitHub release with attached `git` installers
Implement workflow to create GitHub release with attached `git` installers
Implement workflow to create GitHub release with attached `git` installers
Implement workflow to create GitHub release with attached `git` installers
Implement workflow to create GitHub release with attached `git` installers
Implement workflow to create GitHub release with attached `git` installers
Implement workflow to create GitHub release with attached `git` installers
Implement workflow to create GitHub release with attached `git` installers
Implement workflow to create GitHub release with attached `git` installers
Implement workflow to create GitHub release with attached `git` installers
Implement workflow to create GitHub release with attached `git` installers
Implement workflow to create GitHub release with attached `git` installers
Implement workflow to create GitHub release with attached `git` installers
Implement workflow to create GitHub release with attached `git` installers
Implement workflow to create GitHub release with attached `git` installers
Implement workflow to create GitHub release with attached `git` installers
Implement workflow to create GitHub release with attached `git` installers
Implement workflow to create GitHub release with attached `git` installers
Implement workflow to create GitHub release with attached `git` installers
Implement workflow to create GitHub release with attached `git` installers
Implement workflow to create GitHub release with attached `git` installers
Implement workflow to create GitHub release with attached `git` installers
Implement workflow to create GitHub release with attached `git` installers
Implement workflow to create GitHub release with attached `git` installers
Implement workflow to create GitHub release with attached `git` installers
Implement workflow to create GitHub release with attached `git` installers
Implement workflow to create GitHub release with attached `git` installers
Implement workflow to create GitHub release with attached `git` installers
Implement workflow to create GitHub release with attached `git` installers
Implement workflow to create GitHub release with attached `git` installers
Implement workflow to create GitHub release with attached `git` installers
Implement workflow to create GitHub release with attached `git` installers
Implement workflow to create GitHub release with attached `git` installers
Implement workflow to create GitHub release with attached `git` installers
Implement workflow to create GitHub release with attached `git` installers
Implement workflow to create GitHub release with attached `git` installers
Implement workflow to create GitHub release with attached `git` installers
Implement workflow to create GitHub release with attached `git` installers
Implement workflow to create GitHub release with attached `git` installers
Implement workflow to create GitHub release with attached `git` installers
Implement workflow to create GitHub release with attached `git` installers
Implement workflow to create GitHub release with attached `git` installers
Changes
Testing
References
get-parent
andget-ancestor
commands vdye/git#2