GH-49537: [C++][FlightRPC] Windows CI to Support ODBC DLL & MSI Signing#49603
GH-49537: [C++][FlightRPC] Windows CI to Support ODBC DLL & MSI Signing#49603alinaliBQ wants to merge 5 commits intoapache:mainfrom
Conversation
* Add draft code for CI A and CI B Attempt workflow dispatch Only ODBC Windows original workflow should run. Later need to add `github.event_name != 'workflow_dispatch' ||` to all existing workflows after uncomment Use `GITHUB_REF_NAME` directly via push Add `workflow_dispatch` definitions Add `ODBC Windows Upload DLL` Use common ODBC Windows environment variables Use ODBC as composite action Create cpp_odbc.yml Initial draft temp disable test step Temp disable non-ODBC Windows workflows * Clean Up Code * Remove comments * Fix Installer path for MSI
| - name: Upload the artifacts to GitHub Release | ||
| env: | ||
| GH_TOKEN: ${{ secrets.GITHUB_TOKEN }} | ||
| run: | | ||
| gh release upload ${GITHUB_REF_NAME} \ | ||
| --clobber \ | ||
| arrow_flight_sql_odbc_unsigned.dll |
There was a problem hiding this comment.
Since both DLL and MSI need to be signed and unsigned DLL is harder to catch, uploading as arrow_flight_sql_odbc_unsigned.dll to make it clear on GitHub release if the DLL is unsigned.
|
I did an empty commit (a522393) and got this error: The same implementation worked yesterday (see https://github.com/apache/arrow/actions/runs/23622018872/job/68803175375). Seems that GitHub might have updated runner, I will look into this. |
This issue should be resolved now by commit 95bc75b |
.github/workflows/cpp_extra.yml
Outdated
| needs: check-labels | ||
| name: ODBC Windows Upload Unsigned DLL | ||
| runs-on: windows-2022 | ||
| if: inputs.odbc_upload == 'dll' |
There was a problem hiding this comment.
| if: inputs.odbc_upload == 'dll' | |
| if: inputs.odbc_release_step == 'dll' |
Change `odbc-msvc-upload-dll` to be triggered via rc tag and can be invoked manually
alinaliBQ
left a comment
There was a problem hiding this comment.
Addressed comments. Please have another look, thanks!
.github/workflows/cpp_extra.yml
Outdated
| needs: check-labels | ||
| name: ODBC Windows Upload Unsigned DLL | ||
| runs-on: windows-2022 | ||
| if: inputs.odbc_upload == 'dll' |
amoeba
left a comment
There was a problem hiding this comment.
Thanks @alinaliBQ.
@raulcd do you want to have a look? Once we merge, I'll test the whole flow with the script (PR to come) that does the signing so we'll have more chances to fix any issues.
raulcd
left a comment
There was a problem hiding this comment.
Thanks for the work @alinaliBQ ! I am unsure this is ready yet, sorry it took me a couple days for review, it was Easter and had some family around. My main concern is around, the tag hasn't been updated to match the one on the packaging linux jobs, currently any tag will trigger the job and we only want to do it for RC's. The worlflow dispatch is still around and I thought this was not necessary with the tag.
@amoeba I am about to do the feature freeze, I think this is going to miss 24.0.0, is that ok?
| schedule: | ||
| - cron: | | ||
| 0 0 * * * | ||
| workflow_dispatch: |
There was a problem hiding this comment.
I am not sure I understand this. Didn't we agreed to use the tag for the RC? Why is the workflow dispatch needed and referenced below?
There was a problem hiding this comment.
The flow is a bit complicated, we need to trigger some jobs when the RC is created but the odbc-msvc-upload-msi step needs to be triggered manually so we use workflow_dispatch. The sequence is,
- Release manager tags release
- cpp_extra.yml jobs
odbc-msvc-upload-dllandodbc-dll-releaseare run automatically, unsigned DLL is added to release - Release manager locally runs script (TBD) that downloads, signs (w/ jsign), and uploads the signed DLL to the release
- Release manager triggers
odbc-msvc-upload-msiviaworkflow_dispatchwhich builds an unsigned MSI with a signed DLL inside and adds it to the release - Release manager locally runs script that downloads signs (w/ jsign), and uploads the signed MSI to the releasee
There was a problem hiding this comment.
I see, I did not understood the process. As the process isn't entirely automated and it requires several manual steps, can we document it on the release page?
https://github.com/apache/arrow/blob/main/docs/source/developers/release.rst
There was a problem hiding this comment.
@amoeba Could you kindly help with the documentation on release page?
There was a problem hiding this comment.
Absolutely. I'll file an issue and fill it in as we finish the final PRs.
|
Thanks for taking a look @raulcd. It's okay if this doesn't make it for 24 but if it's at all possible that'd be great. Re: the jobs running on any tag, I'm not seeing what you see, could you point out which job needs updating?
I could see making the last one ( |
No worries @raulcd, hope you had a good Easter. Since having a |
Rationale for this change
GH-49537
What changes are included in this PR?
odbc-msvc-upload-dllUpload unsigned DLLodbc-msvc-upload-msiDownload signed DLL and upload unsigned MSIodbc-releaseCI that is replaced by the new CIs.Example of
07-flightsqlodbc-upload.shscript (not tested):We need to either 1) implement a way to get
RUN_IDand then callgh run watch,or 2) enter each command manually and wait for the CI to finish.
Are these changes tested?
Are there any user-facing changes?
N/A