Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
72 changes: 72 additions & 0 deletions .github/workflows/cpp_extra.yml
Original file line number Diff line number Diff line change
Expand Up @@ -457,6 +457,25 @@ jobs:
name: flight-sql-odbc-msi-installer
path: build/cpp/Apache Arrow Flight SQL ODBC-*-win64.msi
if-no-files-found: error
- name: Install ODBC MSI
shell: cmd
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Can we use the default PowerShell instead of cmd?

run: |
cd build/cpp
for %%f in ("Apache Arrow Flight SQL ODBC-*-win64.msi") do (
echo Installing %%f silently with logs
msiexec /i "%%f" /qn /l*v "odbc-install.log" & type "odbc-install.log"
)
- name: Check ODBC DLL installation
shell: cmd
run: |
for /d %%D in ("C:\Program Files\Apache Arrow Flight SQL ODBC *") do (
if exist "%%D\bin" (
tree "%%D\bin" /f
if exist "%%D\bin\arrow_flight_sql_odbc.dll" exit 0
)
)
echo ODBC DLL not found
exit 1

odbc-nightly:
needs: odbc
Expand Down Expand Up @@ -494,6 +513,59 @@ jobs:
remote_key: ${{ secrets.NIGHTLIES_RSYNC_KEY }}
remote_host_key: ${{ secrets.NIGHTLIES_RSYNC_HOST_KEY }}

odbc-check-tags:
Copy link
Collaborator Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Modified the tag to be triggered only on RCs.

Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

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'

needs: odbc
name: ODBC Check RC Tag
runs-on: ubuntu-latest
outputs:
rc-tag: ${{ steps.check-rc.outputs.rc-tag }}
if: github.ref_type == 'tag' && github.repository == 'apache/arrow'
steps:
- name: Check Arrow RC Tag
id: check-rc
run: |
if [[ "${GITHUB_REF_NAME}" =~ ^apache-arrow-.*-rc.*$ ]]; then
echo "RC tag found"
echo "rc-tag=true" >> "${GITHUB_OUTPUT}"
else
echo "RC tag not found"
echo "rc-tag=false" >> "${GITHUB_OUTPUT}"
fi
Copy link
Collaborator Author

@alinaliBQ alinaliBQ Jan 28, 2026

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

TODO (for this PR): Will be looking into headless MSI install and a smoke test for checking the DLL locations

Copy link
Collaborator Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.


odbc-release:
needs: odbc-check-tags
name: ODBC release
runs-on: ubuntu-latest
if: needs.odbc-check-tags.outputs.rc-tag == 'true'
permissions:
# Upload to GitHub Release
contents: write
steps:
- name: Checkout Arrow
uses: actions/checkout@v6
with:
fetch-depth: 0
submodules: recursive
- name: Download the artifacts
uses: actions/download-artifact@v7
with:
name: flight-sql-odbc-msi-installer
# Upload ODBC as GitHub release if release candidate tag is used
- name: Wait for creating GitHub Release
env:
GH_TOKEN: ${{ secrets.GITHUB_TOKEN }}
run: |
dev/release/utils-watch-gh-workflow.sh \
${GITHUB_REF_NAME} \
release_candidate.yml
- name: Upload the artifacts to GitHub Release
env:
GH_TOKEN: ${{ secrets.GITHUB_TOKEN }}
run: |
gh release upload ${GITHUB_REF_NAME} \
--clobber \
"Apache Arrow Flight SQL ODBC"-*-win64.msi

report-extra-cpp:
if: github.event_name == 'schedule' && always()
needs:
Expand Down
3 changes: 2 additions & 1 deletion dev/release/04-binary-download.sh
Original file line number Diff line number Diff line change
Expand Up @@ -46,13 +46,14 @@ tag="apache-arrow-${version_with_rc}"

archery crossbow download-artifacts --no-fetch ${CROSSBOW_JOB_ID} "$@"

# Download Linux packages.
# Download Linux packages and ODBC MSI.
gh release download "${tag}" \
--dir "packages/${CROSSBOW_JOB_ID}" \
--pattern "almalinux-*.tar.gz" \
--pattern "amazon-linux-*.tar.gz" \
--pattern "centos-*.tar.gz" \
--pattern "debian-*.tar.gz" \
--pattern "ubuntu-*.tar.gz" \
--pattern "Apache.Arrow.Flight.SQL.ODBC-*-win64.msi" \
Copy link
Collaborator Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

GitHub inserts periods in uploaded file name with spaces, this is behavior by design in GitHub, see:
https://github.com/orgs/community/discussions/60449

Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Can we avoid using spaces in MSI file name?
e.g.: apache-arrow-flight-sql-odbc-${VERSION}-win64.msi?

--repo "${REPOSITORY:-apache/arrow}" \
--skip-existing
5 changes: 5 additions & 0 deletions dev/release/05-binary-upload.sh
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

We need to add signing command line something like the following here:

diff --git a/dev/release/05-binary-upload.sh b/dev/release/05-binary-upload.sh
index f628cce0e0..e66b5af646 100755
--- a/dev/release/05-binary-upload.sh
+++ b/dev/release/05-binary-upload.sh
@@ -98,6 +98,9 @@ upload_to_github_release() {
       shasum -a 512 "${base_name}" >"${base_name}.sha512"
       popd
     fi
+    if [[ "${base_name}" = *.msi ]]; then
+      jsign ... "${dist_dir}/${base_name}"
+    fi
   done
   gh release upload \
     --repo apache/arrow \

Original file line number Diff line number Diff line change
Expand Up @@ -67,6 +67,7 @@ cd "${SOURCE_DIR}"
: "${UPLOAD_CENTOS:=${UPLOAD_DEFAULT}}"
: "${UPLOAD_DEBIAN:=${UPLOAD_DEFAULT}}"
: "${UPLOAD_DOCS:=${UPLOAD_DEFAULT}}"
: "${UPLOAD_ODBC:=${UPLOAD_DEFAULT}}"
: "${UPLOAD_PYTHON:=${UPLOAD_DEFAULT}}"
: "${UPLOAD_R:=${UPLOAD_DEFAULT}}"
: "${UPLOAD_UBUNTU:=${UPLOAD_DEFAULT}}"
Expand Down Expand Up @@ -108,6 +109,10 @@ upload_to_github_release() {
if [ "${UPLOAD_DOCS}" -gt 0 ]; then
upload_to_github_release docs "${ARROW_ARTIFACTS_DIR}"/*-docs/*
fi
if [ "${UPLOAD_ODBC}" -gt 0 ]; then
upload_to_github_release odbc \
"${ARROW_ARTIFACTS_DIR}"/"Apache.Arrow.Flight.SQL.ODBC"-*-win64.msi
fi
if [ "${UPLOAD_PYTHON}" -gt 0 ]; then
upload_to_github_release python \
"${ARROW_ARTIFACTS_DIR}"/{python-sdist,wheel-*}/*
Expand Down
Loading