0
respostas

GERANDO VARIÁVEIS DE AMBIENTE COM UTILIZAÇÃO DO JENKINSFILE DE FORMA DECLARATIVA.

Bom dia, estou criando um arquivo Jenkinsfile que servirá de modelo base para qualquer projeto spring boot. No entanto estou tentando configurar para ele capturar as informações do pom.xml do projeto e assim utilizar essas informações para gerar uma imagem docker e atribuir essas variáveis nas informações da imagem (nome e tag). Como posso está fazendo isso ? Esse script atualmente está publicando a imagem no registry da AWS.

//def MAVEN_POM_ARTIFACT_ID = readMavenPom().getArtifactId()
//def MAVEN_POM_VERSION = readMavenPom().getVersion()

pipeline {
    agent any

    tools {
        jdk 'Java 11'
        maven 'Maven 3.8'
    }

    environment {
        AWS_ACCOUNT_ID="Id"
        AWS_DEFAULT_REGION="eu-west-3"
        AWS_REPOSITORY_URI="${AWS_ACCOUNT_ID}.dkr.ecr.${AWS_DEFAULT_REGION}.amazonaws.com/${AWS_IMAGE_NAME}"
        AWS_IMAGE_NAME="base"
        AWS_IMAGE_TAG="1.0.1"

        GIT_CLASS='GitSCM'
        GIT_BRANCH_NAME='*/master'
        GIT_CREDENTIAL_ID='GITLAB'
        GIT_CREDENTIAL_URL='repositorio-remot-no-gitlab'

        JENKINS_JOB_NAME="${env.JOB_NAME}"
        JENKINS_JOB_NUMBER="${env.BUILD_NUMBER}"
        JENKINS_JOB_TAG="${env.BUILD_TAG}"
        JENKINS_JOB_URL="${env.BUILD_URL}"

        SLACK_CHANNEL='#notification'
        SLACK_COLOR_DEFAULT='#FFFF00'
        SLACK_COLOR_SUCCESS='#FFFF00'
        SLACK_COLOR_FAILURE='#FFFF00'
        SLACK_MESSAGE_DEFAULT="O JOB ${JENKINS_JOB_NAME} COM NÚMERO [${JENKINS_JOB_NUMBER}] FOI INICIALIZADO EM (${JENKINS_JOB_URL})"
        SLACK_MESSAGE_SUCCESS="O JOB ${JENKINS_JOB_NAME} COM NÚMERO [${JENKINS_JOB_NUMBER}] GEROU O ARTEFATO COM SUCESSO EM (${JENKINS_JOB_URL})"
        SLACK_MESSAGE_FAILURE="O JOB ${JENKINS_JOB_NAME} COM NÚMERO [${JENKINS_JOB_NUMBER}] NÃO GEROU O ARTEFATO COM SUCESSO EM (${JENKINS_JOB_URL})"

    }

    stages {
        stage('INITIALIZE') {
            steps{
                echo "NOME: $AWS_IMAGE_NAME"
                echo "VERSÃO: $AWS_IMAGE_TAG"
                echo "ENDEREÇO DO REPOSITÓRIO: $AWS_REPOSITORY_URI"
                echo "--------------------------------------------------------------------------------------------------"
                echo "NOME DO JOB: $JENKINS_JOB_NAME"
                echo "NÚMERO DO JOB: $JENKINS_JOB_NUMBER"
                echo "TAG DE IDENTIFICAÇÃO: $JENKINS_JOB_TAG"
                echo "ENDEREÇO DO JOB: $JENKINS_JOB_URL"
            }
        }



        stage('CLONING REPOSITORY') {
            steps {
                checkout([
                    $class: 'GitSCM',
                    branches: [
                        [
                            name: '*/master'
                        ]
                    ],
                    doGenerateSubmoduleConfigurations: false,
                    extensions: [],
                    submoduleCfg: [],
                    userRemoteConfigs: [
                        [
                            credentialsId: 'GITLAB',
                            url: 'repositorio-remoto'
                        ]
                    ]
                ])
            }
        }

        stage('BUILDING ARTIFACT') {
            steps{
                withMaven() {
                    sh "mvn clean package -DskipTests"
                }
            }
        }

        stage('BUILDING DOCKER IMAGE') {
            steps {
                script {
                    dockerImage = docker.build "${AWS_IMAGE_NAME}:${AWS_IMAGE_TAG}"
                }
            }
        }

        stage('LOGIN IN AWS CONSOLE') {
            steps {
                script {
                    sh "aws ecr get-login-password --region ${AWS_DEFAULT_REGION} | docker login --username AWS --password-stdin ${AWS_ACCOUNT_ID}.dkr.ecr.${AWS_DEFAULT_REGION}.amazonaws.com"
                }
            }
        }

        stage('PUSHING IMAGE TO AWS ECR') {
            steps {
                script {
                    sh "docker tag ${AWS_IMAGE_NAME}:${AWS_IMAGE_TAG} ${AWS_REPOSITORY_URI}:$AWS_IMAGE_TAG"
                    sh "docker push ${AWS_ACCOUNT_ID}.dkr.ecr.${AWS_DEFAULT_REGION}.amazonaws.com/${AWS_IMAGE_NAME}:${AWS_IMAGE_TAG}"
                }
            }
        }
    }
}