TileDB Nightly Test Build #1418
This file contains hidden or 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: TileDB Nightly Test Build | |
| on: | |
| schedule: | |
| # runs every day at 2:50 UTC | |
| - cron: "50 02 * * *" | |
| workflow_dispatch: | |
| jobs: | |
| test: | |
| runs-on: ${{ matrix.os }} | |
| strategy: | |
| matrix: | |
| os: [ubuntu-latest, macos-latest, windows-latest] | |
| build_type: [Debug, Release] | |
| assertions: [ON] | |
| sanitizer: [OFF] | |
| include: | |
| - os: macos-latest # ASAN build | |
| sanitizer: "address" | |
| assertions: ON | |
| build_type: "Release" | |
| base_triplet: "arm64-osx" | |
| - os: windows-latest | |
| build_type: "Debug" | |
| # Insufficient space on default D:/ for debug build | |
| working_directory: "C:/" | |
| fail-fast: false | |
| name: | | |
| ${{ matrix.os }} - Sanitizer: ${{ matrix.sanitizer }} | Assertions: ${{ matrix.assertions }} | ${{ matrix.build_type }} | |
| env: | |
| TILEDB_NIGHTLY_BUILD: 1 | |
| steps: | |
| - name: Print env | |
| run: printenv | |
| - name: Checkout TileDB `dev` | |
| uses: actions/checkout@v3 | |
| - name: 'Set SDKROOT on macOS' | |
| if: ${{ startsWith(matrix.os, 'macos-') }} | |
| run: | | |
| echo "SDKROOT=$(xcrun --sdk macosx --show-sdk-path)" >> $GITHUB_ENV | |
| - name: Configure TileDB CMake (not-Windows) | |
| if: ${{ ! contains(matrix.os, 'windows') }} | |
| env: | |
| SANITIZER_ARG: ${{ matrix.sanitizer }} | |
| working-directory: ${{ matrix.working_directory || github.workspace }} | |
| run: | | |
| cmake -B build -DTILEDB_WERROR=ON -DTILEDB_SERIALIZATION=ON -DCMAKE_BUILD_TYPE=${{ matrix.build_type }} -DTILEDB_SANITIZER=$SANITIZER_ARG -DTILEDB_ASSERTIONS=${{ matrix.assertions }} -DTILEDB_VCPKG_BASE_TRIPLET=${{ matrix.base_triplet }} | |
| - name: Configure TileDB CMake (Windows) | |
| if: contains(matrix.os, 'windows') | |
| working-directory: ${{ matrix.working_directory || github.workspace }} | |
| run: | | |
| cmake -B build -S $env:GITHUB_WORKSPACE -DTILEDB_WERROR=ON -DTILEDB_SERIALIZATION=ON -DCMAKE_BUILD_TYPE=${{ matrix.build_type }} -DTILEDB_ASSERTIONS=${{ matrix.assertions }} | |
| - name: Build TileDB | |
| working-directory: ${{ matrix.working_directory || github.workspace }} | |
| run: | | |
| cmake --build build -j2 --config ${{ matrix.build_type }} | |
| - name: Test TileDB | |
| working-directory: ${{ matrix.working_directory || github.workspace }} | |
| run: | | |
| cmake --build build --target check --config ${{ matrix.build_type }} | |
| test_static_linkage: | |
| runs-on: ${{ matrix.os }} | |
| strategy: | |
| matrix: | |
| include: | |
| - os: ubuntu-latest | |
| triplet: x64-linux | |
| - os: windows-2022 | |
| triplet: x64-windows | |
| - os: macos-15-intel | |
| triplet: x64-osx | |
| deployment-target: 13 | |
| - os: macos-latest | |
| triplet: arm64-osx | |
| fail-fast: false | |
| name: ${{ matrix.os }} - Static Linkage | |
| env: | |
| MACOSX_DEPLOYMENT_TARGET: ${{ matrix.deployment-target }} | |
| steps: | |
| - name: Print env | |
| run: printenv | |
| - name: Checkout TileDB `dev` | |
| uses: actions/checkout@v4 | |
| - name: Free disk space | |
| if: ${{ startsWith(matrix.os, 'ubuntu-') == true }} | |
| run: | | |
| set -e pipefail | |
| df -h | |
| sudo apt clean | |
| sudo rm -rf /usr/share/dotnet | |
| sudo rm -rf /opt/ghc | |
| sudo rm -rf /usr/local/lib/android | |
| sudo rm -rf /opt/hostedtoolcache/CodeQL | |
| sudo docker image prune --all --force | |
| sudo docker builder prune -a | |
| df -h | |
| shell: bash | |
| - name: Setup MSVC toolset | |
| uses: TheMrMilchmann/setup-msvc-dev@v3 | |
| if: runner.os == 'Windows' | |
| with: | |
| arch: x64 | |
| - name: 'Set SDKROOT on macOS' | |
| if: ${{ startsWith(matrix.os, 'macos-') }} | |
| run: | | |
| echo "SDKROOT=$(xcrun --sdk macosx --show-sdk-path)" >> $GITHUB_ENV | |
| - name: Install Ninja | |
| uses: seanmiddleditch/gha-setup-ninja@v5 | |
| - name: Configure TileDB CMake | |
| run: | | |
| cmake -B build -DCMAKE_BUILD_TYPE=Release -DTILEDB_WERROR=ON -DTILEDB_S3=ON -DTILEDB_GCS=ON -DTILEDB_AZURE=ON -DTILEDB_SERIALIZATION=ON -DTILEDB_TESTS=OFF -DBUILD_SHARED_LIBS=OFF | |
| - name: Build TileDB | |
| run: cmake --build build -j2 --config Release --target tiledb | |
| - name: Install TileDB | |
| run: cmake --install build --config Release --prefix dist | |
| - name: Configure CMake example | |
| # Configure with Ninja to use a single-config generator and put the executable in the same path across platforms. | |
| run: | | |
| & cmake -G Ninja -B examples/cmake_project/build -S examples/cmake_project -DCMAKE_BUILD_TYPE=Release "-DCMAKE_PREFIX_PATH=$($PWD.Path)/dist;$($PWD.Path)/build/vcpkg_installed/${{ matrix.triplet }}" | |
| shell: pwsh | |
| - name: Build CMake example | |
| run: cmake --build examples/cmake_project/build -j2 | |
| - name: Run CMake example | |
| run: examples/cmake_project/build/ExampleExe | |
| create_issue_on_fail: | |
| permissions: | |
| issues: write | |
| runs-on: ubuntu-latest | |
| needs: | |
| - test | |
| - test_static_linkage | |
| if: github.event_name == 'schedule' && (failure() || cancelled()) | |
| steps: | |
| - name: Checkout TileDB `dev` | |
| uses: actions/checkout@v3 | |
| - name: Create Issue if Build Fails | |
| uses: TileDB-Inc/github-actions/open-issue@main | |
| with: | |
| name: nightly GitHub Actions build | |
| label: nightly | |
| assignee: ihnorton,ypatia,teo-tsirpanis |