Cree, pruebe e implemente una aplicación Flask REST API desde GitHub usando Jenkins Pipeline que se ejecuta en Docker

Hoy en día, incluso para pequeñas aplicaciones web o microservicios, necesitamos una forma más fácil y rápida de implementar aplicaciones que sea confiable y segura. Estas aplicaciones pueden ser simples, pero experimentan cambios rápidos debido a los requisitos comerciales; para manejar estos cambios, definitivamente necesitamos una canalización de CI/CD para la implementación.

Jenkins es una de esas herramientas que puede facilitarle la vida cuando desee crear, probar e implementar sobre la marcha. Este artículo le brindará la información completa o al menos la mayoría de las cosas que necesita para crear una canalización de CI/CD para implementar la aplicación Flask con Jenkins.

Requisito previo:

  • Estibador
  • Python3.6+
  • Git
  • Matraz

Esta es la lista de contenidos que cubriré para que esto funcione.

Visión general:

Realizaremos la operación que se detalla a continuación en este artículo:

  1. Compilación de la aplicación Flask (compilación local)
  2. Crear el archivo Jenkins
  3. Activando Jenkins en Docker
  4. Integrando el repositorio de GitHub a Jenkins
  5. Probando el disparador de canalización de Jenkins

1. Creación de la aplicación Flask (compilación local)

Primero, intentaremos compilar nuestra aplicación Flask localmente antes de enviarla a GitHub.

git clone https://github.com/Santhoshkumard11/Flask-Calculator-Beginner-Docker.git

Ejecute la aplicación Flask como se muestra a continuación (después de ingresar a Flask-Calculator-Beginner-Docker)

flask run
or
python app.py

la salida del código anterior

2. Crear el archivo Jenkins:

Crearemos una canalización de tres etapas , pero puede tener tantas como requiera su aplicación.

  • Etapa de compilación : aquí es donde descargamos el código de su repositorio de código , pero dado que ya hemos configurado GitHub como la fuente de la rama, Jenkins hará el trabajo de descargar el código o al menos en nuestro caso. Es diferente si tiene una aplicación React o Angular.
  • Etapa de prueba : ejecuta las pruebas unitarias para la aplicación Flask y genera los resultados utilizando xmlrunner , que será recogido por Jenkins.
  • Etapa de implementación : ejecute la aplicación Flask en nohup y agregue la salida a log.txt , pero utilizará Gunicorn o WSGI en la implementación real.

También tenemos una etapa posterior que realizará la limpieza o la notificación por correo electrónico del éxito o fracaso de la canalización.

Javascript

pipeline {
  agent any
  stages {
    stage('Build') {
      parallel {
        stage('Build') {
          steps {
            sh 'echo "building the repo"'
          }
        }
      }
    }
  
    stage('Test') {
      steps {
        sh 'python3 test_app.py'
        input(id: "Deploy Gate", message: "Deploy ${params.project_name}?", ok: 'Deploy')
      }
    }
  
    stage('Deploy')
    {
      steps {
        echo "deploying the application"
        sh "sudo nohup python3 app.py > log.txt 2>&1 &"
      }
    }
  }
  
  post {
        always {
            echo 'The pipeline completed'
            junit allowEmptyResults: true, testResults:'**/test_reports/*.xml'
        }
        success {                   
            echo "Flask Application Up and running!!"
        }
        failure {
            echo 'Build stage failed'
            error('Stopping early…')
        }
      }
}

3. Activar Jenkins en Docker:

Tire de la imagen de Docker desde Docker Hub

docker pull santhoshkdhana/jenkins-python3.9

Ahora es el momento de hacer girar el contenedor con el siguiente comando,

docker run --name myjenkins -p 8080:8080 -p 50000:50000 -p 5000:5000 -v /your/home:/var/jenkins_home -v /your/home/sock:/var/run/docker.sock jenkins-python3.9

Verifique si el contenedor se está ejecutando usando

docker container list -a

revisando el contenedor

Una vez que haya visto con éxito que el contenedor está en funcionamiento, instale los paquetes necesarios

docker exec myjenkins pip3 install flask flask_restful xmlrunner

Escriba localhost:8080 en su navegador favorito. Debería ver a Jenkins solicitando la contraseña o usar el siguiente comando para obtener la contraseña. Utilice la contraseña inicial de la línea de comandos para crear un usuario administrador

docker exec myjenkins  cat /var/jenkins_home/secrets/initialAdminPassword

Nota: asegúrese de que su daemon docker se esté ejecutando; de lo contrario, use service docker start para iniciar el daemon (Ubuntu/Debian)

Contraseña de Jenkins

4. Integrando el repositorio de GitHub a Jenkins:

  • Comience creando un nuevo elemento, asígnele el nombre Flask Jenkins Build (es su elección)
  • Seleccione el estilo de canalización de varias ramas y haga clic en Aceptar

  • Seleccione GitHub de fuentes de rama
  • Pegue https://github.com/Santhoshkumard11/Flask-Calculator-Beginner-Docker y haga clic en validar (debe agregar credenciales si no es un repositorio de acceso público)
  • Una vez que diga conectado, desplácese hacia abajo y haga clic en aplicar y guardar

5. Probar el disparador de canalización de Jenkins:

Ahora que ha integrado su repositorio de GitHub en Jenkins, a partir de ahora, cada vez que se comprometa con la rama qa, la canalización comenzará a ejecutarse.
Vaya a la página principal de Jenkins y haga clic en el nombre de la canalización que creó y luego en el nombre de la sucursal .

Para ejecutar esto manualmente, haga clic en Build Now desde la barra lateral a su izquierda.

Después de la etapa de prueba , deberá hacer clic manualmente en implementar para que se ejecute la etapa de implementación.

Haga clic en Open Blue Ocean para ver una nueva interfaz de usuario con las etapas de construcción.

Publicación traducida automáticamente

Artículo escrito por santhoshkumar8 y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *