Crea pipeline para jenkins
Crea tu Pipeline en jenkins utilizando docker
Cuando uno esta comenzando en la integración continua seguramente fueras visto diferentes herramientas y te has dado de cuenta que jenkins es una de las opciones mas populares, pero viene la pregunta del millón como comenzar, te recomendaría que tengas el jenkins instalado en tu maquina, tener el proyecto en un repositorio git remoto y ademas tengas docker en tu maquina local.
Bueno creamos una nueva (Job)tarea en nuestro jenkins, le damos un nombre y seleccionamos la opción de multibranch Pipeline
Llena los datos de git.
Pon la ubicación del archivo Jenkinsfile y recuerda guardar, luego nos dirigimos al git y creamos nuestro ejemplo.
Jenkinsfile
Bueno Jenkinsfile es como por defecto deberías llamar a tu código o paso a paso de tu integración y ademas ese archivo se escribe en groovy, te debes crear una archivo son la siguiente estructura básica
Jenkinsfile (Declarative Pipeline)
dentro de la etiqueta stages se ponen diferentes etapas (stage) en las cuales podrías escribir código que ejecutas cada día ejemplo.
si compilas cada etapa se vera en un cuadro.
Para hacer un despliegue tenemos diversos problemas en los cuales no tenemos cierto lenguaje o programa que ejecuta cierta sentencia en el jenkins y falla el job , una de las buenas practicas es utilizar docker, podriamos utilizar imagenes que ya tengan lo que necesitamos ejemplo:
pipeline {
agent {
docker { image 'node:14-alpine' }
}
stages {
stage('Test') {
steps {
sh 'node --version'
}
}
}
}
resultado
[Pipeline] stage
[Pipeline] { (Test)
[Pipeline] sh
[guided-tour] Running shell script
+ node --version
v14.15.0
[Pipeline] }
[Pipeline] // stage
[Pipeline] }
dentro de la etiqueta sh('') se escribe el código que se ejecuta dentro del stage.
eso nos permitiría ser dinámicos y desplegar en diferentes jenkins solo como requisito tener docker instalado.
y si por alguna razón necesita ejecutar una función para que la imagen docker funcione o corra correctamente podrias utilizar withDockerContainer ejemplo:
stage('Deploy prod') {
when {
expression { params.action == 'create' && BRANCH_NAME == 'master' }
}
steps {
script {
loginDocker()
withDockerContainer(image: 'IMAGE_PRIVATE', args: '-u 0:0') {
env.AWS_DEFAULT_REGION = "${params.AWS_REGION}"
env.AWS_ACCESS_KEY_ID = "${KeyId}"
env.AWS_SECRET_ACCESS_KEY = "${AccessKey}"
env.AWS_SESSION_TOKEN = "${Token}"
sh 'sam --version'
sh ("ls -all ")
}
}
}
}
si necesitas seetear variables de entorno en withDockerContainer utilizas env.NAME_VARIBLE.
Buenas practicas
- Cada proyecto debe tener su Jenkinsfile
- Que los jobs sean multibranch Pipeline
- utilizar imágenes docker en cada stage.
Happy code .
Referencia: