Giter Club home page Giter Club logo

tp-docker-jenkins's Introduction

Docker-Jenkins-project

📖 description

Sample PHP Web Site Docker Jenkins

Objectif : Faire fonctionner le site www.samplephpwebsite.com via un Docker Compose et des Dockerfile

  • Créer une configuration Jenkins (scriptée en groovy/Job DSL ou Pipeline) afin de packager automatiquement l'application dans une image Docker à toutes les heures

  • Créer un script de testing (avec PHPUnit, Atoum ou tout autre framework de testing PHP) dans le but de vérifier que le site fonctionne correctement en testant le retour attendu de plusieurs fonctions utilisées et développées pour le site.

  • Faire 1 version par branche git (3 versions successives à faire fonctionner : v1, v2, v3), penser aux tags des images Docker (latest, version, etc...)

Eléments fournis :

Rendu attendu : Un repository git qui contiendra 3 branches, une pour chacune des versions du site dans lequel seront les sources du site fournies et non altérées et les différents fichiers de configuration nécessaires selon la liste suivante :

  • Documentation propre, claire et détaillée indiquant la marche à suivre (la plus simple possible bien sûr) pour lancer et tester le projet.
  • Fichier Docker Compose
  • Fichiers Dockerfile
  • Fichiers de configuration des différents outils utilisés si nécessaire
  • Scripts Job DSL / Pipeline
  • Script shell "start.sh" contenant la liste des commandes nécessaires à la compilation et au lancement du service. Si nécessaire mettre une pause entre chaque version pour permettre de tester dans un navigateur le bon fonctionnement de la version (commande shell "read -p "Press any key to continue... " -n1 -s" pour faire une pause)

Procédure de test : Lancement du script "start.sh" et test via un navigateur

Bonus :

  • Ajout d'étapes supplémentaires dans les jobs Jenkins, comme par exemple : hook git pour le déclenchement d'une build à chaque commit, linter, code quality (sonarqube), ... (cette liste n'est pas exhaustive et vous pouvez rajouter d'autres types de tâches selon vos envies/idées)
  • Documentation en MarkDown
  • Intégration de Docker Swarm dans Docker Compose

💾 languages

  • php

🎏 branch

🔨 builds

avec Docker

selectioner la branch lancer le script "start.sh" avec les droits docker

avec Jenkins

Lancer un container Jenkins lier au binaires du docker.

docker run -p 8080:8080 -v /var/run/docker.sock:/var/run/docker.sock -v /var/run/docker.sock:/var/run/docker.sock --name jenkins jenkins/jenkins:lts

Dans le container Jenkins installer Docker client pour pouvoir realiser du Docker in Docker.

docker exec -it -u root jenkins bash

apt-get update && \
apt-get -y install apt-transport-https \
     ca-certificates \
     curl \
     gnupg2 \
     software-properties-common && \
curl -fsSL https://download.docker.com/linux/$(. /etc/os-release; echo "$ID")/gpg > /tmp/dkey; apt-key add /tmp/dkey && \
add-apt-repository \
   "deb [arch=amd64] https://download.docker.com/linux/$(. /etc/os-release; echo "$ID") \
   $(lsb_release -cs) \
   stable" && \
apt-get update && \
apt-get -y install docker-ce
chown root:jenkins /run/docker.sock # autorisations docker a jenkins

dans jenkins, créer un nouveau job sur lequelle sera present la pipeline. Dans la configuration de la pipeline preciser le lien du repo git et la branch.

📲 Publication

📦 dependencies

  • Docker
  • jenkins
  • nginx
  • php - phpunit

Show your support

Give a ⭐ star if this project helped you !

License

Mozilla Public License 2.0

tp-docker-jenkins's People

Contributors

gamegine avatar

Watchers

 avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.