- 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>
- 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