gtk/.gitlab-ci
Matthias Clasen 45bb4dc80c ci: Add a macos build
Most of this is cribbed from glib.

We don't use COMMON_MESON_FLAGS here, since disabling
-Werror one subproject at a time is too painful for
all the promoted sub-sub-projects. This needs a better
solution in meson.

Since this is a full rebuild of the entire stack, limit
this to master and merge requests.
2021-01-03 21:34:04 -05:00
..
.lock ci: Add a build with asan 2020-07-09 19:43:06 -04:00
clang-format-diff.py ci: Add a style check pass 2020-02-11 14:47:22 +00:00
fedora-base.Dockerfile ci: Try to get everything building again 2020-09-30 23:43:03 -04:00
fedora-docs.Dockerfile ci: Try to get everything building again 2020-09-30 23:43:03 -04:00
fedora.Dockerfile ci: Try to get everything building again 2020-09-30 23:43:03 -04:00
flatpak-build.sh ci: publish demo apps to the Nightly repository 2020-11-13 20:38:09 +02:00
meson-html-report.py ci: Add the backend to the reports 2020-05-15 19:49:18 -04:00
meson-junit-report.py ci: Add the backend to the reports 2020-05-15 19:49:18 -04:00
README.md ci: Mention image layering in the README 2020-07-09 15:07:50 -04:00
run-docker.sh ci: Allow using "latest" as the image version 2020-05-17 00:32:22 +01:00
run-style-check-diff.sh ci: Create new origin for forks 2020-06-29 13:14:40 +01:00
run-tests.sh ci: Pass -norest to Xvfb 2020-08-04 11:59:32 -04:00
show-execution-environment.sh ci: Add a macos build 2021-01-03 21:34:04 -05:00
test-docker.sh ci: Build with profiler support 2020-01-21 18:20:05 -05:00
test-msys2.sh CI: Enable introspection again for the Windows build 2020-10-01 15:16:18 +02:00

GTK CI infrastructure

GTK uses different CI images depending on platform and jobs.

The CI images are Docker containers, generated either using docker or podman, and pushed to the GitLab container registry.

Each Docker image has a tag composed of two parts:

  • ${image}: the base image for a given platform, like "fedora" or "debian-stable"
  • ${number}: an incremental version number, or latest

See the container registry for the available images for each branch, as well as their available versions.

Checklist for Updating a CI image

  • Update the ${image}.Dockerfile file with the dependencies
  • Run ./run-docker.sh build --base ${image} --base-version ${number}
  • Run ./run-docker.sh push --base ${image} --base-version ${number} once the Docker image is built; you may need to log in by using docker login or podman login
  • Update the image keys in the .gitlab-ci.yml file with the new image tag
  • Open a merge request with your changes and let it run

Checklist for Adding a new CI image

  • Write a new ${image}.Dockerfile with the instructions to set up a build environment
  • Add the pip3 install meson incantation
  • Run ./run-docker.sh build --base ${image} --base-version ${number}
  • Run ./run-docker.sh push --base ${image} --base-version ${number}
  • Add the new job to .gitlab-ci.yml referencing the image
  • Open a merge request with your changes and let it run

Checklist for Adding a new dependency to a CI image

Our images are layered, and the base (called fedora-base) contains all the rpm payload. Therefore, adding a new dependency is a 2-step process:

  1. Build and upload fedora-base:$version+1
  2. Build and upload fedora:$version+1 based on fedora-base:version+1