Skip to content

Instantly share code, notes, and snippets.

@yogeek
Last active November 12, 2017 22:15
Show Gist options
  • Save yogeek/06f9ca3ce3d9cf33e002b8a10641908d to your computer and use it in GitHub Desktop.
Save yogeek/06f9ca3ce3d9cf33e002b8a10641908d to your computer and use it in GitHub Desktop.
Jenkins
- Démarrer un serveur Jenkins avec Docker :
docker run -d -p 8888:8080 -p 50000:50000 -v jenkins_home:/var/jenkins_home jenkinsci/blueocean:latest
docker run -d -p 8888:8080 -p 50000:50000 -v jenkins_home:/var/jenkins_home -v /var/run/docker.sock:/var/run/docker.sock --privileged jenkinsci/blueocean:latest
Note : Les données seront persistées dans le volume "jenkins_home"
○ Accéder à http://localhost:8888 et entrer le mot de passe admin indiqué dans les logs de démarrage du serveur
○ Sélectionner les plugins souhaités
- Configurer les accès dans le menu "Credentials" de l'interface de Jenkins :
- Créer un magasin
- Ajouter un credential de type "Username with private key"
§ Username = Phabricator username
§ Private key > Enter directly
□ copier la clé privée du l'utilisateur (habituellement située dans ~/.ssh/id_rsa ou un fichier équivalent sur une machine ayant déjà accéder à GIT)
□ Cette clé privée doit correspondre à une des clés publiques que l'utilisateur a ajouté dans Phabricator
- Tester :
- New Item > Free Style Project
§ Name = TestProject
§ Source management
□ Git : choisir l'URL du repository et le credential précédemment créé
§ Build step
□ Ajouter un step (ex: choisir "script shell" et renseigner le contenu du script "echo Mon premier job Jenkins !")
§ Save
- Lancer un build sur le job "TestProject"
******************************************
Utiliser "DooD" 'Docker outside of Docker" at Jenkins Docker Slaves Plugin to execute jobs inside Docker container slaves :
******************************************
=========================================
FROM jenkins/jenkins:lts
USER root
#TODO the group ID for docker group on my docker-machine is 100
# therefore I can only run docker commands if I have same group id inside.
# Otherwise the socket file is not accessible.
RUN groupdel users && groupadd -g 100 docker && usermod -a -G docker jenkins
USER jenkins
==========================================
docker build -t jenkinsdood .
docker run --rm -it \
-v /var/run/docker.sock:/var/run/docker.sock \
-v $(which docker):/usr/bin/docker \
-v jenkins-stuff:/var/jenkins_home \
-v $(pwd):/var/jenkins_data \
-p 8080:8080 -p 50000:50000 \
jenkinsdood
Installer Docker Slaves Plugin,le configurer pour utiliser l'image "jenkinsci/slave" pour les slaves
Créer un Job :
- Cocher "Run the build inside Docker containers"
- Main build container "Docker image"
- Choose a Docker image (e.g. python)
- Configurer un script de biuld. e.g :
echo "In a docker container !"
python -V
Launch job ! :D
Créer une pipeline supportant Docker :
pipeline {
agent {
docker { image 'node:7-alpine' }
}
stages {
stage('Test') {
steps {
sh 'node --version'
}
}
}
}
#####################################
Get plugins list from existing server
#####################################
JENKINS_HOST=username:password@myhost.com:port
curl -sSL "http://$JENKINS_HOST/pluginManager/api/xml?depth=1&xpath=/*/*/shortName|/*/*/version&wrapper=plugins" | perl -pe 's/.*?<shortName>([\w-]+).*?<version>([^<]+)()(<\/\w+>)+/\1 \2\n/g'|sed 's/ /:/'
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment