Suche…


Jenkins 2.0+ Pipeline Script

Moderne Versionen von Jenkins (Version 2.x) verfügen über ein "Build Pipeline Plugin", mit dem komplexe CI-Tasks koordiniert werden können, ohne dass eine Vielzahl miteinander verbundener Jobs erstellt wird. Außerdem können Sie Ihre Build- / Test-Konfiguration auf einfache Weise versionieren.

Sie können dies manuell in einem Auftrag vom Typ "Pipeline" installieren. Wenn Ihr Projekt auf Github gehostet wird, können Sie das "GitHub Organization Folder Plugin" verwenden, um automatisch Jobs für Sie einzurichten.

Hier eine einfache Konfiguration für Django-Sites, für die nur die angegebenen Python-Module der Site installiert werden müssen.

#!/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'
}

Jenkins 2.0+ Pipeline Script, Docker Container

Hier ist ein Beispiel eines Pipeline-Skripts, das einen Docker-Container erstellt und die darin enthaltenen Tests ausführt. Der Einstiegspunkt wird angenommen, dass sie entweder manage.py oder invoke / fabric mit runtests verfügbaren Befehls.

#!/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
Lizenziert unter CC BY-SA 3.0
Nicht angeschlossen an Stack Overflow