image: $CI_REGISTRY/$CI_PROJECT_PATH/igt-fedora:latest variables: MESON_OPTIONS: > -Dlibdrm_drivers=intel,nouveau,amdgpu -Doverlay=enabled -Dchamelium=enabled -Dvalgrind=enabled -Dman=enabled -Dtests=enabled -Drunner=enabled -Dlibunwind=enabled LANG: "C.UTF-8" stages: - containers - build - test - deploy #################### BUILD ######################### build:tests-fedora: stage: build script: - meson $MESON_OPTIONS build - ninja -C build - ninja -C build igt-gpu-tools-doc artifacts: paths: - build build:tests-fedora-no-libunwind: stage: build script: - dnf remove -y libunwind-devel - meson -Dlibunwind=disabled build - ninja -C build # documentation building is different with meson<0.47 build:tests-fedora-oldest-meson: stage: build script: - dnf remove -y meson - pip3 install /usr/src/meson-*.tar.gz - meson $MESON_OPTIONS build - ninja -C build - ninja -C build igt-gpu-tools-doc build:tests-fedora-clang: stage: build variables: CC: clang script: - meson $MESON_OPTIONS build - ninja -C build artifacts: paths: - build build:tests-debian-meson: image: $CI_REGISTRY/$CI_PROJECT_PATH/igt-debian:latest stage: build script: - meson $MESON_OPTIONS build - ninja -C build - cp build/tests/test-list.txt meson-test-list.txt artifacts: paths: - meson-test-list.txt build:tests-debian-minimal: image: $CI_REGISTRY/$CI_PROJECT_PATH/igt-debian-minimal:latest stage: build script: - meson -Dtests=disabled -Dlibdrm_drivers="" build - ninja -C build artifacts: paths: - build build:tests-debian-meson-armhf: image: $CI_REGISTRY/$CI_PROJECT_PATH/igt-debian-armhf:latest stage: build script: - export PKG_CONFIG_PATH=/usr/lib/arm-linux-gnueabihf/pkgconfig/ - meson --cross-file meson-cross-armhf.txt build - ninja -C build artifacts: paths: - build build:tests-debian-meson-arm64: image: $CI_REGISTRY/$CI_PROJECT_PATH/igt-debian-arm64:latest stage: build script: - export PKG_CONFIG_PATH=/usr/lib/aarch64-linux-gnu/pkgconfig/ - meson --cross-file meson-cross-arm64.txt build - ninja -C build artifacts: paths: - build build:tests-debian-meson-mips: image: $CI_REGISTRY/$CI_PROJECT_PATH/igt-debian-mips:latest stage: build script: - export PKG_CONFIG_PATH=/usr/lib/mips-linux-gnu/pkgconfig/ - meson --cross-file meson-cross-mips.txt build - ninja -C build artifacts: paths: - build build:tests-debian-autotools: image: $CI_REGISTRY/$CI_PROJECT_PATH/igt-debian:latest stage: build script: - ./autogen.sh --enable-{chamelium,audio,intel,amdgpu,nouveau,tests,runner} - make -j - cp tests/test-list.txt autotools-test-list.txt artifacts: paths: - autotools-test-list.txt #################### TEST ########################## test:ninja-test: dependencies: - build:tests-fedora stage: test script: ninja -C build test test:ninja-test-clang: dependencies: - build:tests-fedora-clang variables: CC: clang stage: test script: ninja -C build test test:ninja-test-minimal: image: $CI_REGISTRY/$CI_PROJECT_PATH/igt-debian-minimal:latest dependencies: - build:tests-debian-minimal stage: test script: ninja -C build test test:ninja-test-arm64: image: $CI_REGISTRY/$CI_PROJECT_PATH/igt-debian-arm64:latest dependencies: - build:tests-debian-meson-arm64 stage: test script: - export PKG_CONFIG_PATH=/usr/lib/aarch64-linux-gnu/pkgconfig/ - env > build/envdump.txt - ninja -C build test artifacts: paths: - build when: on_failure test:ninja-test-armhf: image: $CI_REGISTRY/$CI_PROJECT_PATH/igt-debian-armhf:latest dependencies: - build:tests-debian-meson-armhf stage: test script: - export PKG_CONFIG_PATH=/usr/lib/arm-linux-gnueabihf/pkgconfig/ - env > build/envdump.txt - ninja -C build test artifacts: paths: - build when: on_failure test:ninja-test-mips: image: $CI_REGISTRY/$CI_PROJECT_PATH/igt-debian-mips:latest dependencies: - build:tests-debian-meson-mips stage: test script: - export PKG_CONFIG_PATH=/usr/lib/mips-linux-gnu/pkgconfig/ - env > build/envdump.txt - ninja -C build test artifacts: paths: - build when: on_failure test:test-list-diff: dependencies: - build:tests-debian-autotools - build:tests-debian-meson stage: test script: diff <(sed "s/ /\n/g" meson-test-list.txt| grep -v 'vc4\|v3d\|panfrost' | sort) <(sed "s/ /\n/g" autotools-test-list.txt | sort) ################### DEPLOY ######################### pages: when: manual dependencies: - build:tests-fedora stage: deploy script: - ninja -C build igt-gpu-tools-doc - cp -r build/docs/reference/igt-gpu-tools/html public artifacts: paths: - public only: - master ################# CONTAINERS ####################### containers:igt-debian: stage: containers image: docker:stable only: changes: - Dockerfile.debian-minimal - Dockerfile.debian - .gitlab-ci.yml services: - docker:dind variables: DOCKER_HOST: tcp://docker:2375 DOCKER_DRIVER: overlay2 script: - docker login -u gitlab-ci-token -p $CI_JOB_TOKEN $CI_REGISTRY - docker build -t $CI_REGISTRY/$CI_PROJECT_PATH/igt-debian-minimal -t igt-debian-minimal -f Dockerfile.debian-minimal . - docker build -t $CI_REGISTRY/$CI_PROJECT_PATH/igt-debian -f Dockerfile.debian . - docker push $CI_REGISTRY/$CI_PROJECT_PATH/igt-debian-minimal - docker push $CI_REGISTRY/$CI_PROJECT_PATH/igt-debian containers:igt-debian-armhf: stage: containers image: docker:stable only: changes: - Dockerfile.debian-armhf - .gitlab-ci.yml services: - docker:dind variables: DOCKER_HOST: tcp://docker:2375 DOCKER_DRIVER: overlay2 script: - docker login -u gitlab-ci-token -p $CI_JOB_TOKEN $CI_REGISTRY - docker build -t $CI_REGISTRY/$CI_PROJECT_PATH/igt-debian-armhf -f Dockerfile.debian-armhf . - docker push $CI_REGISTRY/$CI_PROJECT_PATH/igt-debian-armhf containers:igt-debian-arm64: stage: containers image: docker:stable only: changes: - Dockerfile.debian-arm64 - .gitlab-ci.yml services: - docker:dind variables: DOCKER_HOST: tcp://docker:2375 DOCKER_DRIVER: overlay2 script: - docker login -u gitlab-ci-token -p $CI_JOB_TOKEN $CI_REGISTRY - docker build -t $CI_REGISTRY/$CI_PROJECT_PATH/igt-debian-arm64 -f Dockerfile.debian-arm64 . - docker push $CI_REGISTRY/$CI_PROJECT_PATH/igt-debian-arm64 containers:igt-debian-mips: stage: containers image: docker:stable only: changes: - Dockerfile.debian-mips - .gitlab-ci.yml services: - docker:dind variables: DOCKER_HOST: tcp://docker:2375 DOCKER_DRIVER: overlay2 script: - docker login -u gitlab-ci-token -p $CI_JOB_TOKEN $CI_REGISTRY - docker build -t $CI_REGISTRY/$CI_PROJECT_PATH/igt-debian-mips -f Dockerfile.debian-mips . - docker push $CI_REGISTRY/$CI_PROJECT_PATH/igt-debian-mips containers:igt-fedora: stage: containers image: docker:stable only: changes: - Dockerfile.fedora - .gitlab-ci.yml services: - docker:dind variables: DOCKER_HOST: tcp://docker:2375 DOCKER_DRIVER: overlay2 script: - docker login -u gitlab-ci-token -p $CI_JOB_TOKEN $CI_REGISTRY - docker build -t $CI_REGISTRY/$CI_PROJECT_PATH/igt-fedora -f Dockerfile.fedora . - docker push $CI_REGISTRY/$CI_PROJECT_PATH/igt-fedora