Change build system with windows support #297
Workflow file for this run
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
name: Build and Test - macOS | |
on: | |
schedule: | |
- cron: '0 0 * * 1' | |
push: | |
branches: [ master ] | |
pull_request: | |
branches: [ master ] | |
release: | |
types: | |
- created | |
concurrency: | |
group: macos-${{ github.head_ref }} | |
cancel-in-progress: true | |
env: | |
CLICKHOUSE_SERVER_IMAGE: "yandex/clickhouse-server:20.3" | |
defaults: | |
run: | |
shell: bash | |
working-directory: run | |
jobs: | |
build_and_test: | |
strategy: | |
fail-fast: false | |
matrix: | |
os: [macos-latest] | |
odbc_provider: [UnixODBC] | |
compiler: [AppleClang] | |
build_type: [Debug, Release] | |
runtime_link: [dynamic-runtime] | |
third_parties: [bundled-third-parties] | |
runs-on: ${{ matrix.os }} | |
steps: | |
- name: Create directories | |
working-directory: ${{ github.workspace }} | |
run: | | |
mkdir -p ${{ github.workspace }}/run | |
mkdir -p ${{ github.workspace }}/build | |
mkdir -p ${{ github.workspace }}/prefix | |
mkdir -p ${{ github.workspace }}/install | |
mkdir -p ${{ github.workspace }}/package | |
- name: Clone the repo | |
uses: actions/checkout@v2 | |
with: | |
path: source | |
submodules: true | |
- name: Install dependencies - Common | |
run: | | |
cd "$(brew --repo)" && git fetch && git reset --hard origin/master && cd - | |
brew update | |
brew remove -f --ignore-dependencies -q libiodbc unixodbc freetds php node composer | |
brew upgrade | |
brew install git cmake perl python openssl poco icu4c binutils curl | |
pip3 install --break-system-packages --user 'testflows==1.6.56' | |
- name: Install dependencies - UnixODBC | |
if: ${{ matrix.odbc_provider == 'UnixODBC' }} | |
run: | | |
brew install unixodbc | |
pip3 install --break-system-packages --user pyodbc | |
# Right now folly fails to compile and link against brew's clang & libcpp versions 11-14 | |
# Since Clang is removed from list of compilers in matrix, this will not be executed. | |
# - name: Install dependencies - Clang | |
# if: ${{ matrix.compiler == 'Clang' }} | |
# run: brew install llvm | |
- name: Install dependencies - GCC | |
if: ${{ matrix.compiler == 'GCC' }} | |
run: | | |
brew install gcc gdb | |
export COMPILER_PATH=$(brew prefix gcc)/bin | |
- name: Start ClickHouse server in background | |
run: | | |
curl https://clickhouse.com | bash | |
sudo ./clickhouse install | |
sudo ./clickhouse start | |
- name: Configure | |
run: > | |
CC=${{ fromJSON('{"AppleClang": "cc", "Clang": "/usr/local/opt/llvm/bin/clang", "GCC": "$COMPILER_PATH/gcc-11"}')[matrix.compiler] }} | |
CXX=${{ fromJSON('{"AppleClang": "c++", "Clang": "/usr/local/opt/llvm/bin/clang++", "GCC": "$COMPILER_PATH/g++-11"}')[matrix.compiler] }} | |
cmake -S ${{ github.workspace }}/source -B ${{ github.workspace }}/build | |
-DCMAKE_BUILD_TYPE=${{ matrix.build_type }} | |
-DODBC_PROVIDER=${{ matrix.odbc_provider }} | |
-DICU_ROOT=/usr/local/opt/icu4c | |
-DOPENSSL_ROOT_DIR=/usr/local/opt/openssl | |
-DCH_ODBC_RUNTIME_LINK_STATIC=${{ fromJSON('{"static-runtime": "ON", "dynamic-runtime": "OFF"}')[matrix.runtime_link] }} | |
-DCH_ODBC_PREFER_BUNDLED_THIRD_PARTIES=${{ fromJSON('{"bundled-third-parties": "ON", "system-third-parties": "OFF"}')[matrix.third_parties] }} | |
-DTEST_DSN_LIST="ClickHouse DSN (ANSI);ClickHouse DSN (Unicode);ClickHouse DSN (ANSI, RBWNAT)" | |
- name: Build | |
run: cmake --build ${{ github.workspace }}/build --config ${{ matrix.build_type }} | |
- name: Package | |
run: cmake --build ${{ github.workspace }}/build --config ${{ matrix.build_type }} --target package | |
- name: List artifacts | |
run: | | |
echo REF: ${{ github.ref }} | |
ls -lahR ${{ github.workspace }}/build | |
- name: Upload the artifacts | |
# if: ${{ matrix.compiler == 'AppleClang' && matrix.odbc_provider == 'iODBC' && matrix.build_type == 'Release' }} | |
uses: actions/upload-artifact@v3 | |
with: | |
name: clickhouse-odbc-macos-${{ matrix.compiler }}-${{ matrix.odbc_provider }}-${{ matrix.build_type }} | |
path: ${{ github.workspace }}/build/clickhouse-odbc-* | |
- name: Test - Run unit tests | |
working-directory: ${{ github.workspace }}/build | |
run: ctest --output-on-failure --build-config ${{ matrix.build_type }} -R '.*-ut.*' | |
- name: Test - Run integration tests | |
working-directory: ${{ github.workspace }}/build | |
run: | | |
export CLICKHOUSE_SERVER_IP=127.0.0.1 | |
export ODBCSYSINI=${{ github.workspace }}/run | |
export ODBCINSTINI=.odbcinst.ini | |
export ODBCINI=$ODBCSYSINI/.odbc.ini | |
cat > $ODBCSYSINI/.odbcinst.ini <<-EOF | |
[ODBC] | |
Trace = 1 | |
TraceFile = ${{ github.workspace }}/run/odbc-driver-manager-trace.log | |
Debug = 1 | |
DebugFile = ${{ github.workspace }}/run/odbc-driver-manager-debug.log | |
[ODBC Drivers] | |
ClickHouse ODBC Driver (ANSI) = Installed | |
ClickHouse ODBC Driver (Unicode) = Installed | |
[ClickHouse ODBC Driver (ANSI)] | |
Driver = ${{ github.workspace }}/build/driver/libclickhouseodbc.dylib | |
Setup = ${{ github.workspace }}/build/driver/libclickhouseodbc.dylib | |
UsageCount = 1 | |
[ClickHouse ODBC Driver (Unicode)] | |
Driver = ${{ github.workspace }}/build/driver/libclickhouseodbcw.dylib | |
Setup = ${{ github.workspace }}/build/driver/libclickhouseodbcw.dylib | |
UsageCount = 1 | |
EOF | |
cat > $ODBCSYSINI/.odbc.ini <<-EOF | |
[ODBC] | |
Trace = 1 | |
TraceFile = ${{ github.workspace }}/run/odbc-driver-manager-trace.log | |
Debug = 1 | |
DebugFile = ${{ github.workspace }}/run/odbc-driver-manager-debug.log | |
[ODBC Data Sources] | |
ClickHouse DSN (ANSI) = ClickHouse ODBC Driver (ANSI) | |
ClickHouse DSN (Unicode) = ClickHouse ODBC Driver (Unicode) | |
ClickHouse DSN (ANSI, RBWNAT) = ClickHouse ODBC Driver (ANSI) | |
[ClickHouse DSN (ANSI)] | |
Driver = ClickHouse ODBC Driver (ANSI) | |
Description = Test DSN for ClickHouse ODBC Driver (ANSI) | |
Url = http://${CLICKHOUSE_SERVER_IP} | |
DriverLog = yes | |
DriverLogFile = ${{ github.workspace }}/run/clickhouse-odbc-driver.log | |
[ClickHouse DSN (Unicode)] | |
Driver = ClickHouse ODBC Driver (Unicode) | |
Description = Test DSN for ClickHouse ODBC Driver (Unicode) | |
Url = http://${CLICKHOUSE_SERVER_IP} | |
DriverLog = yes | |
DriverLogFile = ${{ github.workspace }}/run/clickhouse-odbc-driver-w.log | |
[ClickHouse DSN (ANSI, RBWNAT)] | |
Driver = ClickHouse ODBC Driver (ANSI) | |
Description = Test DSN for ClickHouse ODBC Driver (ANSI) that uses RowBinaryWithNamesAndTypes as data source communication default format | |
Url = http://${CLICKHOUSE_SERVER_IP}/query?default_format=RowBinaryWithNamesAndTypes | |
DriverLog = yes | |
DriverLogFile = ${{ github.workspace }}/run/clickhouse-odbc-driver.log | |
EOF | |
# Run all tests except those that were run in "Test - unit tests" step. | |
ctest --output-on-failure --build-config ${{ matrix.build_type }} -E '.*-ut.*' | |
- name: Upload artifacts as release assets | |
if: ${{ github.event_name == 'release' && matrix.build_type == 'Release' }} | |
uses: svenstaro/upload-release-action@v2 | |
with: | |
repo_token: ${{ secrets.GITHUB_TOKEN }} | |
file: ${{ github.workspace }}/build/clickhouse-odbc-* | |
overwrite: true | |
tag: ${{ github.ref }} | |
file_glob: true |