Skip to content
Snippets Groups Projects

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