Skip to content

Merge pull request #27 from TileDB-Inc/kerl/ubuntu-24-04 #615

Merge pull request #27 from TileDB-Inc/kerl/ubuntu-24-04

Merge pull request #27 from TileDB-Inc/kerl/ubuntu-24-04 #615

Workflow file for this run

name: Nightly builds on linux
on:
push:
paths:
- '.github/workflows/linux.yml'
- 'scripts/**'
pull_request:
paths:
- '.github/workflows/linux.yml'
- 'scripts/**'
schedule:
- cron: "0 2 * * *" # Every night at 2 AM UTC (9 PM EST; 10 PM EDT)
workflow_dispatch:
inputs:
LIBTILEDB_REF:
description: >-
The Git reference (tag, branch, commit) to checkout TileDB-Inc/TileDB
default: dev
TILEDB_PY_REF:
description: >-
The Git reference (tag, branch, commit) to checkout TileDB-Inc/TileDB-Py
default: dev
TILEDB_R_REF:
description: >-
The Git reference (tag, branch, commit) to checkout TileDB-Inc/TileDB-R
default: main
TILEDB_VCF_REF:
description: >-
The Git reference (tag, branch, commit) to checkout
TileDB-Inc/TileDB-VCF
default: main
TILEDB_SOMA_REF:
description: >-
The Git reference (tag, branch, commit) to checkout
single-cell-data/TileDB-SOMA
default: main
TILEDB_MARIADB_REF:
description: >-
The Git reference (tag, branch, commit) to checkout TileDB-Inc/TileDB-MariaDB
default: master
TILEDB_GO_REF:
description: >-
The Git reference (tag, branch, commit) to checkout TileDB-Inc/TileDB-Go
default: master
TILEDB_CLOUD_PY_REF:
description: >-
The Git reference (tag, branch, commit) to checkout TileDB-Inc/TileDB-Cloud-Py
default: main
jobs:
libtiledb:
runs-on: ubuntu-24.04
steps:
- name: Clone TileDB
uses: actions/checkout@v4
with:
repository: TileDB-Inc/TileDB
ref: ${{ github.event.inputs.LIBTILEDB_REF || 'dev' }}
# Use recent release tarball on branches for quicker feedback
- name: Download release tarball
if: github.ref_name != 'main'
run: wget https://github.com/TileDB-Inc/TileDB/releases/download/2.26.2/tiledb-linux-x86_64-2.26.2-30fc114.tar.gz
- name: Unpack release tarball
if: github.ref_name != 'main'
run: |
mkdir install-libtiledb
tar xzf tiledb-linux-x86_64-*.tar.gz -C install-libtiledb
ls -R install-libtiledb/
- name: Patch tiledb.pc from release tarball
if: github.ref_name != 'main'
run: |
new_prefix=prefix=\"$(pwd)/install-libtiledb\"
echo $new_prefix
sed -i "1 s+.*+$new_prefix+" install-libtiledb/lib/pkgconfig/tiledb.pc
cat install-libtiledb/lib/pkgconfig/tiledb.pc
- name: Configure TileDB
if: github.ref_name == 'main'
run: |
cmake -B build-libtiledb \
-D CMAKE_INSTALL_PREFIX:PATH=$(pwd)/install-libtiledb/ \
-D TILEDB_WERROR=ON \
-D TILEDB_SERIALIZATION=ON \
-D CMAKE_BUILD_TYPE=Release \
-D TILEDB_S3=ON \
-D VCPKG_TARGET_TRIPLET=x64-linux-release
- name: Build TileDB
if: github.ref_name == 'main'
run: cmake --build build-libtiledb -j $(nproc) --config Release
- name: Install TileDB
if: github.ref_name == 'main'
run: cmake --build build-libtiledb --config Release --target install-tiledb
- name: Upload libtiledb as artifact
uses: actions/upload-artifact@v4
with:
name: nightly-libtiledb-linux
path: |
install-libtiledb/*
retention-days: 14
if-no-files-found: error
# Unable to run the test suite with `TILEDB_S3=ON` (required for
# tiledbvcf-py tests) without configuring S3 credentials
# - name: Test TileDB
# if: github.ref_name == 'main'
# run: |
# make -C build-libtiledb/tiledb tests -j $(nproc)
# ./build-libtiledb/tiledb/test/tiledb_unit --vfs native
tiledb-py:
runs-on: ubuntu-24.04
needs: libtiledb
env:
LD_LIBRARY_PATH: ${{ github.workspace }}/install-libtiledb/lib
PKG_CONFIG_PATH: ${{ github.workspace }}/install-libtiledb/lib/pkgconfig
steps:
- name: Clone TileDB-Py
uses: actions/checkout@v4
with:
repository: TileDB-Inc/TileDB-Py
ref: ${{ github.event.inputs.TILEDB_PY_REF || 'dev' }}
fetch-depth: 0 # fetch everything for python setuptools_scm
- name: Download nightly-libtiledb
uses: actions/download-artifact@v4
with:
name: nightly-libtiledb-linux
path: install-libtiledb
- name: Set up Python
uses: actions/setup-python@v5
with:
python-version: "3.11"
- name: Build TileDB-Py
run: |
echo $LD_LIBRARY_PATH
export TILEDB_PATH=$(pwd)/install-libtiledb/
python -m pip install -Cskbuild.cmake.define.TILEDB_REMOVE_DEPRECATIONS=OFF -v --editable .[test]
- name: Import TileDB-Py
run: |
python -c "import tiledb; print('successful import')"
python -c "import tiledb; print(tiledb.libtiledb.version())"
python -c "import tiledb; print(tiledb.version())"
- name: Test TileDB-Py
run: pytest -vv
- name: Create a wheel
run: |
export TILEDB_PATH=$(pwd)/install-libtiledb/
python -m pip wheel -Cskbuild.cmake.define.TILEDB_REMOVE_DEPRECATIONS=OFF -v --wheel-dir=dist .
- name: Upload Python wheel as artifact
uses: actions/upload-artifact@v4
with:
name: nightly-tiledb-py-linux
path: dist/tiledb-*-linux_x86_64.whl
retention-days: 14
if-no-files-found: error
tiledb-r:
runs-on: ubuntu-24.04
needs: libtiledb
env:
_R_CHECK_FORCE_SUGGESTS_: "FALSE"
steps:
- name: Clone TileDB-R
uses: actions/checkout@v4
with:
repository: TileDB-Inc/TileDB-R
ref: ${{ github.event.inputs.TILEDB_R_REF || 'main' }}
- name: Download nightly-libtiledb
uses: actions/download-artifact@v4
with:
name: nightly-libtiledb-linux
path: install-libtiledb
- name: Bootstrap
run: ./.github/r-ci.sh bootstrap
- name: Dependencies
run: ./.github/r-ci.sh install_all
- name: Build
run: R CMD build --no-manual --no-build-vignettes .
- name: Install
run: |
R CMD INSTALL --configure-args=--with-tiledb=$(pwd)/install-libtiledb --build tiledb_*.tar.gz
- name: Upload R binary tarball as artifact
uses: actions/upload-artifact@v4
with:
name: nightly-tiledb-r-linux
path: tiledb_*_R_x86_64-pc-linux-gnu.tar.gz
retention-days: 14
if-no-files-found: error
- name: Test
run: R -e 'tinytest::test_package("tiledb")'
libtiledbvcf:
runs-on: ubuntu-latest
needs: libtiledb
env:
LD_LIBRARY_PATH: ${{ github.workspace }}/install-libtiledb/lib
steps:
- name: Clone TileDB-VCF
uses: actions/checkout@v4
with:
repository: TileDB-Inc/TileDB-VCF
ref: ${{ github.event.inputs.TILEDB_VCF_REF || 'main' }}
- name: Download nightly-libtiledb
uses: actions/download-artifact@v4
with:
name: nightly-libtiledb-linux
path: install-libtiledb
- name: Setup
run: |
sudo apt-get update
sudo apt-get install --yes cmake
- name: Configure libtiledbvcf
run: |
cmake -S libtiledbvcf -B build-libtiledbvcf \
-D CMAKE_BUILD_TYPE=Release \
-D CMAKE_PREFIX_PATH=$(pwd)/install-libtiledb/ \
-D CMAKE_INSTALL_PREFIX:PATH=$(pwd)/install-libtiledbvcf/ \
-D OVERRIDE_INSTALL_PREFIX=OFF \
-D TILEDB_WERROR=OFF
- name: Build libtiledbvcf
run: cmake --build build-libtiledbvcf -j $(nproc) --config Release
- name: Install libtiledbvcf
run: |
cmake --build build-libtiledbvcf --config Release --target install-libtiledbvcf
ls -R install-libtiledbvcf/
- name: Upload libtiledbvcf as artifact
uses: actions/upload-artifact@v4
with:
name: nightly-libtiledbvcf-linux
path: |
install-libtiledbvcf/*
retention-days: 14
if-no-files-found: error
- name: libtiledbvcf version
run: ./install-libtiledbvcf/bin/tiledbvcf version
- name: Confirm linking
run: ldd install-libtiledbvcf/lib/libtiledbvcf.so
- name: Install bcftools (for tests)
run: sudo apt-get install --yes bcftools
- name: Test libtiledbvcf
run: |
make -j $(nproc) -C build-libtiledbvcf/libtiledbvcf tiledb_vcf_unit
./build-libtiledbvcf/libtiledbvcf/test/tiledb_vcf_unit
# cli tests (require bcftools)
# USAGE: run-cli-tests.sh <build-dir> <inputs-dir>
libtiledbvcf/test/run-cli-tests.sh build-libtiledbvcf libtiledbvcf/test/inputs
tiledbvcf-py:
runs-on: ubuntu-24.04
needs: [libtiledb, libtiledbvcf, tiledb-py]
env:
LD_LIBRARY_PATH: "${{ github.workspace }}/install-libtiledb/lib:${{ github.workspace }}/install-libtiledbvcf/lib"
steps:
- name: Clone TileDB-VCF
uses: actions/checkout@v4
with:
repository: TileDB-Inc/TileDB-VCF
ref: ${{ github.event.inputs.TILEDB_VCF_REF || 'main' }}
fetch-depth: 0 # fetch everything for python setuptools_scm
- name: Download nightly-libtiledb
uses: actions/download-artifact@v4
with:
name: nightly-libtiledb-linux
path: install-libtiledb
- name: Download nightly-libtiledbvcf
uses: actions/download-artifact@v4
with:
name: nightly-libtiledbvcf-linux
path: install-libtiledbvcf
- name: Download nightly-tiledb-py
uses: actions/download-artifact@v4
with:
name: nightly-tiledb-py-linux
- name: Set up Python
uses: actions/setup-python@v5
with:
python-version: "3.11"
- name: Install dependencies
run: python -m pip install --prefer-binary \
pyarrow==11
- name: Install nightly tiledb-py
run: |
pip install --prefer-binary tiledb-*-linux_x86_64.whl
pip list
- name: Build tiledbvcf-py
run: |
export LIBTILEDBVCF_PATH=$(pwd)/install-libtiledbvcf/lib/
export TileDB_DIR=$(pwd)/install-libtiledb/lib/cmake/TileDB
python -m pip install -v apis/python[test]
- name: Confirm linking
run: |
echo "Shared objects in build directory"
find apis/python -name '*.so*'
echo "Installed shared objects"
find $pythonLocation/lib/python*/site-packages/tiledbvcf -name '*.so*'
echo "Run ldd on installed shared objects"
find $pythonLocation/lib/python*/site-packages/tiledbvcf -name '*.so*' | xargs ldd
echo "Check RPATH of installed shared object"
readelf -d $pythonLocation/lib/python*/site-packages/tiledbvcf/libtiledbvcf.cpython-*-x86_64-linux-gnu.so | grep R*PATH
echo "Check RPATH of shared object in build directory"
readelf -d apis/python/build/cp311-cp311-linux_x86_64/libtiledbvcf.cpython-311-x86_64-linux-gnu.so | grep R*PATH
- name: Install bcftools (for tests)
run: |
sudo apt-get update
sudo apt-get install --yes bcftools
- name: Test tiledbvcf-py
run: |
python -c "import tiledbvcf; print(tiledbvcf.version)"
cd apis/python
pytest
- name: Create a wheel
run: |
export LIBTILEDBVCF_PATH=$(pwd)/install-libtiledbvcf/lib/
export TileDB_DIR=$(pwd)/install-libtiledb/lib/cmake/TileDB
python -m pip wheel -v --wheel-dir=apis/python/dist apis/python
- name: Upload Python wheel as artifact
uses: actions/upload-artifact@v4
with:
name: nightly-tiledbvcf-py-linux
path: apis/python/dist/tiledbvcf-*-linux_x86_64.whl
retention-days: 14
if-no-files-found: error
libtiledbsoma:
runs-on: ubuntu-24.04
needs: [libtiledb]
env:
TileDB_DIR: ${{ github.workspace }}/install-libtiledb
LD_LIBRARY_PATH: ${{ github.workspace }}/install-libtiledb/lib
steps:
- name: Clone TileDB-SOMA
uses: actions/checkout@v4
with:
repository: single-cell-data/TileDB-SOMA
ref: ${{ github.event.inputs.TILEDB_SOMA_REF || 'main' }}
- name: Download nightly-libtiledb
uses: actions/download-artifact@v4
with:
name: nightly-libtiledb-linux
path: install-libtiledb
- name: Setup
run: |
sudo apt-get update
sudo apt-get install --yes cmake
- name: Configure libtiledbsoma
run: |
cmake -S libtiledbsoma -B build-libtiledbsoma \
-D CMAKE_BUILD_TYPE=Release \
-D CMAKE_PREFIX_PATH=$(pwd)/install-libtiledb/ \
-D CMAKE_INSTALL_PREFIX:PATH=$(pwd)/install-libtiledbsoma/ \
-D OVERRIDE_INSTALL_PREFIX=OFF \
-D DOWNLOAD_TILEDB_PREBUILT=OFF \
-D FORCE_BUILD_TILEDB=OFF
- name: Build libtiledbsoma
run: cmake --build build-libtiledbsoma -j $(nproc)
- name: Install libtiledbsoma
run: |
cmake --build build-libtiledbsoma --target install-libtiledbsoma
ls -R $(pwd)/install-libtiledb/
- name: Upload libtiledbsoma as artifact
uses: actions/upload-artifact@v4
with:
name: nightly-libtiledbsoma-linux
path: |
install-libtiledbsoma/*
- name: Confirm linking
run: ldd install-libtiledbsoma/lib/libtiledbsoma.so
- name: Test libtiledbsoma
run: |
cmake --build build-libtiledbsoma/libtiledbsoma --target build_tests -j $(nproc)
ctest --test-dir build-libtiledbsoma/libtiledbsoma -C Release --verbose --rerun-failed --output-on-failure
tiledbsoma-py:
runs-on: ubuntu-24.04
needs: [libtiledb, libtiledbsoma, tiledb-py]
env:
LD_LIBRARY_PATH: "${{ github.workspace }}/install-libtiledb/lib:${{ github.workspace }}/install-libtiledbsoma/lib"
TILEDB_PATH: ${{ github.workspace }}/install-libtiledb
TILEDBSOMA_PATH: ${{ github.workspace }}/install-libtiledbsoma
PKG_CONFIG_PATH: "${{ github.workspace }}/install-libtiledb/lib/pkgconfig:${{ github.workspace }}/install-libtiledbsoma/lib/pkgconfig"
steps:
- name: Clone TileDB-SOMA
uses: actions/checkout@v4
with:
repository: single-cell-data/TileDB-SOMA
ref: ${{ github.event.inputs.TILEDB_SOMA_REF || 'main' }}
fetch-depth: 0 # fetch everything for python setuptools_scm
- name: Download nightly-libtiledb
uses: actions/download-artifact@v4
with:
name: nightly-libtiledb-linux
path: install-libtiledb
- name: Download nightly-libtiledbsoma
uses: actions/download-artifact@v4
with:
name: nightly-libtiledbsoma-linux
path: install-libtiledbsoma
- name: Download nightly-tiledb-py
uses: actions/download-artifact@v4
with:
name: nightly-tiledb-py-linux
- name: Set up Python
uses: actions/setup-python@v5
with:
python-version: "3.11"
# https://github.com/single-cell-data/TileDB-SOMA/blob/main/apis/python/pyproject.toml
- name: Install dependencies
run: |
python -m pip install \
-r apis/python/requirements_dev.txt \
"pybind11[global]>=2.10.0" \
"setuptools>=65.5.1" \
"wheel>=0.37.1" \
"cmake>=3.21"
- name: Install nightly tiledb-py
run: |
pip install tiledb-*-linux_x86_64.whl
pip list
- name: Install tiledbsoma-py
run: |
python -m pip -v install --no-build-isolation -e apis/python
pip list
- name: Confirm linking
run: |
find apis/python -name '*.so*'
find apis/python -name '*.so*' | xargs ldd
readelf -d apis/python/src/tiledbsoma/pytiledbsoma.*.so | grep R*PATH
- name: Fail if unnecessary libtiledbsoma.so is created
# https://github.com/single-cell-data/TileDB-SOMA/pull/1937
run: |
if [[ -f apis/python/src/tiledbsoma/libtiledbsoma.so ]]
then
echo "An unnecessary libtiledbsoma.so was created during the package build"
exit 1
fi
- name: Test tiledbsoma-py
run: |
python -c "import tiledbsoma; print('successful import')"
python -c "import tiledbsoma; print(tiledbsoma.pytiledbsoma.version())"
python -c "import tiledbsoma; print(f'tiledbsoma-py={tiledbsoma.__version__}')"
# Obtain test data
cd test
tar zxf soco.tgz
cd ..
# Run test suite
PYTHONPATH=$(pwd)/apis/python/src python -m pytest apis/python/tests
- name: Create a wheel
run: |
cd apis/python
python setup.py bdist_wheel
- name: Upload Python wheel as artifact
uses: actions/upload-artifact@v4
with:
name: nightly-tiledbsoma-py-linux
path: apis/python/dist/tiledbsoma-*-linux_x86_64.whl
retention-days: 14
if-no-files-found: error
tiledbsoma-r:
runs-on: ubuntu-24.04
needs: [libtiledb, libtiledbsoma, tiledb-r]
env:
LD_LIBRARY_PATH: "${{ github.workspace }}/install-libtiledb/lib:${{ github.workspace }}/install-libtiledbsoma/lib"
PKG_CONFIG_PATH: "${{ github.workspace }}/install-libtiledb/lib/pkgconfig:${{ github.workspace }}/install-libtiledbsoma/lib/pkgconfig"
steps:
- name: Clone TileDB-SOMA
uses: actions/checkout@v4
with:
repository: single-cell-data/TileDB-SOMA
ref: ${{ github.event.inputs.TILEDB_SOMA_REF || 'main' }}
- name: Download nightly-libtiledb
uses: actions/download-artifact@v4
with:
name: nightly-libtiledb-linux
path: install-libtiledb
- name: Download nightly-libtiledbsoma
uses: actions/download-artifact@v4
with:
name: nightly-libtiledbsoma-linux
path: install-libtiledbsoma
- name: Download nightly-tiledb-r
uses: actions/download-artifact@v4
with:
name: nightly-tiledb-r-linux
- name: Bootstrap
run: cd apis/r && tools/r-ci.sh bootstrap
- name: Install nightly tiledb-r (and its dependencies)
shell: Rscript {0}
run: |
install.packages("remotes")
library("remotes")
binary_tarball <- Sys.glob("tiledb_*_R_x86_64-pc-linux-gnu.tar.gz")
message(binary_tarball)
install_deps(binary_tarball, dependencies = TRUE, upgrade = "never")
install.packages(binary_tarball, repos = NULL)
- name: Dependencies
run: cd apis/r && tools/r-ci.sh install_all
- name: Build
run: |
export CXX17FLAGS="-Wno-deprecated-declarations -Wno-deprecated"
cd apis/r && R CMD build --no-manual --no-build-vignettes .
- name: Install
run:
cd apis/r && R CMD INSTALL --install-tests --build tiledbsoma_*.tar.gz
- name: Upload R binary tarball as artifact
uses: actions/upload-artifact@v4
with:
name: nightly-tiledbsoma-r-linux
path: apis/r/tiledbsoma_*_R_x86_64-pc-linux-gnu.tar.gz
retention-days: 14
if-no-files-found: error
- name: Test
run:
Rscript -e 'testthat::test_package("tiledbsoma")'
tiledb-mariadb:
runs-on: ubuntu-24.04
needs: [libtiledb]
env:
CFLAGS: -Wno-error=deprecated-declarations -Wno-error=missing-braces
CXXFLAGS: -Wno-error=deprecated-declarations -Wno-error=missing-braces
LD_LIBRARY_PATH: ${{ github.workspace }}/install-libtiledb/lib
steps:
- name: Clone MariaDB
uses: actions/checkout@v4
with:
repository: MariaDB/server.git
ref: mariadb-11.0.2
- name: Clone TileDB-MariaDB into MariaDB
uses: actions/checkout@v4
with:
repository: TileDB-Inc/TileDB-MariaDB
ref: ${{ github.event.inputs.TILEDB_MARIADB_REF || 'master' }}
path: storage/mytile
- name: Download nightly-libtiledb
uses: actions/download-artifact@v4
with:
name: nightly-libtiledb-linux
path: install-libtiledb
- name: Configure TileDB-MariaDB
run: |
cmake \
-S . -B builddir \
-D CMAKE_PREFIX_PATH=$(pwd)/install-libtiledb/ \
-D PLUGIN_OQGRAPH=NO \
-D WITH_MARIABACKUP=OFF \
-D PLUGIN_TOKUDB=NO \
-D PLUGIN_ROCKSDB=NO \
-D PLUGIN_MROONGA=NO \
-D PLUGIN_SPIDER=NO \
-D PLUGIN_SPHINX=NO \
-D PLUGIN_FEDERATED=NO \
-D PLUGIN_FEDERATEDX=NO \
-D PLUGIN_CONNECT=NO \
-D CMAKE_BUILD_TYPE=Release \
-D CMAKE_INCLUDE_PATH="/usr/local/include" \
-D TILEDB_FORCE_ALL_DEPS=${TILEDB_FORCE_ALL_DEPS-OFF}
- name: Build TileDB-MariaDB
run: |
cd builddir
make -j $(nproc)
- name: Confirm linking
run: |
du -sh builddir
du -sh builddir/storage/mytile
ldd builddir/storage/mytile/ha_mytile.so
# Fail if not properly linked to nightly libtiledb.so
ldd builddir/storage/mytile/ha_mytile.so | \
grep -q $(pwd)/install-libtiledb/lib/libtiledb.so
- name: Test TileDB-MariaDB
run: |
cd builddir
./mysql-test/mysql-test-run.pl --suite=mytile
tiledb-go:
runs-on: ubuntu-24.04
needs: [libtiledb]
steps:
- name: Clone TileDB-Go
uses: actions/checkout@v4
with:
repository: TileDB-Inc/TileDB-Go
ref: ${{ github.event.inputs.TILEDB_GO_REF || 'master' }}
- name: Download nightly-libtiledb
uses: actions/download-artifact@v4
with:
name: nightly-libtiledb-linux
path: install-libtiledb
- name: Install dependencies
run: go get -t .
- name: Test TileDB-Go
run: |
export CPATH=$(pwd)/install-libtiledb/include
export LIBRARY_PATH=$(pwd)/install-libtiledb/lib
export LD_LIBRARY_PATH=$(pwd)/install-libtiledb/lib
go test -v ./...
tiledb-cloud-py:
runs-on: ubuntu-24.04
needs: [libtiledb, tiledb-py]
env:
LD_LIBRARY_PATH: "${{ github.workspace }}/install-libtiledb/lib"
steps:
- name: Clone TileDB-Cloud-Py
uses: actions/checkout@v4
with:
repository: TileDB-Inc/TileDB-Cloud-Py
ref: ${{ github.event.inputs.TILEDB_CLOUD_PY_REF || 'main' }}
fetch-depth: 0 # fetch everything for python setuptools_scm
- name: Download nightly-libtiledb
uses: actions/download-artifact@v4
with:
name: nightly-libtiledb-linux
path: install-libtiledb
- name: Download nightly-tiledb-py
uses: actions/download-artifact@v4
with:
name: nightly-tiledb-py-linux
- name: Set up Python
uses: actions/setup-python@v5
with:
python-version: "3.11"
- name: Install dependencies
run: python -m pip install \
"attrs>=21.4.0" \
"certifi" \
"cloudpickle>=1.4.1,<3" \
"importlib-metadata" \
"packaging" \
"pandas>=1.2.4" \
"pyarrow>=3.0.0" \
"python-dateutil" \
"six>=1.10" \
"tblib~=1.7" \
"tiledb>=0.15.2" \
"typing-extensions" \
"urllib3>=1.26" \
"wheel"
- name: Install nightly tiledb-py
run: |
pip install tiledb-*-linux_x86_64.whl
pip list
- name: Build tiledb-cloud
run: |
echo $LD_LIBRARY_PATH
pip install --no-build-isolation .
- name: Create a wheel
run: python setup.py bdist_wheel
- name: Upload Python wheel as artifact
uses: actions/upload-artifact@v4
with:
name: nightly-tiledb-cloud-py-linux
path: dist/tiledb_cloud-*-none-any.whl
retention-days: 14
if-no-files-found: error
build-all:
# this is simply a target to build everything locally with `act` without
# creating a new release
name: Build everything
runs-on: ubuntu-24.04
needs: [libtiledb, tiledb-py, tiledb-r, libtiledbvcf, tiledbvcf-py, libtiledbsoma,
tiledbsoma-py, tiledbsoma-r, tiledb-mariadb, tiledb-go, tiledb-cloud-py]
steps:
- run: echo "Success! Everything was built"
create-release:
name: Create a new release
if: github.ref_name == 'main' && github.repository_owner == 'TileDB-Inc' && github.event_name != 'pull_request'
runs-on: ubuntu-24.04
permissions:
contents: write
env:
GH_TOKEN: ${{ github.token }}
TZ: "America/New_York"
steps:
- uses: actions/checkout@v4
- name: Create release
run: |
the_date=$(date +%Y-%m-%d)
if ! gh release list | cut -f3 | grep -q $the_date
then
echo "Creating new release: $the_date"
gh release create $the_date --notes "Nightly binaries created on $the_date"
else
echo "Release already exists: $the_date"
fi
upload-libtiledb:
runs-on: ubuntu-24.04
needs: [create-release, libtiledb]
permissions:
contents: write
env:
GH_TOKEN: ${{ github.token }}
TZ: "America/New_York"
steps:
- uses: actions/checkout@v4
- name: Download nightly-libtiledb
uses: actions/download-artifact@v4
with:
name: nightly-libtiledb-linux
path: install-libtiledb
- name: Upload libtiledb to release
run: |
the_date=$(date +%Y-%m-%d)
tar -C install-libtiledb -cvzf libtiledb-${the_date}.tar.gz ./
gh release upload ${the_date} libtiledb-${the_date}.tar.gz --clobber
upload-tiledb-py:
runs-on: ubuntu-24.04
needs: [create-release, tiledb-py]
permissions:
contents: write
env:
GH_TOKEN: ${{ github.token }}
TZ: "America/New_York"
steps:
- uses: actions/checkout@v4
- name: Download nightly-tiledb-py
uses: actions/download-artifact@v4
with:
name: nightly-tiledb-py-linux
- name: Upload tiledb-py to release
run: |
the_date=$(date +%Y-%m-%d)
unzip -l tiledb-*-linux_x86_64.whl
gh release upload ${the_date} tiledb-*-linux_x86_64.whl --clobber
upload-tiledb-r:
runs-on: ubuntu-24.04
needs: [create-release, tiledb-r]
permissions:
contents: write
env:
GH_TOKEN: ${{ github.token }}
TZ: "America/New_York"
steps:
- uses: actions/checkout@v4
- name: Download nightly-tiledb-r
uses: actions/download-artifact@v4
with:
name: nightly-tiledb-r-linux
- name: Upload tiledb-r to release
run: |
the_date=$(date +%Y-%m-%d)
tar --list -f tiledb_*_R_x86_64-pc-linux-gnu.tar.gz
gh release upload ${the_date} tiledb_*_R_x86_64-pc-linux-gnu.tar.gz --clobber
upload-libtiledbvcf:
runs-on: ubuntu-24.04
needs: [create-release, libtiledbvcf]
permissions:
contents: write
env:
GH_TOKEN: ${{ github.token }}
TZ: "America/New_York"
steps:
- uses: actions/checkout@v4
- name: Download nightly-libtiledbvcf
uses: actions/download-artifact@v4
with:
name: nightly-libtiledbvcf-linux
path: install-libtiledbvcf
- name: Upload libtiledbvcf to release
run: |
the_date=$(date +%Y-%m-%d)
tar -C install-libtiledbvcf -cvzf libtiledbvcf-${the_date}.tar.gz ./
gh release upload ${the_date} libtiledbvcf-${the_date}.tar.gz --clobber
upload-tiledbvcf-py:
runs-on: ubuntu-24.04
needs: [create-release, tiledbvcf-py]
permissions:
contents: write
env:
GH_TOKEN: ${{ github.token }}
TZ: "America/New_York"
steps:
- uses: actions/checkout@v4
- name: Download nightly-tiledbvcf-py
uses: actions/download-artifact@v4
with:
name: nightly-tiledbvcf-py-linux
- name: Upload tiledbvcf-py to release
run: |
the_date=$(date +%Y-%m-%d)
unzip -l tiledbvcf-*-linux_x86_64.whl
gh release upload ${the_date} tiledbvcf-*-linux_x86_64.whl --clobber
upload-libtiledbsoma:
runs-on: ubuntu-24.04
needs: [create-release, libtiledbsoma]
permissions:
contents: write
env:
GH_TOKEN: ${{ github.token }}
TZ: "America/New_York"
steps:
- uses: actions/checkout@v4
- name: Download nightly-libtiledbsoma
uses: actions/download-artifact@v4
with:
name: nightly-libtiledbsoma-linux
path: install-libtiledbsoma
- name: Upload libtiledbsoma to release
run: |
the_date=$(date +%Y-%m-%d)
tar -C install-libtiledbsoma -cvzf libtiledbsoma-${the_date}.tar.gz ./
gh release upload ${the_date} libtiledbsoma-${the_date}.tar.gz --clobber
upload-tiledbsoma-py:
runs-on: ubuntu-24.04
needs: [create-release, tiledbsoma-py]
permissions:
contents: write
env:
GH_TOKEN: ${{ github.token }}
TZ: "America/New_York"
steps:
- uses: actions/checkout@v4
- name: Download nightly-tiledbsoma-py
uses: actions/download-artifact@v4
with:
name: nightly-tiledbsoma-py-linux
- name: Upload tiledbsoma-py to release
run: |
the_date=$(date +%Y-%m-%d)
unzip -l tiledbsoma-*-linux_x86_64.whl
gh release upload ${the_date} tiledbsoma-*-linux_x86_64.whl --clobber
upload-tiledbsoma-r:
runs-on: ubuntu-24.04
needs: [create-release, tiledbsoma-r]
permissions:
contents: write
env:
GH_TOKEN: ${{ github.token }}
TZ: "America/New_York"
steps:
- uses: actions/checkout@v4
- name: Download nightly-tiledbsoma-r
uses: actions/download-artifact@v4
with:
name: nightly-tiledbsoma-r-linux
- name: Upload tiledbsoma-r to release
run: |
the_date=$(date +%Y-%m-%d)
tar --list -f tiledbsoma_*_R_x86_64-pc-linux-gnu.tar.gz
gh release upload ${the_date} tiledbsoma_*_R_x86_64-pc-linux-gnu.tar.gz --clobber
upload-tiledb-cloud-py:
runs-on: ubuntu-24.04
needs: [create-release, tiledb-cloud-py]
permissions:
contents: write
env:
GH_TOKEN: ${{ github.token }}
TZ: "America/New_York"
steps:
- uses: actions/checkout@v4
- name: Download nightly-tiledb-cloud-py
uses: actions/download-artifact@v4
with:
name: nightly-tiledb-cloud-py-linux
- name: Upload tiledb-cloud-py to release
run: |
the_date=$(date +%Y-%m-%d)
unzip -l tiledb_cloud-*-none-any.whl
gh release upload ${the_date} tiledb_cloud-*-none-any.whl --clobber
issue:
permissions:
issues: write
runs-on: ubuntu-24.04
needs: [build-all]
if: ( failure() || cancelled() ) && github.repository_owner == 'TileDB-Inc' && github.event_name == 'schedule'
steps:
- uses: actions/checkout@v4
- name: Open Issue
uses: TileDB-Inc/github-actions/open-issue@main
with:
name: centralized nightlies
label: nightly-failure
assignee: jdblischak
env:
TZ: "America/New_York"