forked from AuroraMiddleware/gtk
e69dc04a7f
We only need a C compiler and not the whole toolchain, and gst-plugins-bad was split into libraries and plugins. pkg-config -> pkgconf. This should speed the CI setup up a bit. |
||
---|---|---|
.. | ||
pages | ||
.lock | ||
clang-format-diff.py | ||
fedora.Dockerfile | ||
flatpak-build.sh | ||
meson-html-report.py | ||
meson-junit-report.py | ||
README.md | ||
run-docker.sh | ||
run-style-check-diff.sh | ||
run-tests.sh | ||
show-info-linux.sh | ||
show-info-osx.sh | ||
test-docker.sh | ||
test-msvc.bat | ||
test-msys2.sh |
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, orlatest
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} --version ${number}
- Run
./run-docker.sh push --base ${image} --version ${number}
once the Docker image is built; you may need to log in by usingdocker login
orpodman 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} --version ${number}
- Run
./run-docker.sh push --base ${image} --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:
- Build and upload fedora-base:$version+1
- Build and upload fedora:$version+1 based on fedora-base:version+1