manuBarrionuevo / practic-pipeline-v1

trabajo practico diplomatura en DevOps con jenkins
0 stars 0 forks source link

Mejoras #1

Open roxsross opened 10 months ago

roxsross commented 10 months ago

primero: podrías utilizar la integración directa desde Jenkins por lo que no necesitarías clonar el repositorio

https://github.com/manuBarrionuevo/practic-pipeline-v1/blob/c3bf45510c8e9db0d61bbe98068e879597af5392/app/Jenkinsfile#L7

https://github.com/manuBarrionuevo/practic-pipeline-v1/blob/c3bf45510c8e9db0d61bbe98068e879597af5392/app/Jenkinsfile#L10

segundo: podrias usar dir en vez de usar cd $CARPETA/result con el dir te posicionas directamente en la carpeta https://www.jenkins.io/doc/pipeline/steps/workflow-basic-steps/#dir-change-current-directory

dir("folder") { sh "pwd" }

https://github.com/manuBarrionuevo/practic-pipeline-v1/blob/c3bf45510c8e9db0d61bbe98068e879597af5392/app/Jenkinsfile#L31

pipeline {
    agent any

    environment {
        REGISTRY = 'manuelbarrionuevo'
        DOCKER_HUB_LOGIN = credentials('docker')
    }

    stages {
        stage('Build') {
            parallel {
                stage('result') {
                    steps {
                        dir('app/result') {
                            script {
                                sh "docker build -t $REGISTRY/result:v1 ."
                            }
                        }
                    }
                }

                stage('vote') {
                    steps {
                        dir('app/vote') {
                            script {
                                sh "docker build -t $REGISTRY/vote:v1 ."
                            }
                        }
                    }
                }

                stage('worker') {
                    steps {
                        dir('app/worker') {
                            script {
                                sh "docker build -t $REGISTRY/worker:v1 ."
                            }
                        }
                    }
                }
            }
        }

        stage('Deploy') {
            steps {
                script {
                        sh "docker login --username=$DOCKER_HUB_LOGIN_USR --password=$DOCKER_HUB_LOGIN_PSW"
                        sh "docker push $REGISTRY/result:v1"
                        sh "docker push $REGISTRY/vote:v1"
                        sh "docker push $REGISTRY/worker:v1"
                }
            }
        }
    }
}

y Tercero automatizar la version de las imagenes, podria ser por ejemplo commit-env por ejemplo 678uytr:dev o usa algun script para sacar la version otra opcion el uso de changelog y lees la version de alli

por ejemplo https://keepachangelog.com/es-ES/1.0.0/

CHANGELOG.md

# Registro de Cambios (CHANGELOG)

## [1.0.0] - 2024-01-11
### Cambios
- Nueva característica: Agregada la funcionalidad A.
- Mejora: Optimizado el rendimiento en la función B.
- Corrección de errores: Solucionado un problema con C.
#!/bin/bash
changelog_file="CHANGELOG.md"
version_pattern="## \[[0-9]*\.[0-9]*\.[0-9]*\]"
version_line=$(grep -E "$version_pattern" "$changelog_file" | head -n 1)
version=$(echo "$version_line" | grep -oE "[0-9]*\.[0-9]*\.[0-9]*")
echo "Versión encontrada en el changelog: $version"

entonces puedes tener esa VERSION global para todas las imagenes.

roxsross commented 10 months ago

al final la solucion xD tiene muchas maneras jaja

manuBarrionuevo commented 10 months ago

perfecto Rox ahora me pongo a mejorarlo!