GH-48904: [C++][FlightRPC][CI][Packaging] Upload ODBC installer into GitHub release as RC#48934
Conversation
|
|
.github/workflows/cpp_extra.yml
Outdated
| cd ../.. | ||
| Move-Item -Path "build/cpp/Apache Arrow Flight SQL ODBC-*-win64.msi" -Destination "." |
There was a problem hiding this comment.
Moved path to make it easier for uploading GitHub release
.github/workflows/cpp_extra.yml
Outdated
| run: | | ||
| gh release upload ${GITHUB_REF_NAME} \ | ||
| --clobber \ | ||
| "Apache Arrow Flight SQL ODBC-*-win64.msi" |
There was a problem hiding this comment.
No release notes are added in this PR. Please let me know if I should put the release notes in the PR
There was a problem hiding this comment.
We don't need to add release notes here.
.github/workflows/cpp_extra.yml
Outdated
| run: | | ||
| gh release upload ${GITHUB_REF_NAME} \ | ||
| --clobber \ | ||
| "Apache Arrow Flight SQL ODBC-*-win64.msi" |
There was a problem hiding this comment.
We don't need to add release notes here.
raulcd
left a comment
There was a problem hiding this comment.
Thanks @alinaliBQ for working on this!
From my understanding we are going to integrate this to the major quarterly Arrow releases. Should we modify the tag to be triggered only on RCs, similar to how we do on Linux packaging jobs:
arrow/.github/workflows/package_linux.yml
Lines 38 to 39 in 9cde706
We should also add it to the binary download:
arrow/dev/release/04-binary-download.sh
Lines 50 to 58 in 9cde706
and the signing and upload to sign the released artifacts:
arrow/dev/release/05-binary-upload.sh
Lines 64 to 72 in 9cde706
I am unsure if there is anything we have to do on verification apart from validating signatures. From my understanding if we upload to GH Release and add signatures the verification script will already validate the signature (nothing has to be done there) but better to double check.
|
@raulcd Thanks! I am working on the comments and testing on the forked repo before porting the changes over. Regarding the MSI signatures, I checked other Apache projects with MSI releases for reference. I found that Apache CouchDB does MSI signing (https://github.com/apache/couchdb-glazier/pull/29/changes) with |
.github/workflows/cpp_extra.yml
Outdated
| remote_key: ${{ secrets.NIGHTLIES_RSYNC_KEY }} | ||
| remote_host_key: ${{ secrets.NIGHTLIES_RSYNC_HOST_KEY }} | ||
|
|
||
| odbc-check-tags: |
There was a problem hiding this comment.
Modified the tag to be triggered only on RCs.
There was a problem hiding this comment.
Why do we need this?
Can we use the following if: in odbc-release?
if: github.ref_type == 'tag' && contains(github.ref_name, '*-rc*')or
if: github.ref_type == 'tag'and
diff --git a/.github/workflows/cpp_extra.yml b/.github/workflows/cpp_extra.yml
index 49995752fa..9edec1f46b 100644
--- a/.github/workflows/cpp_extra.yml
+++ b/.github/workflows/cpp_extra.yml
@@ -43,7 +43,7 @@ on:
- 'format/Flight.proto'
- 'testing'
tags:
- - '**'
+ - 'apache-arrow-*-rc*'
pull_request:
paths:
- '.dockerignore'There was a problem hiding this comment.
This check is added for checking tag before the upload to GitHub release. It works like a simpler check_labels.yml for tags.
I think if we apply the change below, it will change the entire C++ Extra workflow to only be triggered by apache-arrow-*-rc* tags, and we want tags like C++ Extra to trigger the workflow as well.
tags:
- - '**'
+ - 'apache-arrow-*-rc*'
I think the contains(github.ref_name, '*-rc*') check is less strict compared to the current implementation, which I am leaning towards
There was a problem hiding this comment.
If *-rc* feels loose, we can use contains(github.ref_name, 'apache-arrow-*-rc*). I want to keep GitHub Actions configuration as much as simple for easy to maintain. So I want to remove this odbc-check-tags` step if possible.
There was a problem hiding this comment.
Totally understandable. odbc-check-tags step has been removed. As a workaround, I have changed the approach to use
if: ${{ startsWith(github.ref_name, 'apache-arrow-') && contains(github.ref_name, '-rc') }}
Please note that this check can pick up 'apache-arrow-rc' tag.
I have tried contains(github.ref_name, 'apache-arrow-*-rc*') and it didn't work, I think contains() doesn't support regex or wild card checks.
dev/release/04-binary-download.sh
Outdated
| --pattern "centos-*.tar.gz" \ | ||
| --pattern "debian-*.tar.gz" \ | ||
| --pattern "ubuntu-*.tar.gz" \ | ||
| --pattern "Apache Arrow Flight SQL ODBC-*-win64.msi" \ |
There was a problem hiding this comment.
added ODBC msi to the binary download
637e560 to
b1c6888
Compare
|
Hey @alinaliBQ, Re:
While all artifacts must be signed, I'm not sure that level of code signing is strictly required for a release. That said, I think it would be best to take the extra steps to sign the installer so it shows up as trusted by Windows. ASF Infra provides projects access to their DigiCert cert and has a help page for it: https://infra.apache.org/digicert-use.html. So for the Arrow project to sign those, I think one of us PMC members would need to go through that process and would also need to manually build and sign the MSI as part of the release process. @raulcd @kou does that sound doable to have a manual step like that? I could go through the ASF process and do the signing. |
b1c6888 to
558318e
Compare
|
It seems that we can sign built MSI. So we may not need to build MSI manually. We can use uploaded MSI on GitHub Release instead. I can also help it because it seems that we can sign on Linux by JSign. |
2296e7e to
ee4729f
Compare
| odbc-nightly: | ||
| needs: odbc | ||
| needs: odbc-msvc | ||
| name: ODBC nightly |
There was a problem hiding this comment.
This change should fix the c++ extra error, sorry I didn't catch this earlier
|
Could you rebase on main? |
Add ODBC to `05-binary-upload.sh` Undo move path for installer Work on Raul's comments - Modify the tag to be triggered only on RCs. - add ODBC msi to the binary download. Apply kou's suggestion Remove commented out test
Reason: ODBC MSI automatically get added periods in the names, this is behavior by design in GitHub, see: https://github.com/orgs/community/discussions/60449
- remove quotes - revert accidental permission change
This achieves similar effect as
tags:
- "apache-arrow-*-rc*"
ee4729f to
195ed13
Compare
Yes, done |

Rationale for this change
#48904
Upload ODBC as a GitHub draft release upon release candidate tag
What changes are included in this PR?
04-binary-download.sh05-binary-upload.shAre these changes tested?
04-binary-download.shand05-binary-upload.shchanges are not testedAre there any user-facing changes?
Yes, this PR adds GitHub release for Apache Arrow Flight SQL ODBC MSI installer.