blob: 7e2364f39a6bf5fbb00673cc0179db06118a0704 [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:
container-starboard-toolchains:
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
- ${STARBOARD_TOOLCHAINS_DIR:-container-starboard-toolchains}:/root/starboard-toolchains
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}
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}
docsite:
build:
context: ./docker/docsite
dockerfile: Dockerfile
container_name: docsite
ports:
- "4000:4000"
volumes:
- ${COBALT_SRC:-.}:/code/
docsite-build-only:
container_name: docsite-build-only
environment:
# SITE_DST specifies where the files required to deploy the site should be
# placed, and by default this is under the "out" directory.
- SITE_DST=${SITE_DST:-/cobalt/out/deploy/www}
extends:
service: docsite
#### 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
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
image: build-base-bionic
depends_on:
- base-bionic
scale: 0
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}
stub-gn:
<<: *build-common-definitions
build:
context: ./docker/linux
dockerfile: stub/gn/Dockerfile
image: cobalt-build-linux-stub-gn
depends_on: [ stub ]
environment:
<<: *shared-build-env
PLATFORM: stub
CONFIG: ${CONFIG:-debug}
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}
linux-x64x11-gn:
<<: *build-common-definitions
build:
context: ./docker/linux
dockerfile: linux-x64x11/gn/Dockerfile
image: cobalt-build-linux-gn
depends_on: [ linux-x64x11 ]
environment:
<<: *shared-build-env
PLATFORM: linux-x64x11
CONFIG: ${CONFIG:-debug}
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-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
linux-x64x11-clang-3-9-prebuilt:
<<: *common-definitions
<<: *build-volumes
image: gcr.io/cobalt-tools/build-cobalt-linux-x64x11-clang-3-9:1.4
environment:
<<: *shared-build-env
PLATFORM: linux-x64x11-clang-3-9
CONFIG: ${CONFIG:-debug}
USE_CCACHE: ${USE_CCACHE:-1}
NINJA_STATUS: ${NINJA_STATUS}
# 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
IS_DOCKER: 1
PLATFORM: android-x86
CONFIG: ${CONFIG:-debug}
android-x86-gn:
<<: *build-common-definitions
image: cobalt-build-android-gn
depends_on: [ android-x86 ]
build:
context: ./docker/linux/android
dockerfile: ./gn/Dockerfile
environment:
<<: *shared-build-env
IS_DOCKER: 1
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
IS_DOCKER: 1
PLATFORM: android-arm
CONFIG: ${CONFIG:-debug}
android-arm-gn:
<<: *build-common-definitions
image: cobalt-build-android-gn
depends_on: [ android-arm ]
build:
context: ./docker/linux/android
dockerfile: ./gn/Dockerfile
environment:
<<: *shared-build-env
IS_DOCKER: 1
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
IS_DOCKER: 1
PLATFORM: android-arm64
CONFIG: ${CONFIG:-debug}
android-arm64-gn:
<<: *build-common-definitions
image: cobalt-build-android-gn
depends_on: [ android-arm64 ]
build:
context: ./docker/linux/android
dockerfile: ./gn/Dockerfile
environment:
<<: *shared-build-env
IS_DOCKER: 1
PLATFORM: android-arm64
CONFIG: ${CONFIG:-debug}
TARGET_CPU: ${TARGET_CPU:-arm64}
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}
raspi-gn:
<<: *build-common-definitions
build:
context: ./docker/linux/raspi
dockerfile: ./gn/Dockerfile
image: cobalt-build-raspi-gn
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
environment:
<<: *shared-build-env
evergreen-x64:
<<: *build-common-definitions
image: cobalt-build-evergreen
depends_on: [ build-evergreen ]
environment:
<<: *shared-build-env
PLATFORM: evergreen-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
evergreen-x86:
<<: *build-common-definitions
image: cobalt-build-evergreen
depends_on: [ build-evergreen ]
environment:
<<: *shared-build-env
PLATFORM: evergreen-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
evergreen-arm64:
<<: *build-common-definitions
image: cobalt-build-evergreen
depends_on: [ build-evergreen ]
environment:
<<: *shared-build-env
PLATFORM: evergreen-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
evergreen-arm-hardfp:
<<: *build-common-definitions
image: cobalt-build-evergreen
depends_on: [ build-evergreen ]
environment:
<<: *shared-build-env
PLATFORM: evergreen-arm-hardfp
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
evergreen-arm-softfp:
<<: *build-common-definitions
image: cobalt-build-evergreen
depends_on: [ build-evergreen ]
environment:
<<: *shared-build-env
PLATFORM: evergreen-arm-softfp
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
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}
# 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:
<<: *common-definitions
build:
context: ./docker/linux
dockerfile: unittest/Dockerfile
image: cobalt-unittest
environment:
- PLATFORM=${PLATFORM:-linux-x64x11}
- CONFIG=${CONFIG:-debug}
volumes:
- ${COBALT_SRC:-.}/out/${PLATFORM:-linux-x64x11}_${CONFIG:-debug}:/out
# TODO: Get NPLB unittests to run with IPv6 without using the host network.
network_mode: "host"
depends_on: [ base ]