[igt-dev] [PATCH i-g-t] Add GitLab's CI/CD configuration

Arkadiusz Hiler arkadiusz.hiler at intel.com
Mon Oct 22 09:58:15 UTC 2018


On Mon, Oct 22, 2018 at 11:22:50AM +0200, Daniel Vetter wrote:
> On Mon, Oct 22, 2018 at 11:42:03AM +0300, Arkadiusz Hiler wrote:
> > The CI/CD pieline is configured the following way:
> >  1. Build docker images and add them to repo's registry (manual step for
> >     now, automation needs GitLab to be updated).
> >  2. Build igt with meson on Debian and Feodra.
> >  3. Run `ninja tests` on Fedora.
> >  4. Build and publish docs as an artifact, for GitLab Pages.
> > 
> > Cc: Petri Latvala <petri.latvala at intel.com>
> > Cc: Daniel Vetter <daniel at ffwll.ch>
> > Signed-off-by: Arkadiusz Hiler <arkadiusz.hiler at intel.com>
> > ---
> >  .gitlab-ci.yml    | 69 +++++++++++++++++++++++++++++++++++++++++++++++
> >  Dockerfile.debian | 28 +++++++++++++++++++
> >  Dockerfile.fedora | 24 +++++++++++++++++
> >  3 files changed, 121 insertions(+)
> >  create mode 100644 .gitlab-ci.yml
> >  create mode 100644 Dockerfile.debian
> >  create mode 100644 Dockerfile.fedora
> > 
> > diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml
> > new file mode 100644
> > index 00000000..0f3422a0
> > --- /dev/null
> > +++ b/.gitlab-ci.yml
> > @@ -0,0 +1,69 @@
> > +image: registry.freedesktop.org/drm/igt-gpu-tools/igt-fedora:latest
> > +
> > +stages:
> > +  - containers
> > +  - build
> > +  - test
> > +  - deploy
> > +
> > +build:tests-fedora:
> > +  stage: build
> > +  script:
> > +    - meson build
> > +    - ninja -C build
> > +  artifacts:
> > +    paths:
> > +      - build
> > +
> > +build:tests-debian:
> > +  image: registry.freedesktop.org/drm/igt-gpu-tools/igt-debian:latest
> > +  stage: build
> > +  script:
> > +    - meson build
> > +    - ninja -C build
> > +
> > +ninja:test:
> > +  stage: test
> > +  script:
> > +    - ninja -C build test
> > +
> > +pages:
> > +  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:igt-debian:
> > +  stage: containers
> > +  when: manual
> > +  image: docker:stable
> > +  services:
> > +    - docker:dind
> > +  variables:
> > +    DOCKER_HOST: tcp://docker:2375
> > +    DOCKER_DRIVER: overlay2
> > +  script:
> > +    - docker login -u gitlab-ci-token -p $CI_JOB_TOKEN registry.freedesktop.org
> > +    - docker login -u gitlab-ci-token -p $CI_JOB_TOKEN registry.freedesktop.org
> > +    - docker build -t registry.freedesktop.org/drm/igt-gpu-tools/igt-debian -f Dockerfile.debian .
> > +    - docker push registry.freedesktop.org/drm/igt-gpu-tools/igt-debian
> > +
> > +containers:igt-fedora:
> > +  stage: containers
> > +  when: manual
> 
> How do you trigger this? Is there some button on the UI?

Yep. Once pipeline get triggered (either manually, through the API or by
push) those jobs are having pause symbol as their status icon. By
clicking on them you can make them run. I haven't checked how it looks
from the API though.

This should not be the case for too long, as GitLab 11.4 is already out,
we just have to wait for FDO to catch up.

https://gitlab.com/gitlab-org/gitlab-ce/issues/19232

> Anyway, looks good enough to get us started.
> 
> Reviewed-by: Daniel Vetter <daniel.vetter at ffwll.ch>
> 
> Bits we could add:
> - debian stable build (atm only autotools)

I am not very keen on doing anything around autotools, and providing
more cues that we are going to support it in any way.

> - build with the oldest meson we still claim to support (would need to git
>   clone&install it in the docker image). Somewhat relevant since on oldest
>   supported meson the docs building is different.

This would require us to have probably another docker image dedicated to
do that, as doing dep managment in the actual build is both annoying
and costs a lot of time.

> - Petri's idea to have the equivalent of an allyesconfig build

Yep. I was also thinking about doing some combinatorial build checks on
IGT, but Petri's suggestion is lower hanging fruit and can be
incorporated almost immediately.

> Cheers, Daniel
> 
> > +  image: docker:stable
> > +  services:
> > +    - docker:dind
> > +  variables:
> > +    DOCKER_HOST: tcp://docker:2375
> > +    DOCKER_DRIVER: overlay2
> > +  script:
> > +    - docker login -u gitlab-ci-token -p $CI_JOB_TOKEN registry.freedesktop.org
> > +    - docker login -u gitlab-ci-token -p $CI_JOB_TOKEN registry.freedesktop.org
> > +    - docker build -t registry.freedesktop.org/drm/igt-gpu-tools/igt-fedora -f Dockerfile.fedora .
> > +    - docker push registry.freedesktop.org/drm/igt-gpu-tools/igt-fedora
> > diff --git a/Dockerfile.debian b/Dockerfile.debian
> > new file mode 100644
> > index 00000000..a9f93957
> > --- /dev/null
> > +++ b/Dockerfile.debian
> > @@ -0,0 +1,28 @@
> > +FROM debian:stretch-backports
> > +
> > +RUN apt-get update
> > +RUN apt-get install -y \
> > +			gcc \
> > +			flex \
> > +			bison \
> > +			pkg-config \
> > +			libpciaccess-dev \
> > +			libkmod-dev \
> > +			libprocps-dev \
> > +			libunwind-dev \
> > +			libdw-dev \
> > +			zlib1g-dev \
> > +			liblzma-dev \
> > +			libssl-dev \
> > +			libcairo-dev \
> > +			libudev-dev \
> > +			libgsl-dev \
> > +			libasound2-dev \
> > +			libxmlrpc-core-c3-dev \
> > +			libjson-c-dev \
> > +			libcurl4-openssl-dev
> > +
> > +RUN apt-get install -t stretch-backports -y \
> > +					meson \
> > +					libdrm-dev \
> > +					libdrm-intel1
> > diff --git a/Dockerfile.fedora b/Dockerfile.fedora
> > new file mode 100644
> > index 00000000..58efa817
> > --- /dev/null
> > +++ b/Dockerfile.fedora
> > @@ -0,0 +1,24 @@
> > +FROM fedora:28
> > +
> > +RUN dnf install -y gcc \
> > +		flex \
> > +		meson \
> > +		bison  \
> > +		json-c \
> > +		gtk-doc \
> > +		xdotool \
> > +		gsl-devel \
> > +		kmod-devel \
> > +		glib2-devel \
> > +		cairo-devel \
> > +		procps-devel \
> > +		pixman-devel \
> > +		libdrm-devel \
> > +		openssl-devel \
> > +		libudev-devel \
> > +		xmlrpc-c-devel \
> > +		elfutils-devel \
> > +		libunwind-devel \
> > +		python-docutils \
> > +		libpciaccess-devel \
> > +		alsa-lib-devel
> > -- 
> > 2.17.2
> > 
> 
> -- 
> Daniel Vetter
> Software Engineer, Intel Corporation
> http://blog.ffwll.ch


More information about the igt-dev mailing list