Notes d'apprentissage Jenkins 18 : Récupération et promotion des artefacts Nexus

  1. Récupération des artefacts

1. Installation et configuration du plugin

Configuraton du plugin (dans le projet Jenkins)

2. Sélection de l'artefact correspondant

3. Mdoification du Jenkinsfile

// Ajout du code suivant
String urlArtifact = "${env.urlArtifact}"


// Téléchargement de l'artefact, nécessite un accès anonyme au dépôt
// Sinon, configurer l'authentification via shell ou ansible/salt
sh " wget ${urlArtifact} && ls "

// Utilisation avec utilisateur spécifique
// sh " wget --user=admin --password=Qwer@123 ${urlArtifact} && ls "

// Utilisation avec utilisateur sans afficher les identifiants
/* vim ~/.wgetrc
user=admin
password=Qwer@123
chmod 600 ~/.wgetrc

*/<br></br>

  1. Promotion des artefacts

1. Création du dépôt releases

2. Élaboration du Jenkinsfile et de la sharelibrary

nexux.groovy

def TeleverserNexus(){
    // Utilisation du plugin nexus
    nexusArtifactUploader artifacts: [[artifactId: "${idArtefact}", 
                                        classifier: '', 
                                        file: "${cheminFichier}", 
                                        type: "${typeEmpaquetage}"]], 
                            credentialsId: 'nexus-admin', 
                            groupId: "${idGroupe}", 
                            nexusUrl: '192.168.1.134:8081', 
                            nexusVersion: 'nexus3', 
                            protocol: 'http', 
                            repository: "${nomDepot}", 
                            version: "${versionPom}"
}



// Promotion d'artefact
def MettreAJourArtefact(typeMiseAJour, urlArtifact){

    // Stratégie de mise à jour
    if ("${typeMiseAJour}" == "snapshot -> release"){
        println("snapshot -> release")

        // Téléchargement de l'artefact original
        sh "  rm -fr misesajour && mkdir misesajour && cd misesajour && wget ${urlArtifact} && ls -l "

        // Extraction de l'artifactID 
        
        urlArtifact = urlArtifact -  "http://192.168.1.134:8081/repository/maven-hosted/"
        urlArtifact = urlArtifact.split("/").toList()
        
        println(urlArtifact.size())
        env.nomArchive = urlArtifact[-1] 
        env.versionPom = urlArtifact[-2].replace("SNAPSHOT","RELEASE")
        env.idArtefact = urlArtifact[-3]
        typeEmpaquetage = urlArtifact[-1]
        typeEmpaquetage = typeEmpaquetage.split("\\.").toList()[-1]
        env.typeEmpaquetage = typeEmpaquetage[-1]
        env.idGroupe = urlArtifact[0..-4].join(".")
        println("${idGroupe}##${idArtefact}##${versionPom}##${typeEmpaquetage}")
        env.nouveauNomArchive = "${idArtefact}-${versionPom}.${typeEmpaquetage}"
        
        // Renommage
        sh " cd misesajour && mv ${nomArchive} ${nouveauNomArchive} "
        
        // Téléversement de l'artefact
        env.nomDepot = "maven-releases"
        env.cheminFichier = "misesajour/${nouveauNomArchive}"
        TeleverserNexus()
    }
}

miseajour.jenkinsfile

#!groovy

@Library("jenkinslibrary@master") _

def nexux = new org.devops.nexux()

String typeMiseAJour = "${env.typeMiseAJour}"
String urlArtifact = "${env.urlArtifact}"


pipeline{
    any agent
    
    stages{
    
        stage("MettreAJourArtefact"){
            steps{
                script{
                   nexux.MettreAJourArtefact(typeMiseAJour, urlArtifact)
                
                }
            
            }
        
        }
    }
}

3. Création du pipeline Jenkins

Il est possible de copier directement demo-maven-service

Interface d'exécution

4. Résultat de l'exécution

Étiquettes: Jenkins nexus ci-cd artifacts Maven

Publié le 13 juillet à 20h18