| # 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} |