Jenkins Pipeline es una herramienta poderosa cuando usa Jenkins para automatizar sus implementaciones. Las acciones flexibles y personalizadas divididas entre etapas son una buena razón para probar esta función.
Crear su propia imagen de Docker y cargarla en Docker Hub para mantener su repositorio actualizado es un buen ejemplo para comprender cómo Jenkins Pipelines puede mejorar su forma de trabajo.
requisitos previos
- Un servidor con Jenkins y Docker ejecutándose (el usuario de Jenkins debería poder ejecutar Docker).
- cuenta Github.
- Cuenta del concentrador Docker.
Configuración de su entorno
Instale el complemento Docker Pipelines en Jenkins:
Administrar Jenkins → Administrar complementos.
Busque Docker Pipelines, haga clic en Instalar sin reiniciar y espere hasta que termine.
Cargue su definición de Dockerfile en su repositorio de Github. Haga clic en el botón verde Clonar o Descargar y copie la URL, ya que la necesitará más adelante.
En Jenkins, debe crear una nueva credencial con los detalles de su cuenta de Docker Hub. Vaya a Credenciales → Global → Agregar credenciales y complete el formulario con su nombre de usuario y contraseña. Complete la identificación y las descripciones. Tenga en cuenta que si configura la ID, necesitará esta ID específica para referir esta credencial desde sus scripts. Aquí solo estamos usando dockerhub_id .
Creando tu primer Pipeline de Jenkins
Ahora, estamos listos para crear nuestro primer Pipeline . En Jenkins, vaya a Nuevo elemento → Canalización, escriba el nombre que desea para este proyecto de canalización y luego haga clic en Aceptar.
A continuación, puede omitir todas las opciones General y Build Trigger e ir directamente a la sección Pipeline . Aquí puede incluir una definición de Pipeline (generalmente llamada Jenkinsfile) o puede hacer referencia a una ubicación externa como Git o Subversion.
El Pipeline que estamos definiendo tiene cuatro etapas:
- La primera es obtener el Dockerfile de nuestro repositorio de Github,
- El segundo construirá la imagen usando
$BUILD_NUMBER
- El tercero es enviar la imagen creada a su registro de Docker Hub.
- Finalmente, limpiaremos la imagen construida previamente en el servidor local.
Tenga en cuenta que debe modificar el código con sus detalles específicos de Docker Hub y Github:
pipeline { environment { registry = "YourDockerhubAccount/YourRepository" registryCredential = 'dockerhub_id' dockerImage = '' } agent any stages { stage( 'Cloning our Git' ) { steps { git 'https://github.com/YourGithubAccount/YourGithubRepository.git' } } stage( 'Building our image' ) { steps{ script { dockerImage = docker.build registry + ": $BUILD_NUMBER " } } } stage( 'Deploy our image' ) { steps{ script { docker.withRegistry( '' , registryCredential ) { dockerImage.push() } } } } stage( 'Cleaning up' ) { steps{ sh "docker rmi $registry : $BUILD_NUMBER " } } } }
Ejecute su canalización y cree imágenes
Ahora estamos listos para ejecutar Pipeline y verificar la salida si hay un error presente en cualquier etapa durante la ejecución.
Vaya a su proyecto Pipeline en Jenkins y haga clic en Build Now para ejecutar manualmente. Debería obtener una salida secuencial de las diferentes etapas similar a esta:
Si todo está bien, puede buscar en su repositorio de Docker Hub una nueva imagen etiquetada con la versión de compilación de Jenkins que coincida con su registro de Docker Hub:
Este fue un ejemplo básico de cómo trabajar con Pipelines e integrar diferentes componentes de sus implementaciones. Hay posibilidades de crear numerosas integraciones complejas a través de Pipelines a medida que avanza.
Algunas ideas para llegar más lejos con Jenkins:
- Defina un webhook para ejecutar Pipeline cuando se envíe una confirmación a su repositorio de Github.
- Incluya varios contenedores en la misma tubería para mantener diferentes etapas (como backend y frontend) o diferentes entornos (dev/prod)
- Establece una notificación por correo electrónico/Telegram/Slack con el estado y/o salida de tu Pipeline.
Como puede ver, muchas opciones son fácilmente alcanzables. Solo sigue jugando y profundizando en Jenkins Pipelines Orchestration.
Sobre el autor: Sudip es un arquitecto de soluciones con más de 15 años de experiencia laboral y es el fundador de Javelynn . Le gusta compartir su conocimiento escribiendo para Hackernoon , DZone , Appfleet y muchos más, y aunque no está haciendo eso, debe estar pescando o jugando al ajedrez.
Publicado anteriormente en https://appfleet.com/ .