Django                
            Integrazione continua con Jenkins
        
        
            
    Ricerca…
Script Pipeline di Jenkins 2.0+
Le versioni moderne di Jenkins (versione 2.x) sono dotate di un "Build Pipeline Plugin" che può essere utilizzato per orchestrare attività CI complesse senza creare una moltitudine di lavori interconnessi e consentire di controllare facilmente la configurazione di build / test.
È possibile installarlo manualmente in un lavoro di tipo "Pipeline" o, se il progetto è ospitato su Github, è possibile utilizzare il "Plugin di cartelle dell'organizzazione GitHub" per impostare automaticamente i lavori per conto dell'utente.
Ecco una semplice configurazione per i siti Django che richiedono l'installazione solo dei moduli python specificati del sito.
#!/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 Pipeline Jenkins 2.0+, contenitori Docker
 Ecco un esempio di uno script della pipeline che crea un contenitore Docker, quindi esegue i test al suo interno. Si presuppone che il punto di accesso sia manage.py o invoke / fabric con un comando runtests disponibile. 
#!/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}"
   }
}