2020-01-29 10:01:10 +00: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][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][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
|
2021-02-15 16:42:07 +00:00
|
|
|
- [ ] Run `./run-docker.sh build --base ${image} --version ${number}`
|
|
|
|
- [ ] Run `./run-docker.sh push --base ${image} --version ${number}`
|
2020-01-29 10:01:10 +00:00
|
|
|
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
|
2021-02-15 16:42:07 +00:00
|
|
|
- [ ] Run `./run-docker.sh build --base ${image} --version ${number}`
|
|
|
|
- [ ] Run `./run-docker.sh push --base ${image} --version ${number}`
|
2020-01-29 10:01:10 +00:00
|
|
|
- [ ] Add the new job to `.gitlab-ci.yml` referencing the image
|
|
|
|
- [ ] Open a merge request with your changes and let it run
|
|
|
|
|
2020-07-09 17:11:26 +00:00
|
|
|
### 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
|
|
|
|
1. [ ] Build and upload fedora:$version+1 based on fedora-base:version+1
|
|
|
|
|
2020-01-29 10:01:10 +00:00
|
|
|
[registry]: https://gitlab.gnome.org/GNOME/gtk/container_registry
|