CI Server

Free software and Open Source from University of Bern :: IML - Institute of Medical Education

📄 Source: https://git-repo.iml.unibe.ch/iml-open-source/imldeployment
📜 License: GNU GPL 3.0
📖 Docs: https://os-docs.iml.unibe.ch/imldeployment/


Description

CI node that checks out projects from git repositories and builds an deployable archive. The archives can be synched to multiple deployment targets e.g. puppet master or a protected software archive.

flowchart LR subgraph CI server CI(CI<br>deployment<br>web gui) --> |Build<br>package| PkgDir PkgDir[Package<br>dir] end PkgDir --> |rsync| Pkg1 PkgDir --> |rsync| Pkg2 PkgDir --> |rsync| Pkg3 Pkg1 Pkg1(CI package<br>server 1) --> |secure<br>download| DeployClient Pkg2(CI package<br>server N) Pkg3(Puppet master) DeployClient --> |installs| ApplicationA(Application A) DeployClient --> |installs| ApplicationB(Application B)

This project is related to

Features

  • checkout from git via SSH with multiple ssh keys (can be extended with a plugin)
  • build has hooks to customize build process
  • In our institute it builds projects written in
    • PHP
    • NodeJS - using NVM for custom Node versions
    • Ruby - using RVM for custom Ruby versions
  • sync built archives to deploy systems
  • trigger rollout via ssh command or AWX API call (can be extended with a plugin)
  • receives install status
  • sends messages (email, Slack)
  • API to start a build from somewhere, e.g. from a devops workplace or Gitlab server

Screenshots

The overview over all projects is the starting page after login. It shows all projects and which build is rolled out to which phase.

Project overview

The project overview for a single project:

Project overview