项目作者: plb-formation

项目描述 :
Plateforme complete de CI/CD avec Jenkins, SonarQube, Nexus, JMeter, Oracle 11g, Postgresql11 manage avec ansible
高级语言: Perl
项目地址: git://github.com/plb-formation/ci-cd.git
创建时间: 2019-04-01T10:07:50Z
项目社区:https://github.com/plb-formation/ci-cd

开源协议:GNU General Public License v3.0

下载


Plateforme CI/CD de type “bac a sable”.

(Note: Pour un environnement de production un systeme de PaaS comme Openshift ou Kubernetes est fortement conseille).

Ce repository GitHub contient des fichiers docker-compose YAML
qui permettent d’executer la mise en place d’une plateforme de containers
Docker qui simule un systeme de Continuous Integration et de Delivery.

Docker CI Tools

Cette plateforme est disponible seulement sous Linux.

Pre-requis pour Centos 7

  1. sudo yum -y update
  2. sudo yum -y install git
  3. git clone https://github.com/plb-formation/ci-cd.git
  4. cd ci-cd

Installation de la derniere version de Docker sous Centos

L’installation de Docker necessite certains packages.

  1. sudo yum install -y yum-utils \
  2. device-mapper-persistent-data \
  3. lvm2

Ensuite on met en place le repository Docker.

  1. sudo yum-config-manager \
  2. --add-repo \
  3. https://download.docker.com/linux/centos/docker-ce.repo

Installer la derniere version de Docker et de ses packages client et containerd.io

  1. sudo yum install docker-ce docker-ce-cli containerd.io

Lancer le daemon Docker

  1. sudo systemctl start docker

Placer un lien symbolique pour que le daemon Docker demarre automatiquement meme si le host est reboote.

  1. sudo systemctl enable docker

Installation de Docker compose

  1. sudo yum install docker-compose

Installation de Docker avec un script Ansible

Packages de pre-requis pour installer Ansible

  1. sudo yum -y install epel-release python-pip

Installation d’Ansible avec Python Pip pour obtenir la derniere version d’Ansible

  1. sudo pip install ansible

Lancement de la commande ansible-playbook

  1. ansible-playbook -i inventory setup-docker

Plateforme CI/CD

Lancement avec un docker-compose

Tapez la commande suivante pour installer et demarrer l’ensemble des containers de la plateforme de CI/CD

  1. docker-compose up -d

Lancement par script Ansible

UPDATE for Linux Users

Automatically

Please run docker-compose.yml.native-docker-fix.sh before executing docker-compose up.
This will fix the Docker binary PATH, see Issue 24.
This script patches the docker-compose.yml.

Manually

Please alter Line 23 in docker-compose.yml under jenkins / volumes from

  • /usr/local/bin/docker:/usr/bin/docker

to

  • /usr/bin/docker:/usr/bin/docker

This is because ‘/usr/bin/docker’ is the docker binary, see Issue 24.

Access Tools

With docker machine

Tool Link Credentials
Jenkins http://${docker-machine ip default}:18080/ no login required
SonarQube http://${docker-machine ip default}:19000/ admin/admin
Nexus http://${docker-machine ip default}:18081/nexus admin/admin123
GitLab http://${docker-machine ip default}/ root/5iveL!fe
Selenium Grid http://${docker-machine ip default}:4444/grid/console no login required
Conference App http://${docker-machine ip default}:48080/currentSessions no login required

With Docker Mac Native

Tool Link Credentials
Jenkins http://localhost:18080/ no login required
SonarQube http://localhost:19000/ admin/admin
Nexus http://localhost:18081/nexus admin/admin123
GitLab http://localhost root/5iveL!fe
Selenium Grid http://localhost:4444/grid/console no login required
Conference App http://localhost:48080/currentSessions no login required

Screenshots

Here is an overview of all tools:

  • GitLab is used for storing the Source Code
  • Jenkins contains build job and is triggered once projects in GitLab are updated
  • As part of the CI build, Jenkins triggers a static code analysis and the results are stored in SonarQube
  • The Maven build uses Nexus as a Proxy Repository for all 3rd party libs. The build artifacts are deployed to the Nexus Release Repository
  • The Selenium Grid contains Docker containers running Chrome and Firefox and is used for UI tests

Jenkins Jobs

There are several jobs preconfigured in Jenkins.
The Jobs cover the following tasks:

  • Continuous Integration Build with Maven
  • Unit Tests
  • Static Source Analysis results are stored in SonarQube
  • JaCoCo Test Coverage
  • Deployment to Nexus
  • Jenkins Job DSL examples
  • Selenium UI Test

Conference App Jobs

Conference App CI Job

SonarQube Dashboard

Jenkins Jobs

Nexus Repository

Nexus Proxy Repository

Selenium Grid

Selenium Grid

Testing Upgrades

In order to test new versions, I prefer starting out with a blank VirtualBox image.
That eliminates any side effects. Afterwards you can throw away the image.

  1. # Create new image
  2. docker-machine create --driver virtualbox --virtualbox-memory 6000 docker-ci-v1
  3. # Configure shell environment
  4. eval $(docker-machine env docker-ci-v1)