This project has been migrated to GNOME GitLab under World/gimp-ci. Refer to the documentation repository for better information. If you just want to build GIMP, then check out the GIMP development environment based on Docker. The Docker environment also allows you to run GIMP if you have Xorg display; instructions therein.
This is centralized documentation which helps to onboard a new maintainer or contributor to the GIMP CI system.
- Make configuration of the GIMP CI system transparent for developers and contributors.
- Provide a means for contributors of GIMP to easily provision a development environment for building GIMP.
- Make use of modern technologies and concepts such as infrastructure as code, continuous integration, and continuous delivery.
The above goals will be met when a contributor is able to:
- Fully provision a Jenkins build system for building GIMP.
- Fully provision a GIMP development environment for contributing to GIMP.
- Point of Contact: Sam Gleske
- Sponsors: flamingtext provides hardware for the build system and majority of bandwidth. The GNOME Foundation provides the HTTP load balancer.
- Currently, none of the automation scripts are being used to configure build.gimp.org. The automation scripts are being developed to replace it.
There is an HTTP load balancer in front of GIMP build server controlled by the GNOME infrastructure team. SSL is terminated by this load balancer.
On the back end, the Jenkins build system lives on a virtual machine provided by flamingtext. Host is CentOS 6 and the guest is Debian Testing. GIMP developers prefer to develop GIMP on Debian Testing so that is the OS of choice for the GIMP CI system.
Hardware specs:
- CPU: Intel(R) Core(TM) i7 CPU 870 @ 2.93GHz stepping 05 (6 cores available to guest)
- RAM: 8GB (4GB available to guest)
- Disk: 2x500GB HDD (150GB available to guest)
- Virtualization Layer: VMWare
- Network speed: Gigabit LAN; dual 100BaseT WAN.
watchdog is configured on the build system to monitor the health of Jenkins and repair it automatically.
Jenkins is installed via the jenkins
debian package.
- jenkins-os-packages will create a DEB package with exact version of Jenkins as well as exact version of all plugins.
- Ansible playbooks will be created to properly configure all of the different parts of Jenkins. Jenkins may be configured by a combination of Script Console Scripts and perhaps the Job DSL plugin.
- Reuse as much code as possible which is why use of Ansible roles is emphasized.
If you need to develop new infrastructure as code, then it should be broken out into Ansible roles and referenced by Ansible playbooks. See creating ansible roles.