Skip to content

apacheGH-30622: [GAC-11] Put Timestream ODBC driver into Arrow repository without code style fixes #17

apacheGH-30622: [GAC-11] Put Timestream ODBC driver into Arrow repository without code style fixes

apacheGH-30622: [GAC-11] Put Timestream ODBC driver into Arrow repository without code style fixes #17

Workflow file for this run

name: ODBC Driver for Windows
on:
push:
paths:
- '.github/workflows/win-build.yml'
- 'cpp/src/arrow/flight/sql/amazon-timestream-odbc-driver/**'
pull_request:
paths:
- '.github/workflows/win-build.yml'
- 'cpp/src/arrow/flight/sql/amazon-timestream-odbc-driver/**'
env:
SIGNING_ENABLED: ${{ github.event.inputs.sign }}
CI_OUTPUT_PATH: "ci-output"
ODBC_LIB_PATH: "${{github.workspace}}/cpp/src/arrow/flight/sql/amazon-timestream-odbc-driver/build/odbc/lib"
ODBC_BIN_PATH: "${{github.workspace}}/cpp/src/arrow/flight/sql/amazon-timestream-odbc-driver/build/odbc/bin/Release"
ODBC_DEBUG_PATH: "${{github.workspace}}/cpp/src/arrow/flight/sql/amazon-timestream-odbc-driver/build/odbc/bin/Debug"
ODBC_BUILD_PATH: "${{github.workspace}}/cpp/src/arrow/flight/sql/amazon-timestream-odbc-driver/build/odbc/cmake"
VCPKG_ROOT: "c:/vcpkg"
TIMESTREAM_LOG_PATH: "${{github.workspace}}/cpp/src/arrow/flight/sql/amazon-timestream-odbc-driver/build/odbc/logs"
TIMESTREAM_LOG_LEVEL: "4"
BIG_TABLE_PAGINATION_TEST_ENABLE: "TRUE"
# # AAD Test environment variables. Uncomment out to use GitHub secrets to enable AAD integration tests
# ENABLE_AAD_TEST: "TRUE"
# AAD_APP_ID: ${{secrets.AAD_APP_ID}}
# AAD_ROLE_ARN: ${{secrets.AAD_ROLE_ARN}}
# AAD_IDP_ARN: ${{secrets.AAD_IDP_ARN}}
# AAD_TENANT: ${{secrets.AAD_TENANT}}
# AAD_USER: ${{secrets.AAD_USER}}
# AAD_USER_PWD: ${{secrets.AAD_USER_PWD}}
# AAD_CLIENT_SECRET: ${{secrets.AAD_CLIENT_SECRET}}
# # OKTA Test environment variables. Uncomment out to use GitHub secrets to enable AAD integration tests
# ENABLE_OKTA_TEST: "TRUE"
# OKTA_HOST: ${{secrets.OKTA_HOST}}
# OKTA_USER: ${{secrets.OKTA_USER}}
# OKTA_USER_PWD: ${{secrets.OKTA_USER_PWD}}
# OKTA_APP_ID: ${{secrets.OKTA_APP_ID}}
# OKTA_ROLE_ARN: ${{secrets.OKTA_ROLE_ARN}}
# OKTA_IDP_ARN: ${{secrets.OKTA_IDP_ARN}}
jobs:
build-windows32:
runs-on: windows-2022
steps:
- uses: actions/checkout@v2
- name: Install Chocolatey
run: |
Set-ExecutionPolicy Bypass -Scope Process -Force
[System.Net.ServicePointManager]::SecurityProtocol = [System.Net.ServicePointManager]::SecurityProtocol -bor 3072
iex ((New-Object System.Net.WebClient).DownloadString('https://community.chocolatey.org/install.ps1'))
- name: "Update path for WIX Toolset"
run: |
echo "C:\Program Files (x86)\WiX Toolset v3.11\bin" | Out-File -FilePath $env:GITHUB_PATH -Encoding utf8 -Append
- name: Get latest version of CMake
uses: lukka/get-cmake@latest
- name: add-msbuild-to-path
uses: microsoft/setup-msbuild@v1.0.2
- name: Cache dependencies Windows 32
id: cache-dependencies-windows-32
uses: actions/cache@v3
with:
path: |
${{ env.VCPKG_ROOT }}
key: ${{ runner.os }}-cache-dependencies-windows-32-v1
- name: Install dependencies Windows
run: vcpkg integrate install; vcpkg install boost-test:x86-windows boost-asio:x86-windows boost-chrono:x86-windows boost-interprocess:x86-windows boost-regex:x86-windows boost-system:x86-windows boost-thread:x86-windows --recurse
env:
VCPKG_ROOT: ${{ env.VCPKG_ROOT }}
- name: configure-and-build-driver
run: |
cd cpp/src/arrow/flight/sql/amazon-timestream-odbc-driver
.\build_win_release32.ps1
- name: Build PowerBI connector
run: |
cd cpp/src/arrow/flight/sql/amazon-timestream-odbc-driver/src/PowerBIConnector
.\AmazonTimestreamConnector.ps1
cd ${{github.workspace}}/cpp/src/arrow/flight/sql/amazon-timestream-odbc-driver
- name: Upload ODBC connector build
uses: actions/upload-artifact@v3
with:
name: AmazonTimestreamConnector.mez
path: ./cpp/src/arrow/flight/sql/amazon-timestream-odbc-driver/src/PowerBIConnector/AmazonTimestreamConnector.mez
- name: register-driver
run: |
.\cpp\src\arrow\flight\sql\amazon-timestream-odbc-driver\src\odbc\install\install_amd64.cmd ${{env.ODBC_BIN_PATH}}\timestream.odbc.dll ${{env.ODBC_BIN_PATH}}\timestream.odbc.dll
- name: run-unit-tests
id: rununittests
run: |
mkdir -p "${{env.TIMESTREAM_LOG_PATH}}"
${{env.ODBC_BIN_PATH}}/timestream-odbc-unit-tests.exe
- name: upload-unit-test-report
if: always()
uses: EnricoMi/publish-unit-test-result-action/composite@v2.7.0
with:
check_name: "Windows x32 Build Unit Test Results Check"
comment_title: "Windows 2022 (x32) Build Unit Test Results"
files: ./odbc_unit_test_result.xml
- name: upload-unit-test-file
if: always()
uses: actions/upload-artifact@v3
with:
name: odbc-unit-test-results
path: |
./odbc_unit_test_result.xml
./cpp/src/arrow/flight/sql/amazon-timestream-odbc-driver/build/odbc/logs/timestream_odbc_*.log
# - name: run-integration-tests
# id: runintegrationtests
# run: |
# ${{env.ODBC_BIN_PATH}}/timestream-odbc-integration-tests.exe
- name: upload-integration-test-report
if: always()
uses: EnricoMi/publish-unit-test-result-action/composite@v2.7.0
with:
check_name: "Windows x32 Build Integration Test Results Check"
comment_title: "Windows 2022 (x32) Build Integration Test Results"
files: ./odbc_test_result.xml
- name: upload-integration-test-file
if: always()
uses: actions/upload-artifact@v3
with:
name: odbc-test-results
path: |
./odbc_test_result.xml
./cpp/src/arrow/flight/sql/amazon-timestream-odbc-driver/build/odbc/logs/timestream_odbc_*.log
- name: Read VERSION file
if: ${{ env.SIGNING_ENABLED == 'true' }}
id: getversion
run: echo "::set-output name=version::$(cat src/ODBC_DRIVER_VERSION.txt)"
# TODO remove code for signing the installer
# - name: "Configure AWS credentials"
# if: ${{ env.SIGNING_ENABLED == 'true' }}
# uses: aws-actions/configure-aws-credentials@v2
# with:
# role-skip-session-tagging: true
# aws-access-key-id: ${{ secrets.AWS_ACCESS_KEY_ID }}
# aws-secret-access-key: ${{ secrets.AWS_SECRET_ACCESS_KEY }}
# aws-region: us-west-2
# role-to-assume: ${{ secrets.AWS_ROLE_TO_ASSUME }}
# role-external-id: ${{ secrets.AWS_ROLE_EXTERNAL_ID }}
# role-duration-seconds: 3600
# # Name of signed executable is same as unsigned exeuctable
# - name: Sign executables
# if: ${{ env.SIGNING_ENABLED == 'true' }}
# id: sign-executables-32
# shell: pwsh
# run: |
# . ./scripts/sign_installer.ps1
# choco install jq -y
# Invoke-SignInstaller build\odbc\cmake\Release x86 ${{ steps.getversion.outputs.version }} ${{ secrets.AWS_UNSIGNED_BUCKET }} ${{ secrets.AWS_SIGNED_BUCKET }} ${{ secrets.AWS_KEY }}
- name: Upload ODBC driver build
uses: actions/upload-artifact@v3
with:
name: timestream-odbc-driver-32
path: cpp/src/arrow/flight/sql/amazon-timestream-odbc-driver/build/odbc/cmake/Release
build-windows64:
runs-on: windows-2022
steps:
- uses: actions/checkout@v2
- name: Install Chocolatey
run: |
Set-ExecutionPolicy Bypass -Scope Process -Force
[System.Net.ServicePointManager]::SecurityProtocol = [System.Net.ServicePointManager]::SecurityProtocol -bor 3072
iex ((New-Object System.Net.WebClient).DownloadString('https://community.chocolatey.org/install.ps1'))
- name: "Update path for WIX Toolset"
run: |
echo "C:\Program Files (x86)\WiX Toolset v3.11\bin" | Out-File -FilePath $env:GITHUB_PATH -Encoding utf8 -Append
- name: Get latest version of CMake
uses: lukka/get-cmake@latest
- name: add-msbuild-to-path
uses: microsoft/setup-msbuild@v1.0.2
- name: Cache dependencies Windows 64
id: cache-dependencies-windows-64
uses: actions/cache@v3
with:
path: |
${{ env.VCPKG_ROOT }}
key: ${{ runner.os }}-cache-dependencies-windows-64-v1
- name: Install dependencies Windows
run: vcpkg integrate install; vcpkg install boost-test:x64-windows boost-asio:x64-windows boost-chrono:x64-windows boost-interprocess:x64-windows boost-regex:x64-windows boost-system:x64-windows boost-thread:x64-windows --recurse
env:
VCPKG_ROOT: ${{env.VCPKG_ROOT}}
- name: configure-and-build-driver
run: |
cd cpp/src/arrow/flight/sql/amazon-timestream-odbc-driver
.\build_win_release64.ps1
- name: Build PowerBI connector
run: |
cd cpp/src/arrow/flight/sql/amazon-timestream-odbc-driver/src/PowerBIConnector
.\AmazonTimestreamConnector.ps1
cd ${{github.workspace}}/cpp/src/arrow/flight/sql/amazon-timestream-odbc-driver
- name: Upload ODBC connector build
uses: actions/upload-artifact@v3
with:
name: AmazonTimestreamConnector.mez
path: ./cpp/src/arrow/flight/sql/amazon-timestream-odbc-driver/src/PowerBIConnector/AmazonTimestreamConnector.mez
- name: register-driver
run: |
.\cpp\src\arrow\flight\sql\amazon-timestream-odbc-driver\src\odbc\install\install_amd64.cmd ${{env.ODBC_BIN_PATH}}\timestream.odbc.dll
- name: run-unit-tests
id: rununittests
run: |
mkdir -p "${{env.TIMESTREAM_LOG_PATH}}"
${{env.ODBC_BIN_PATH}}/timestream-odbc-unit-tests.exe
- name: upload-unit-test-report
if: always()
uses: EnricoMi/publish-unit-test-result-action/composite@v2.7.0
with:
check_name: "Windows 2022 (x64) Build Unit Test Results Check"
comment_title: "Windows 2022 (x64) Build Unit Test Results"
files: ./odbc_unit_test_result.xml
- name: upload-unit-test-file
if: always()
uses: actions/upload-artifact@v3
with:
name: odbc-unit-test-results
path: |
./odbc_unit_test_result.xml
./cpp/src/arrow/flight/sql/amazon-timestream-odbc-driver/build/odbc/logs/timestream_odbc_*.log
# TODO enable integration tests
# - name: run-integration-tests
# id: runintegrationtests
# run: |
# ${{env.ODBC_BIN_PATH}}/timestream-odbc-integration-tests.exe
- name: upload-integration-test-report
if: always()
uses: EnricoMi/publish-unit-test-result-action/composite@v2.7.0
with:
check_name: "Windows 2022 (x64) Build Integration Test Results Check"
comment_title: "Windows 2022 (x64) Build Integration Test Results"
files: ./odbc_test_result.xml
- name: upload-integration-test-file
if: always()
uses: actions/upload-artifact@v3
with:
name: odbc-test-results
path: |
./odbc_test_result.xml
./cpp/src/arrow/flight/sql/amazon-timestream-odbc-driver/build/odbc/logs/timestream_odbc_*.log
- name: Read VERSION file
if: ${{ env.SIGNING_ENABLED == 'true' }}
id: getversion
run: echo "::set-output name=version::$(cat src/ODBC_DRIVER_VERSION.txt)"
# - name: "Configure AWS credentials"
# if: ${{ env.SIGNING_ENABLED == 'true' }}
# uses: aws-actions/configure-aws-credentials@v2
# with:
# role-skip-session-tagging: true
# aws-access-key-id: ${{ secrets.AWS_ACCESS_KEY_ID }}
# aws-secret-access-key: ${{ secrets.AWS_SECRET_ACCESS_KEY }}
# aws-region: us-west-2
# role-to-assume: ${{ secrets.AWS_ROLE_TO_ASSUME }}
# role-external-id: ${{ secrets.AWS_ROLE_EXTERNAL_ID }}
# role-duration-seconds: 3600
# Name of signed executable is same as unsigned exeuctable
# - name: Sign executables
# if: ${{ env.SIGNING_ENABLED == 'true' }}
# id: sign-executables-64
# shell: pwsh
# run: |
# . ./scripts/sign_installer.ps1
# choco install jq -y
# Invoke-SignInstaller build\odbc\cmake\Release x64 ${{ steps.getversion.outputs.version }} ${{ secrets.AWS_UNSIGNED_BUCKET }} ${{ secrets.AWS_SIGNED_BUCKET }} ${{ secrets.AWS_KEY }}
- name: Upload ODBC driver build
uses: actions/upload-artifact@v3
with:
name: timestream-odbc-driver-64
path: cpp/src/arrow/flight/sql/amazon-timestream-odbc-driver/build/odbc/cmake/Release
build-windows64_coverage:
runs-on: windows-2022
steps:
- uses: actions/checkout@v2
- name: Install Chocolatey
run: |
Set-ExecutionPolicy Bypass -Scope Process -Force
[System.Net.ServicePointManager]::SecurityProtocol = [System.Net.ServicePointManager]::SecurityProtocol -bor 3072
iex ((New-Object System.Net.WebClient).DownloadString('https://community.chocolatey.org/install.ps1'))
- name: "Update path for WIX Toolset"
run: |
echo "C:\Program Files (x86)\WiX Toolset v3.11\bin" | Out-File -FilePath $env:GITHUB_PATH -Encoding utf8 -Append
- name: Get latest version of CMake
uses: lukka/get-cmake@latest
- name: add-msbuild-to-path
uses: microsoft/setup-msbuild@v1.0.2
- name: setup-opencppcoverage-and-add-to-path
id: setup_opencppcoverage
run: |
choco install OpenCppCoverage -y
echo "C:\Program Files\OpenCppCoverage" >> $env:GITHUB_PATH
- name: Cache dependencies Windows 64
id: cache-dependencies-windows-64
uses: actions/cache@v3
with:
path: |
${{ env.VCPKG_ROOT }}
key: ${{ runner.os }}-cache-dependencies-windows-64-v1
- name: Install dependencies Windows
run: vcpkg integrate install; vcpkg install boost-test:x64-windows boost-asio:x64-windows boost-chrono:x64-windows boost-interprocess:x64-windows boost-regex:x64-windows boost-system:x64-windows boost-thread:x64-windows --recurse
env:
VCPKG_ROOT: ${{env.VCPKG_ROOT}}
- name: configure-and-build-driver
run: |
cd cpp/src/arrow/flight/sql/amazon-timestream-odbc-driver
.\build_win_debug64.ps1
- name: Build PowerBI connector
run: |
cd cpp/src/arrow/flight/sql/amazon-timestream-odbc-driver/src/PowerBIConnector
.\AmazonTimestreamConnector.ps1
cd ${{github.workspace}}/cpp/src/arrow/flight/sql/amazon-timestream-odbc-driver/
- name: register-driver
run: |
.\cpp\src\arrow\flight\sql\amazon-timestream-odbc-driver\src\odbc\install\install_amd64.cmd ${{env.ODBC_DEBUG_PATH}}\timestream.odbc.dll
# TODO re-enable integration tests
- name: run-tests
run: |
# run code coverage against unit test first
opencppcoverage --sources \cpp\src\arrow\flight\sql\amazon-timestream-odbc-driver\src\odbc\src --sources \cpp\src\arrow\flight\sql\amazon-timestream-odbc-driver\src\odbc\include --export_type binary:unit.test.cov --excluded_modules boost_unit_test_framework --excluded_modules timestream-odbc-integration-tests --excluded_modules zlib --excluded_modules aws --excluded_modules boost --excluded_sources \cpp\src\arrow\flight\sql\amazon-timestream-odbc-driver\src\odbc\src\ignite --excluded_sources \cpp\src\arrow\flight\sql\amazon-timestream-odbc-driver\src\odbc\include\ignite -- ${{env.ODBC_DEBUG_PATH}}/timestream-odbc-unit-tests.exe
# run code coverage against integration test and merge the result with the unit test one
# opencppcoverage --sources \cpp\src\arrow\flight\sql\amazon-timestream-odbc-driver\src\odbc\src --sources \cpp\src\arrow\flight\sql\amazon-timestream-odbc-driver\src\odbc\include --input_coverage unit.test.cov --export_type cobertura:coverage.cobertura.xml --excluded_modules boost_unit_test_framework --excluded_modules timestream-odbc-integration-tests --excluded_modules zlib --excluded_modules aws --excluded_modules boost --excluded_sources \cpp\src\arrow\flight\sql\amazon-timestream-odbc-driver\src\odbc\src\ignite --excluded_sources \cpp\src\arrow\flight\sql\amazon-timestream-odbc-driver\src\odbc\include\ignite -- ${{env.ODBC_DEBUG_PATH}}/timestream-odbc-integration-tests.exe
- name: upload-coverage
if: always()
uses: actions/upload-artifact@v3
with:
name: code-coverage
path: coverage.cobertura.xml
comment_PR_coverage:
runs-on: ubuntu-latest
needs: build-windows64_coverage
steps:
- uses: actions/checkout@v2
- name: Retrieve coverage
uses: actions/download-artifact@v2
with:
name: code-coverage
- name: Code Coverage Summary Report
uses: irongut/CodeCoverageSummary@v1.2.0
with:
filename: coverage.cobertura.xml
badge: true
format: markdown
indicators: true
output: both
- name: Add Header for Code Coverage Summary Report
run: |
echo "## Windows 2022 (x64) Debug Build Code Coverage Test Results Check" > coverage-cobertura.md
cat code-coverage-results.md >> coverage-cobertura.md
- name: Add Coverage PR Comment
uses: marocchino/sticky-pull-request-comment@v2
if: github.event_name == 'pull_request'
with:
header: windows
recreate: true
path: coverage-cobertura.md