Buscar..


Jenkins 2.0+ Pipeline Script

Las versiones modernas de Jenkins (versión 2.x) vienen con un "Build Pipeline Plugin" que se puede usar para organizar tareas de CI complejas sin crear una multitud de trabajos interconectados, y le permite controlar fácilmente la configuración de compilación / compilación.

Puede instalarlo manualmente en un trabajo de tipo "Pipeline" o, si su proyecto está alojado en Github, puede usar el "Complemento de la carpeta de la organización de GitHub" para configurar trabajos automáticamente para usted.

Aquí hay una configuración simple para los sitios de Django que requieren que solo se instalen los módulos de python especificados del sitio.

#!/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 Containers

Aquí hay un ejemplo de un script de canalización que construye un contenedor Docker y luego ejecuta las pruebas dentro de él. El punto de entrada se supone que es ya sea manage.py o invoke / fabric con una runtests de comandos disponibles.

#!/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
Licenciado bajo CC BY-SA 3.0
No afiliado a Stack Overflow