picom/.circleci/config.yml

136 lines
3.0 KiB
YAML

executors:
e:
docker:
- image: yshui/comptonci
working_directory: "/tmp/workspace"
environment:
UBSAN_OPTIONS: "halt_on_error=1"
version: 2.1
commands:
build:
parameters:
build-config:
type: string
default: ""
cc:
type: string
default: cc
steps:
- restore_cache:
keys:
- source-v1-{{ .Branch }}-{{ .Revision }}
- source-v1-{{ .Branch }}-
- source-v1-
- checkout
- save_cache:
key: source-v1-{{ .Branch }}-{{ .Revision }}
paths:
- ".git"
- run:
name: config
command: CC=<< parameters.cc >> meson << parameters.build-config >> -Dunittest=true --werror . build
- run:
name: build
command: ninja -vC build
jobs:
basic:
executor: e
steps:
- build:
build-config: -Dwith_docs=true -Db_coverage=true
- persist_to_workspace:
root: .
paths:
- .
test:
executor: e
steps:
- attach_workspace:
at: /tmp/workspace
- run:
name: unit test
command: ninja -vC build test
- run:
name: test config file parsing
command: xvfb-run -s "-screen 0 640x480x24" build/src/picom --config tests/configs/parsing_test.conf --no-vsync --diagnostics
- run:
name: run testsuite
command: tests/run_tests.sh build/src/picom
- run:
name: generate coverage reports
command: cd build; find -name '*.gcno' -exec gcov -pb {} +
- run:
name: download codecov scripts
command: curl -s https://codecov.io/bash > codecov.sh
- run:
name: upload coverage reports
command: bash ./codecov.sh -X gcov
minimal:
executor: e
steps:
- build:
build-config: -Dopengl=false -Ddbus=false -Dregex=false -Dconfig_file=false
release:
executor: e
steps:
- build:
build-config: --buildtype=release
release-clang:
executor: e
steps:
- build:
cc: clang
build-config: --buildtype=release
nogl:
executor: e
steps:
- build:
build-config: -Dopengl=false
noregex:
executor: e
steps:
- build:
build-config: -Dregex=false
clang_basic:
executor: e
steps:
- build:
cc: clang
clang_minimal:
executor: e
steps:
- build:
cc: clang
build-config: -Dopengl=false -Ddbus=false -Dregex=false -Dconfig_file=false
clang_nogl:
executor: e
steps:
- build:
cc: clang
build-config: -Dopengl=false
clang_noregex:
executor: e
steps:
- build:
cc: clang
build-config: -Dregex=false
workflows:
all_builds:
jobs:
- basic
- clang_basic
- minimal
- clang_minimal
- nogl
- clang_nogl
- release
- release-clang
- test:
requires:
- basic
# vim: set sw=2 ts=8 et: