blob: e65d93596cb3a913b469f110524bd9f7f88ce73e [file] [log] [blame]
# Licensed to the Apache Software Foundation (ASF) under one
# or more contributor license agreements. See the NOTICE file
# distributed with this work for additional information
# regarding copyright ownership. The ASF licenses this file
# to you under the Apache License, Version 2.0 (the
# "License"); you may not use this file except in compliance
# with the License. You may obtain a copy of the License at
#
# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing,
# software distributed under the License is distributed on an
# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
# KIND, either express or implied. See the License for the
# specific language governing permissions and limitations
# under the License.
version: '3.9'
services:
# These reuse Arrow's images for simplicity. You won't be able to
# build the image from here.
############################ Documentation ###################################
docs:
image: condaforge/mambaforge:latest
volumes:
- .:/adbc:delegated
command: |
/bin/bash -c 'git config --global --add safe.directory /adbc && source /opt/conda/etc/profile.d/conda.sh && mamba create -y -n adbc -c conda-forge go --file /adbc/ci/conda_env_cpp.txt --file /adbc/ci/conda_env_docs.txt --file /adbc/ci/conda_env_python.txt && conda activate adbc && env ADBC_USE_ASAN=0 ADBC_USE_UBSAN=0 /adbc/ci/scripts/cpp_build.sh /adbc /adbc/build && env CGO_ENABLED=1 /adbc/ci/scripts/go_build.sh /adbc /adbc/build && /adbc/ci/scripts/python_build.sh /adbc /adbc/build && /adbc/ci/scripts/docs_build.sh /adbc'
golang-sqlite-flightsql:
image: ${REPO}:golang-${GO}-sqlite-flightsql
build:
context: .
cache_from:
- ${REPO}:golang-${GO}-sqlite-flightsql
dockerfile: ci/docker/golang-flightsql-sqlite.dockerfile
args:
GO: ${GO}
ARROW_MAJOR_VERSION: ${ARROW_MAJOR_VERSION}
ports:
- 8080:8080
############################ Java JARs ######################################
java-dist:
image: ${ARCH}/maven:${MAVEN}-jdk-${JDK}
volumes:
- .:/adbc:delegated
command: "/bin/bash -c '/adbc/ci/scripts/java_build.sh /adbc /adbc/dist && /adbc/ci/scripts/java_test.sh /adbc'"
############################ Python conda ##################################
# Must be run as docker-compose run -e HOST_USER_ID=$(id -u) python-conda
python-conda:
image: condaforge/linux-anvil-cos7-x86_64
volumes:
- .:/adbc:delegated
command: "/bin/bash -c 'conda config --remove channels defaults && /adbc/ci/scripts/python_conda_build.sh /adbc ${ARCH_CONDA_FORGE}.yaml /adbc/build'"
python-conda-test:
image: condaforge/mambaforge
volumes:
- .:/adbc:delegated
command: "/bin/bash -c '/adbc/ci/scripts/python_conda_test.sh /adbc /adbc/build'"
############################ Python sdist ##################################
python-sdist:
image: ${ARCH}/python:${PYTHON}
volumes:
- .:/adbc:delegated
command: "/bin/bash -c 'git config --global --add safe.directory /adbc && source /adbc/ci/scripts/python_sdist_build.sh /adbc'"
python-sdist-test:
image: ${REPO}:${ARCH}-python-${PYTHON}-wheel-manylinux-${MANYLINUX}-vcpkg-${VCPKG}-adbc
build:
context: .
cache_from:
- ${REPO}:${ARCH}-python-${PYTHON}-wheel-manylinux-${MANYLINUX}-vcpkg-${VCPKG}-adbc
dockerfile: ci/docker/python-wheel-manylinux.dockerfile
args:
ARCH: ${ARCH}
MANYLINUX: ${MANYLINUX}
PYTHON: ${PYTHON}
REPO: ${REPO}
VCPKG: ${VCPKG}
volumes:
- .:/adbc:delegated
command: "'git config --global --add safe.directory /adbc && source /adbc/ci/scripts/python_sdist_test.sh ${ARCH} /adbc'"
############################ Python wheels ##################################
python-wheel-manylinux:
image: ${REPO}:${ARCH}-python-${PYTHON}-wheel-manylinux-${MANYLINUX}-vcpkg-${VCPKG}-adbc
build:
context: .
cache_from:
- ${REPO}:${ARCH}-python-${PYTHON}-wheel-manylinux-${MANYLINUX}-vcpkg-${VCPKG}-adbc
dockerfile: ci/docker/python-wheel-manylinux.dockerfile
args:
ARCH: ${ARCH}
MANYLINUX: ${MANYLINUX}
PYTHON: ${PYTHON}
REPO: ${REPO}
VCPKG: ${VCPKG}
volumes:
- /var/run/docker.sock:/var/run/docker.sock
- .:/adbc
# Must set safe.directory so miniver won't error when calling git
command: "'git config --global --add safe.directory /adbc && git config --global --get safe.directory && /adbc/ci/scripts/python_wheel_unix_build.sh ${ARCH} /adbc /adbc/build'"
python-wheel-manylinux-test:
image: ${ARCH}/python:${PYTHON}-slim
volumes:
- .:/adbc:delegated
command: /adbc/ci/scripts/python_wheel_unix_test.sh /adbc
###################### Test database environments ############################
postgres_test:
container_name: adbc_postgres_test
image: postgres:latest
environment:
POSTGRES_USER: postgres
POSTGRES_PASSWORD: password
ports:
- "5432:5432"
dremio:
container_name: adbc-dremio
image: dremio/dremio-oss:latest
environment:
DREMIO_JAVA_EXTRA_OPTS: "-Ddebug.addDefaultUser=true -Ddremio.eula.disabled=true"
healthcheck:
test: [ "CMD", "curl", "--fail", "http://localhost:9047" ]
interval: 10s
timeout: 10s
retries: 5
start_period: 40s
ports:
- "9047:9047"
- "32010:32010"
- "31010:31010"
- "45678:45678"
dremio-init:
container_name: adbc-dremio-init
image: ${REPO}:adbc-dremio-init
build:
context: .
cache_from:
- ${REPO}:adbc-dremio-init
dockerfile: ci/docker/dremio-init.dockerfile
environment:
dremio_url: http://dremio:9047
depends_on:
dremio:
condition: service_healthy
entrypoint: "/init/bootstrap.sh"
volumes:
- "./ci/scripts/integration/dremio:/init"