blob: d575bc31f564bec717f4ad4bb5d661e1e5003b3d [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-docsite-definitions: &shared-docsite-definitions
<<: *build-common-definitions
build:
context: ./docker/docsite
dockerfile: Dockerfile
args:
- USER=root
- UID=2000
- GID=2000
environment:
<<: *shared-build-env
x-shared-unittest-definitions: &shared-unittest-definitions
stdin_open: true
tty: true
build:
context: ./docker/linux
dockerfile: unittest/Dockerfile
image: cobalt-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}
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}
image: build-base-bionic
depends_on:
- base-bionic
scale: 0
docsite:
<<: *shared-docsite-definitions
image: cobalt-build-docsite
ports:
# The docsite webapp runs on port 4000.
- "4000:4000"
docsite-deploy:
<<: *shared-docsite-definitions
image: cobalt-build-docsite-deploy
entrypoint: ["/code/third_party/repo-publishing-toolkit-local/preview-site.sh", "deploy"]
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}
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}
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}
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}
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}
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}
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}
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}
# 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}
evergreen-x64-sbversion-12:
<<: *build-common-definitions
image: cobalt-build-evergreen
depends_on: [ build-evergreen ]
environment:
<<: *shared-build-env
PLATFORM: evergreen-x64-sbversion-12
TARGET_CPU: ${TARGET_CPU:-x64}
SB_API_VERSION: 12
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}
evergreen-x86-sbversion-12:
<<: *build-common-definitions
image: cobalt-build-evergreen
depends_on: [ build-evergreen ]
environment:
<<: *shared-build-env
PLATFORM: evergreen-x86-sbversion-12
TARGET_CPU: ${TARGET_CPU:-x86}
SB_API_VERSION: 12
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}
evergreen-arm64-sbversion-12:
<<: *build-common-definitions
image: cobalt-build-evergreen
depends_on: [ build-evergreen ]
environment:
<<: *shared-build-env
PLATFORM: evergreen-arm64-sbversion-12
TARGET_CPU: ${TARGET_CPU:-arm64}
SB_API_VERSION: 12
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}
evergreen-arm-hardfp-sbversion-12:
<<: *build-common-definitions
image: cobalt-build-evergreen
depends_on: [ build-evergreen ]
environment:
<<: *shared-build-env
PLATFORM: evergreen-arm-hardfp-sbversion-12
TARGET_CPU: ${TARGET_CPU:-arm}
SB_API_VERSION: 12
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}
evergreen-arm-softfp-sbversion-12:
<<: *build-common-definitions
image: cobalt-build-evergreen
depends_on: [ build-evergreen ]
environment:
<<: *shared-build-env
PLATFORM: evergreen-arm-softfp-sbversion-12
TARGET_CPU: ${TARGET_CPU:-arm}
SB_API_VERSION: 12
# 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-sbversion12-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-sbversion-12
CONFIG: ${CONFIG:-debug}
SB_API_VERSION: 12
# 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 TARGET=all docker-compose run unittest
unittest:
<<: *shared-unittest-definitions
# Stub container that launches all shard containers in parallel.
unittest-parallel:
image: cobalt-base
entrypoint: ["/bin/sh", "-c", "echo", "done"]
depends_on:
- unittest-parallel-0
- unittest-parallel-1
- unittest-parallel-2
- unittest-parallel-3
unittest-parallel-0:
<<: *shared-unittest-definitions
entrypoint: ["python3", "/unittest_docker_launcher.py", "0"]
unittest-parallel-1:
<<: *shared-unittest-definitions
entrypoint: ["python3", "/unittest_docker_launcher.py", "1"]
unittest-parallel-2:
<<: *shared-unittest-definitions
entrypoint: ["python3", "/unittest_docker_launcher.py", "2"]
unittest-parallel-3:
<<: *shared-unittest-definitions
entrypoint: ["python3", "/unittest_docker_launcher.py", "3"]