name: Julia on: workflow_dispatch: repository_dispatch: push: branches-ignore: - 'main' - 'feature' - 'v*.*-*' paths-ignore: - '**.md' - 'examples/**' - 'test/**' - 'tools/**' - '!tools/juliapkg/**' - '.github/patches/duckdb-wasm/**' - '.github/workflows/**' - '!.github/workflows/Julia.yml' - '.github/config/extensions/*.cmake' - '.github/patches/extensions/**/*.patch' merge_group: pull_request: types: [opened, reopened, ready_for_review, converted_to_draft] paths-ignore: - '**.md' - 'examples/**' - 'test/**' - 'tools/**' - '!tools/juliapkg/**' - '.github/patches/duckdb-wasm/**' - '.github/workflows/**' - '!.github/workflows/Julia.yml' - '.github/config/extensions/*.cmake' - '.github/patches/extensions/**/*.patch' concurrency: group: ${{ github.workflow }}-${{ github.ref }}-${{ github.head_ref || '' }}-${{ github.base_ref || '' }}-${{ github.ref != 'refs/heads/main' || github.sha }} cancel-in-progress: true jobs: check-draft: # We run all other jobs on PRs only if they are not draft PR if: github.event_name != 'pull_request' || github.event.pull_request.draft == false runs-on: ubuntu-24.04 steps: - name: Preliminary checks on CI run: echo "Event name is ${{ github.event_name }}" format_check: name: Julia Format Check needs: check-draft runs-on: ubuntu-latest steps: - uses: actions/checkout@v4 with: fetch-depth: 0 - uses: julia-actions/setup-julia@v1 with: version: 1.7 arch: x64 - name: Format Check shell: bash run: | cd tools/juliapkg julia -e "import Pkg; Pkg.add(\"JuliaFormatter\")" ./format_check.sh main_julia: name: Julia ${{ matrix.version }} needs: check-draft runs-on: ${{ matrix.os }} strategy: fail-fast: false matrix: version: - '1.10' - '1' os: - ubuntu-latest arch: - x64 isRelease: - ${{ github.ref == 'refs/heads/main' }} steps: - uses: actions/checkout@v4 with: fetch-depth: 0 - uses: julia-actions/setup-julia@v2 with: version: ${{ matrix.version }} arch: ${{ matrix.arch }} - name: Setup Ccache uses: hendrikmuhs/ccache-action@main with: key: ${{ github.job }}-${{ matrix.os }}-${{ matrix.arch }}-${{ matrix.version }} save: ${{ vars.BRANCHES_TO_BE_CACHED == '' || contains(vars.BRANCHES_TO_BE_CACHED, github.ref) }} - name: Build DuckDB shell: bash run: | CORE_EXTENSIONS="tpch;icu" BUILD_JEMALLOC=1 make - name: Run Tests shell: bash run: | export JULIA_DUCKDB_LIBRARY="`pwd`/build/release/src/libduckdb.so" export JULIA_NUM_THREADS=2 export LD_PRELOAD="/usr/lib/x86_64-linux-gnu/libstdc++.so.6" ls $JULIA_DUCKDB_LIBRARY cd tools/juliapkg julia --project -e "import Pkg; Pkg.test()"