CI/CD Jenkins
  • Introduction
  • Instalacion jenkins
  • Corriendo una tarea Basica
  • Integracion GitHub
  • Docker publish
  • Jenkins DSL
  • jenkins Pipeline
  • Integrando Notificaciones email, Slack
Powered by GitBook
On this page

Was this helpful?

Jenkins DSL

PreviousDocker publishNextjenkins Pipeline

Last updated 6 years ago

Was this helpful?

DSl ( Domain Specific Lenguage), es una caracteristica que podemos utilizar en Jenkins para poder automatizar las acciones de Jenkins a la hora de manejar un proyecto de software, esta es una ventaja en el desarrollo y aplicacion de la integracion y despligues continuos ya que el desarrollador puede controlar con un archivo las fnciones de la ejecución de las tareas para ser realizadas cuando se defina su ejecucion en la plataforma en este caso Jenkins, DSL describe las funciones usando Groovy como lenguaje para los scripts, para usar dicha caractristica, instlamos el plugin "Job DSL" esto lo hacemos desde el gestor de plugins de Jenkins

creamos una nueva tarea configuramos, configuramos un reporistorio que contenga el script p scripts con las parametrizaciones que deseamos que se ejecuten. Definido el repositorio, en el area de "ejecutar", añadimos un nuevo paso y selecionamos la opcion "Process Job DSLs"

Al aparecer la zona de configuración pasamos la referencia de ruta de la carpeta o script en el repositorio con las instruciones del Job que deseamos que se ejecute

codigo del job

job('NodeJS example') {
    scm {
        git('git://github.com/alphyon/docker-demo.git') {  node -> // is hudson.plugins.git.GitSCM
            node / gitConfigName('DSL User')
            node / gitConfigEmail('jenkins-dsl@newtech.academy')
        }
    }
    triggers {
        scm('H/5 * * * *')
    }
    wrappers {
        nodejs('nodejs') // this is the name of the NodeJS installation in 
                         // Manage Jenkins -> Configure Tools -> NodeJS Installations -> Name
    }
    steps {
        shell("npm install")
    }
}

Para aprobar un script, vamos a la pagian principal de Jenkins y selecionamos configuraciones y la opcion "In-process Script Approval"

Aprobamos el script que deseamos que se ejecute

Vamos a agregar un nuevo script para poder construir y publicar el contenedor, este sera el código del job

job('NodeJS Docker example') {
    scm {
        git('git://github.com/alphyon/docker-demo.git') {  node -> // is hudson.plugins.git.GitSCM
            node / gitConfigName('DSL User')
            node / gitConfigEmail('alphyon21@gmail.com')
        }
    }
    triggers {
        scm('H/5 * * * *')
    }
    wrappers {
        nodejs('nodejs') // this is the name of the NodeJS installation in 
                         // Manage Jenkins -> Configure Tools -> NodeJS Installations -> Name
    }
    steps {
        dockerBuildAndPublish {
            repositoryName('alphyon/docker-node-example')
            tag('${GIT_REVISION,length=9}')
            registryCredentials('dockerhub')
            forcePull(false)
            forceTag(false)
            createFingerprints(false)
            skipDecorate()
        }
    }
}

En la misma tarea solo agregamos la referencia del script

En el script se define la siguiente linea de codigo

registryCredentials('dockerhub')

Esto le dice a jenkins que debe de utilizar de su catalogo de credenciales las que esten identificadas con el id "dockerhub", y a estas credenciales le asignamos los datos de login del repositorio del docker hub

Guardamos y Ejecutamos la tarea, pero obtendremos una ejecucion fallida, esto ocurre por que los scripts deben de darseles permisos de ejecución

Vamos a la tarea y damos a la opción de construir, en este caso ya nuestra tarea se ejecuta de manera exitosa

igual que en el caso anterior aprobamos el script para que se ejecute de forma correcta