blob: ea3a5fab2bbf55eb26e2ae1b6444c5991ffdcee4 [file] [log] [blame]
# Copyright 2021 The Cobalt Authors. All Rights Reserved.
#
# Licensed 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: '2.4'
volumes:
android-debug-keystore:
container-ccache:
x-common-definitions: &common-definitions
stdin_open: true
tty: true
x-build-volumes: &build-volumes
volumes:
- ${COBALT_SRC:-.}:/code/
- android-debug-keystore:/root/.android/
- ${CCACHE_DIR:-container-ccache}:/root/ccache
x-build-common-definitions: &build-common-definitions
<<:
- *common-definitions
- *build-volumes
depends_on:
- build-base
x-shared-build-env: &shared-build-env
NINJA_PARALLEL: ${NINJA_PARALLEL:-32}
IS_CI: ${IS_CI:-0}
IS_DOCKER: 1
PYTHONPATH: /code
x-shared-unittest-definitions: &shared-unittest-definitions
stdin_open: true
tty: true
build:
context: ./docker/linux
dockerfile: unittest/Dockerfile
args:
- CLANG_VER=${CLANG_VER:-365097-f7e52fbd-8}
- COBALT_CLANG_VER=${COBALT_CLANG_VER:-17-init-8029-g27f27d15-3}
image: cobalt-linux-x64x11-unittest
environment:
- PLATFORM=${PLATFORM:-linux-x64x11}
- CONFIG=${CONFIG:-devel}
volumes:
- ${COBALT_SRC:-.}/out/${PLATFORM:-linux-x64x11}_${CONFIG:-devel}:/out
- ${COBALT_SRC:-.}/out/${PLATFORM:-linux-x64x11}_${CONFIG:-devel}/testoutput:/tmp/testoutput
# TODO: Get NPLB unittests to run with IPv6 without using the host network.
network_mode: "host"
depends_on: [ base ]
services:
#### Tools
pre-commit:
build:
context: ./docker/precommit_hooks
dockerfile: Dockerfile
image: pre-commit
volumes:
- ${COBALT_SRC:-.}:/code/
environment:
FROM_REF: ${FROM_REF:-HEAD^1}
TO_REF: ${TO_REF:-HEAD}
pytest:
build:
context: ./docker/pytest
dockerfile: Dockerfile
image: cobalt-build-pytest
volumes:
- ${COBALT_SRC:-.}:/code/
depends_on:
- base
#### Cobalt build containers
base:
build:
args:
- BASE_OS
context: ./docker/linux
dockerfile: base/Dockerfile
image: cobalt-base
scale: 0
base-bionic:
build:
args:
- BASE_OS=gcr.io/cloud-marketplace-containers/google/ubuntu1804
- BASE_OS_TAG=latest
context: ./docker/linux
dockerfile: base/Dockerfile
image: base-bionic
scale: 0
# Define common build container for Linux
build-base:
build:
context: ./docker/linux
dockerfile: base/build/Dockerfile
args:
# Should match version pinned by Starboard
- CLANG_VER=${CLANG_VER:-365097-f7e52fbd-8}
- COBALT_CLANG_VER=${COBALT_CLANG_VER:-17-init-8029-g27f27d15-3}
image: cobalt-build-base
depends_on:
- base
scale: 0
build-base-bionic:
build:
context: ./docker/linux
dockerfile: base/build/Dockerfile
args:
- FROM_IMAGE=base-bionic
- CLANG_VER=${CLANG_VER:-365097-f7e52fbd-8}
- COBALT_CLANG_VER=${COBALT_CLANG_VER:-17-init-8029-g27f27d15-3}
image: build-base-bionic
depends_on:
- base-bionic
scale: 0
build-linux-stub:
<<: *build-common-definitions
build:
context: ./docker/linux
dockerfile: stub/Dockerfile
image: cobalt-build-linux-stub
depends_on: [ build-base ]
environment:
<<: *shared-build-env
stub:
<<: *build-common-definitions
build:
context: ./docker/linux
dockerfile: stub/Dockerfile
image: cobalt-build-linux-stub
depends_on: [ build-base ]
environment:
<<: *shared-build-env
PLATFORM: stub
CONFIG: ${CONFIG:-debug}
SB_API_VERSION: ${SB_API_VERSION}
build-linux:
<<: *build-common-definitions
build:
context: ./docker/linux
dockerfile: linux-x64x11/Dockerfile
image: cobalt-build-linux
depends_on: [ build-base ]
environment:
<<: *shared-build-env
linux-x64x11:
<<: *build-common-definitions
build:
context: ./docker/linux
dockerfile: linux-x64x11/Dockerfile
image: cobalt-build-linux
depends_on: [ build-base ]
environment:
<<: *shared-build-env
PLATFORM: linux-x64x11
CONFIG: ${CONFIG:-debug}
TARGET: ${TARGET:-cobalt_install}
SB_API_VERSION: ${SB_API_VERSION}
linux-x64x11-bionic:
<<:
- *common-definitions
- *build-volumes
build:
context: ./docker/linux
dockerfile: linux-x64x11/Dockerfile
args:
- FROM_IMAGE=build-base-bionic
image: linux-x64x11-bionic
depends_on:
- build-base-bionic
scale: 0
linux-x64x11-gcc:
<<:
- *common-definitions
- *build-volumes
build:
context: ./docker/linux
dockerfile: gcc-6-3/Dockerfile
image: cobalt-build-linux-gcc
environment:
<<: *shared-build-env
PLATFORM: linux-x64x11-gcc-6-3
CONFIG: ${CONFIG:-debug}
SB_API_VERSION: ${SB_API_VERSION}
depends_on:
- linux-x64x11-bionic
build-linux-gcc:
<<:
- *common-definitions
- *build-volumes
build:
context: ./docker/linux
dockerfile: gcc-6-3/Dockerfile
image: cobalt-build-linux-gcc
depends_on:
- linux-x64x11-bionic
linux-x64x11-clang-3-9:
<<:
- *common-definitions
- *build-volumes
build:
context: ./docker/linux/
dockerfile: clang-3-9/Dockerfile
image: cobalt-build-linux-clang-3-9
environment:
<<: *shared-build-env
PLATFORM: linux-x64x11-clang-3-9
CONFIG: ${CONFIG:-debug}
SB_API_VERSION: ${SB_API_VERSION}
depends_on:
- linux-x64x11-bionic
build-linux-clang-3-9:
<<:
- *common-definitions
- *build-volumes
build:
context: ./docker/linux/
dockerfile: clang-3-9/Dockerfile
image: cobalt-build-linux-clang-3-9
depends_on:
- linux-x64x11-bionic
# Define common build container for Android
build-android:
<<: *build-common-definitions
build:
context: ./docker/linux/android
dockerfile: ./Dockerfile
image: cobalt-build-android
scale: 0
android-x86:
<<: *build-common-definitions
image: cobalt-build-android
depends_on: [ build-android ]
environment:
<<: *shared-build-env
PLATFORM: android-x86
CONFIG: ${CONFIG:-debug}
TARGET_CPU: ${TARGET_CPU:-x86}
SB_API_VERSION: ${SB_API_VERSION}
android-arm:
<<: *build-common-definitions
image: cobalt-build-android
depends_on: [ build-android ]
environment:
<<: *shared-build-env
PLATFORM: android-arm
CONFIG: ${CONFIG:-debug}
TARGET_CPU: ${TARGET_CPU:-arm}
SB_API_VERSION: ${SB_API_VERSION}
android-arm64:
<<: *build-common-definitions
image: cobalt-build-android
depends_on: [ build-android ]
environment:
<<: *shared-build-env
PLATFORM: android-arm64
CONFIG: ${CONFIG:-debug}
TARGET_CPU: ${TARGET_CPU:-arm64}
SB_API_VERSION: ${SB_API_VERSION}
build-raspi:
<<: *build-common-definitions
build:
context: ./docker/linux/raspi
dockerfile: ./Dockerfile
image: cobalt-build-raspi
environment:
<<: *shared-build-env
raspi:
<<: *build-common-definitions
build:
context: ./docker/linux/raspi
dockerfile: ./Dockerfile
image: cobalt-build-raspi
environment:
<<: *shared-build-env
PLATFORM: ${PLATFORM:-raspi-2}
CONFIG: ${CONFIG:-debug}
SB_API_VERSION: ${SB_API_VERSION}
# Define common build container for Evergreen
build-evergreen:
<<: *build-common-definitions
build:
context: ./docker/linux
dockerfile: evergreen/Dockerfile
image: cobalt-build-evergreen
depends_on: [ build-base ]
environment:
<<: *shared-build-env
evergreen-x64:
<<: *build-common-definitions
image: cobalt-build-evergreen
depends_on: [ build-evergreen ]
environment:
<<: *shared-build-env
PLATFORM: evergreen-x64
TARGET_CPU: ${TARGET_CPU:-x64}
SB_API_VERSION: ${SB_API_VERSION}
evergreen-x86:
<<: *build-common-definitions
image: cobalt-build-evergreen
depends_on: [ build-evergreen ]
environment:
<<: *shared-build-env
PLATFORM: evergreen-x86
TARGET_CPU: ${TARGET_CPU:-x86}
SB_API_VERSION: ${SB_API_VERSION}
evergreen-arm64:
<<: *build-common-definitions
image: cobalt-build-evergreen
depends_on: [ build-evergreen ]
environment:
<<: *shared-build-env
PLATFORM: evergreen-arm64
TARGET_CPU: ${TARGET_CPU:-arm64}
SB_API_VERSION: ${SB_API_VERSION}
evergreen-arm-hardfp:
<<: *build-common-definitions
image: cobalt-build-evergreen
depends_on: [ build-evergreen ]
environment:
<<: *shared-build-env
PLATFORM: evergreen-arm-hardfp
TARGET_CPU: ${TARGET_CPU:-arm}
SB_API_VERSION: ${SB_API_VERSION}
evergreen-arm-softfp:
<<: *build-common-definitions
image: cobalt-build-evergreen
depends_on: [ build-evergreen ]
environment:
<<: *shared-build-env
PLATFORM: evergreen-arm-softfp
TARGET_CPU: ${TARGET_CPU:-arm}
SB_API_VERSION: ${SB_API_VERSION}
# Defined common build image for linux-evergreen
build-linux-evergreen:
<<: *build-common-definitions
build:
context: ./docker/linux
dockerfile: linux-x64x11/Dockerfile
args:
- FROM_IMAGE=cobalt-build-evergreen
image: cobalt-build-linux-evergreen
depends_on: [ build-evergreen ]
environment:
<<: *shared-build-env
linux-x64x11-evergreen:
<<: *build-common-definitions
build:
context: ./docker/linux
dockerfile: linux-x64x11/Dockerfile
args:
- FROM_IMAGE=cobalt-build-evergreen
image: cobalt-build-linux-x64x11-evergreen
depends_on: [ build-evergreen ]
environment:
<<: *shared-build-env
PLATFORM: linux-x64x11
CONFIG: ${CONFIG:-debug}
SB_API_VERSION: ${SB_API_VERSION}
# Defined common build image for android-evergreen
build-android-evergreen:
<<: *build-common-definitions
build:
context: ./docker/linux
dockerfile: android/Dockerfile
args:
- FROM_IMAGE=cobalt-build-evergreen
image: cobalt-build-android-evergreen
depends_on: [ build-evergreen ]
environment:
<<: *shared-build-env
# Example usage of unittest:
# 1. Build the containers for which you want to unittest
# docker compose up --build --no-start linux-x64x11-unittest
# 2. Build the 'all' target for the platform you want to test
# PLATFORM=linux-x64x11 CONFIG=devel TARGET=all docker compose run linux-x64x11
# 3. Run the unittests for that target.
# PLATFORM=linux-x64x11 CONFIG=devel docker compose run linux-x64x11-unittest
linux-x64x11-unittest:
<<: *shared-unittest-definitions
# Stub container that launches all shard containers in parallel.
linux-x64x11-unittest-parallel:
image: cobalt-base
entrypoint: ["/bin/sh", "-c", "echo", "done"]
depends_on:
- linux-x64x11-unittest-parallel-0
- linux-x64x11-unittest-parallel-1
- linux-x64x11-unittest-parallel-2
- linux-x64x11-unittest-parallel-3
linux-x64x11-unittest-parallel-0:
<<: *shared-unittest-definitions
entrypoint: ["python3", "/unittest_docker_launcher.py", "0"]
linux-x64x11-unittest-parallel-1:
<<: *shared-unittest-definitions
entrypoint: ["python3", "/unittest_docker_launcher.py", "1"]
linux-x64x11-unittest-parallel-2:
<<: *shared-unittest-definitions
entrypoint: ["python3", "/unittest_docker_launcher.py", "2"]
linux-x64x11-unittest-parallel-3:
<<: *shared-unittest-definitions
entrypoint: ["python3", "/unittest_docker_launcher.py", "3"]
xvfb:
image: cobalt-xvfb
ports:
- "99:99"
build:
context: ./docker/linux/
dockerfile: xvfb/Dockerfile
depends_on: [ linux-x64x11-unittest ]
linux-x64x11-integration-test:
<<: *build-common-definitions
image: cobalt-integration-test
build:
context: ./docker/linux/
dockerfile: integration_test/Dockerfile
depends_on: [ xvfb ]
working_dir: /code
environment:
- DISPLAY=xvfb:99
- IPV6_AVAILABLE=0
- PYTHONPATH=/code
- PLATFORM=${PLATFORM:-linux-x64x11}
- CONFIG=${CONFIG:-devel}