Recherche…


Script de pipeline Jenkins 2.0+

Les versions modernes de Jenkins (version 2.x) sont livrées avec un "plug-in de pipeline" qui peut être utilisé pour orchestrer des tâches complexes sans créer une multitude de tâches interconnectées, et vous permet de contrôler facilement la version de votre configuration.

Vous pouvez l'installer manuellement dans un travail de type "Pipeline" ou, si votre projet est hébergé sur Github, vous pouvez utiliser le "GitHub Organization Folder Plugin" pour configurer automatiquement les tâches pour vous.

Voici une configuration simple pour les sites Django qui nécessitent uniquement l'installation des modules python spécifiés sur le site.

#!/usr/bin/groovy

node {
  // If you are having issues with your project not getting updated, 
  // try uncommenting the following lines.
  //stage 'Checkout'
  //checkout scm
  //sh 'git submodule update --init --recursive'

  stage 'Update Python Modules'
  // Create a virtualenv in this folder, and install or upgrade packages
  // specified in requirements.txt; https://pip.readthedocs.io/en/1.1/requirements.html
  sh 'virtualenv env && source env/bin/activate && pip install --upgrade -r requirements.txt'
  
  stage 'Test'
  // Invoke Django's tests
  sh 'source env/bin/activate && python ./manage.py runtests'
}

Script de pipeline Jenkins 2.0+, conteneurs Docker

Voici un exemple de script de pipeline qui génère un conteneur Docker, puis exécute les tests à l'intérieur de celui-ci. Le point d'entrée est supposé être manage.py ou invoke / fabric avec une commande runtests disponible.

#!/usr/bin/groovy

node {
  stage 'Checkout'
  checkout scm
  sh 'git submodule update --init --recursive'

  imageName = 'mycontainer:build'
  remotes = [
    'dockerhub-account',
  ]

  stage 'Build'
  def djangoImage = docker.build imageName

  stage 'Run Tests'
  djangoImage.run('', 'runtests')

  stage 'Push'
  for (int i = 0; i < remotes.size(); i++) {
      sh "docker tag ${imageName} ${remotes[i]}/${imageName}"
      sh "docker push ${remotes[i]}/${imageName}"
   }
}


Modified text is an extract of the original Stack Overflow Documentation
Sous licence CC BY-SA 3.0
Non affilié à Stack Overflow