Nightly-Build #760
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: Nightly-Build | |
env: | |
TILEDB_NIGHTLY_BUILD: 1 | |
VCPKG_BINARY_SOURCES: 'clear;x-gha,readwrite' | |
on: | |
schedule: | |
- cron: "15 2 * * *" | |
pull_request: | |
branches: [main] | |
paths: | |
- './.github/workflows/nightly.yml' | |
workflow_dispatch: | |
jobs: | |
Build-Native: | |
strategy: | |
fail-fast: false | |
matrix: | |
os: [ubuntu-latest, macos-latest, windows-latest] | |
include: | |
- os: ubuntu-latest | |
platform: linux-x86_64 | |
- os: macos-latest | |
platform: macos-arm64 | |
- os: windows-latest | |
platform: windows-x86_64 | |
- tag: dev | |
tag: [release-2.26, dev] | |
runs-on: ${{ matrix.os }} | |
steps: | |
- name: Checkout TileDB | |
uses: actions/checkout@v4 | |
with: | |
repository: TileDB-Inc/TileDB | |
ref: ${{ matrix.tag }} | |
# This must happen after checking out the repository, because Ninja gets installed | |
# in the repository's directory that gets removed before the checkout/ | |
- name: Install Ninja | |
uses: seanmiddleditch/gha-setup-ninja@v5 | |
- name: Setup MSVC toolset (VS 2022) | |
uses: TheMrMilchmann/setup-msvc-dev@v3 | |
if: matrix.os == 'windows-latest' | |
with: | |
arch: x64 | |
- name: Export GitHub Actions cache variables | |
uses: actions/github-script@v7 | |
with: | |
script: | | |
core.exportVariable('ACTIONS_CACHE_URL', process.env.ACTIONS_CACHE_URL || ''); | |
core.exportVariable('ACTIONS_RUNTIME_TOKEN', process.env.ACTIONS_RUNTIME_TOKEN || ''); | |
- name: Build TileDB | |
run: | | |
mkdir -p build | |
mkdir -p artifacts/${{ matrix.platform }} | |
cmake -S . -B build -G Ninja -DCMAKE_BUILD_TYPE=Release -DTILEDB_SERIALIZATION=ON -DTILEDB_S3=ON -DTILEDB_VCPKG=ON -DCOMPILER_SUPPORTS_AVX2=OFF -DTILEDB_CMAKE_IDE=ON | |
cmake --build build -j --target tiledb | |
cmake --install build --prefix artifacts/${{ matrix.platform }} | |
# We combine the binaries of the many platforms per tag by uploading them to the same artifact. | |
- name: Upload native artifacts | |
uses: actions/upload-artifact@v4 | |
with: | |
name: tiledb-native-${{ matrix.tag }}-${{ matrix.platform }} | |
path: artifacts/ | |
retention-days: 1 | |
Pack-NuGet: | |
needs: Build-Native | |
strategy: | |
fail-fast: false | |
matrix: | |
tag: [release-2.26, dev] | |
runs-on: ubuntu-latest | |
steps: | |
- name: Checkout TileDB-CSharp | |
uses: actions/checkout@v4 | |
# GitHub runners come with several versions of .NET preinstalled; Remove them to target version | |
- name: Remove existing .NET versions | |
shell: bash | |
run: rm -rf $DOTNET_ROOT | |
- name: Set up .NET SDK from global.json | |
uses: actions/setup-dotnet@v4 | |
- name: Display dotnet versions | |
run: dotnet --info | |
- name: Download native artifacts | |
uses: actions/download-artifact@v4 | |
with: | |
pattern: tiledb-native-${{ matrix.tag }}-* | |
merge-multiple: true | |
path: scripts/nuget/temp | |
- name: Build native NuGet packages | |
shell: bash | |
run: dotnet pack ./scripts/nuget/GenerateNuGetPackages.proj -p:DevelopmentBuild=true -p:VersionTag=${{ matrix.tag }} | |
- name: Upload native NuGet packages | |
uses: actions/upload-artifact@v4 | |
with: | |
name: tiledb-nuget-${{ matrix.tag }} | |
path: scripts/nuget/packages/ | |
retention-days: 5 | |
Test-NuGet: | |
needs: Pack-NuGet | |
strategy: | |
fail-fast: false | |
matrix: | |
os: [ubuntu-latest, macos-latest, windows-latest] | |
tag: [release-2.26, dev] | |
runs-on: ${{ matrix.os }} | |
steps: | |
- name: Checkout TileDB-CSharp | |
uses: actions/checkout@v4 | |
# GitHub runners come with several versions of .NET preinstalled; Remove them to target version | |
- name: Remove existing .NET versions | |
shell: bash | |
run: rm -rf $DOTNET_ROOT | |
- name: Set up .NET SDK from global.json | |
uses: actions/setup-dotnet@v4 | |
- name: Display dotnet versions | |
run: dotnet --info | |
- name: Download native NuGet packages | |
uses: actions/download-artifact@v4 | |
with: | |
name: tiledb-nuget-${{ matrix.tag }} | |
path: packages | |
- name: Build TileDB-CSharp | |
run: dotnet build sources/TileDB.CSharp/TileDB.CSharp.csproj -c Release | |
- name: Test TileDB-CSharp | |
run: dotnet test tests/TileDB.CSharp.Test/TileDB.CSharp.Test.csproj -c Release | |
- name: Run examples | |
shell: bash | |
run: find examples/ -name *.csproj | xargs -I{} dotnet run --project {} -f net6.0 | |
Create-Issue: | |
needs: Test-NuGet | |
if: failure() && github.event_name == 'schedule' | |
runs-on: ubuntu-latest | |
steps: | |
- name: Checkout TileDB-CSharp | |
uses: actions/checkout@v4 | |
- name: Create issue for failed build | |
uses: JasonEtco/create-an-issue@v2 | |
env: | |
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} | |
with: | |
filename: .github/workflows/nightly-issue-template.md |