<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="fr">
	<id>https://wiki.jordan-lenuff.com/index.php?action=history&amp;feed=atom&amp;title=Outillage%2FJenkins%2FScripts%2FD%C3%A9ploiement_d%27un_livrable_depuis_Nexus</id>
	<title>Outillage/Jenkins/Scripts/Déploiement d'un livrable depuis Nexus - Historique des versions</title>
	<link rel="self" type="application/atom+xml" href="https://wiki.jordan-lenuff.com/index.php?action=history&amp;feed=atom&amp;title=Outillage%2FJenkins%2FScripts%2FD%C3%A9ploiement_d%27un_livrable_depuis_Nexus"/>
	<link rel="alternate" type="text/html" href="https://wiki.jordan-lenuff.com/index.php?title=Outillage/Jenkins/Scripts/D%C3%A9ploiement_d%27un_livrable_depuis_Nexus&amp;action=history"/>
	<updated>2026-04-23T17:28:54Z</updated>
	<subtitle>Historique des révisions pour cette page sur le wiki</subtitle>
	<generator>MediaWiki 1.34.0</generator>
	<entry>
		<id>https://wiki.jordan-lenuff.com/index.php?title=Outillage/Jenkins/Scripts/D%C3%A9ploiement_d%27un_livrable_depuis_Nexus&amp;diff=906&amp;oldid=prev</id>
		<title>Jordan : Page créée avec « ==Présentation== Cette page a pour but de partager un script rédigé pour déployer un livrable au format zip depuis un serveur Nexus vers un serveur web.  ==Script== &lt;s… »</title>
		<link rel="alternate" type="text/html" href="https://wiki.jordan-lenuff.com/index.php?title=Outillage/Jenkins/Scripts/D%C3%A9ploiement_d%27un_livrable_depuis_Nexus&amp;diff=906&amp;oldid=prev"/>
		<updated>2021-04-23T16:12:17Z</updated>

		<summary type="html">&lt;p&gt;Page créée avec « ==Présentation== Cette page a pour but de partager un script rédigé pour déployer un livrable au format zip depuis un serveur Nexus vers un serveur web.  ==Script== &amp;lt;s… »&lt;/p&gt;
&lt;p&gt;&lt;b&gt;Nouvelle page&lt;/b&gt;&lt;/p&gt;&lt;div&gt;==Présentation==&lt;br /&gt;
Cette page a pour but de partager un script rédigé pour déployer un livrable au format zip depuis un serveur Nexus vers un serveur web.&lt;br /&gt;
&lt;br /&gt;
==Script==&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;groovy&amp;quot;&amp;gt;&lt;br /&gt;
def instances = [&lt;br /&gt;
    PREPROD: [&lt;br /&gt;
        MyCompany1: [&lt;br /&gt;
            SERVER: 'mydevserver1',&lt;br /&gt;
            DIRECTORY: '/data/www/PREPROD/MyApp1',&lt;br /&gt;
        ],&lt;br /&gt;
        MyCompany2: [&lt;br /&gt;
            SERVER: 'mydevserver2',&lt;br /&gt;
            DIRECTORY: '/data/www/PREPROD/MyApp2',&lt;br /&gt;
        ],&lt;br /&gt;
        MyCompany3: [&lt;br /&gt;
            SERVER: 'mydevserver1',&lt;br /&gt;
            DIRECTORY: '/data/www/PREPROD/MyApp3',&lt;br /&gt;
        ],&lt;br /&gt;
        MyCompany4: [&lt;br /&gt;
            SERVER: 'mydevserver2',&lt;br /&gt;
            DIRECTORY: '/data/www/PREPROD/MyApp4',&lt;br /&gt;
        ],&lt;br /&gt;
    ],&lt;br /&gt;
    PROD: [&lt;br /&gt;
        MyCompany1: [&lt;br /&gt;
            SERVER: 'myprodserver1',&lt;br /&gt;
            DIRECTORY: '/data/www/PROD/MyApp1',&lt;br /&gt;
        ],&lt;br /&gt;
        MyCompany2: [&lt;br /&gt;
            SERVER: 'myprodserver2',&lt;br /&gt;
            DIRECTORY: '/data/www/PROD/MyApp2',&lt;br /&gt;
        ],&lt;br /&gt;
        MyCompany3: [&lt;br /&gt;
            SERVER: 'myprodserver1',&lt;br /&gt;
            DIRECTORY: '/data/www/PROD/MyApp3',&lt;br /&gt;
        ],&lt;br /&gt;
        MyCompany4: [&lt;br /&gt;
            SERVER: 'myprodserver2',&lt;br /&gt;
            DIRECTORY: '/data/www/PROD/MyApp4',&lt;br /&gt;
        ],&lt;br /&gt;
    ],&lt;br /&gt;
]&lt;br /&gt;
&lt;br /&gt;
def versions_count_to_keep = 2&lt;br /&gt;
&lt;br /&gt;
def sshUser = &amp;quot;www&amp;quot;&lt;br /&gt;
&lt;br /&gt;
def filenameTab = &amp;quot;${NexusReleaseUrl}&amp;quot;.split('/')&lt;br /&gt;
def packageFilename = filenameTab[ filenameTab.size() - 1 ]&lt;br /&gt;
&lt;br /&gt;
def packageExtension = packageFilename[packageFilename.lastIndexOf('.')..-1]&lt;br /&gt;
def packageName = packageFilename.take(packageFilename.lastIndexOf('.'))&lt;br /&gt;
&lt;br /&gt;
def appNameTab = packageFilename.split('-')&lt;br /&gt;
def version = appNameTab[ appNameTab.size() - 1 ].replace(packageExtension,&amp;quot;&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
currentBuild.displayName = &amp;quot;${BUILD_NUMBER} Déploiement GCA ${version} ${Phase}, société(s) ${Company}&amp;quot;&lt;br /&gt;
&lt;br /&gt;
node {&lt;br /&gt;
    try {&lt;br /&gt;
        stage('Définition des variables') {&lt;br /&gt;
&lt;br /&gt;
            echo &amp;quot;Liste des sociétés sélectionnées :&amp;quot;&lt;br /&gt;
			Company.split(',').each { company -&amp;gt;&lt;br /&gt;
				println &amp;quot;${company}&amp;quot;&lt;br /&gt;
			}&lt;br /&gt;
			echo &amp;quot;Liste des instances concernées :&amp;quot;&lt;br /&gt;
			Company.split(',').each { company -&amp;gt;&lt;br /&gt;
				def server = instances.&amp;quot;${Phase}&amp;quot;.&amp;quot;${company}&amp;quot;.SERVER&lt;br /&gt;
				def appDirectory = instances.&amp;quot;${Phase}&amp;quot;.&amp;quot;${company}&amp;quot;.DIRECTORY&lt;br /&gt;
				echo &amp;quot;Serveur '${server}', dossier '${appDirectory}'&amp;quot;&lt;br /&gt;
			}&lt;br /&gt;
        }&lt;br /&gt;
&lt;br /&gt;
        stage('Récupération du package') {&lt;br /&gt;
            withCredentials([&lt;br /&gt;
                usernamePassword(&lt;br /&gt;
                    credentialsId: 'nexus_admin', &lt;br /&gt;
                    usernameVariable: 'nexusUser', &lt;br /&gt;
                    passwordVariable: 'nexusPass'&lt;br /&gt;
                )&lt;br /&gt;
            ]) {&lt;br /&gt;
    			echo &amp;quot;URL du package à récupérer : ${NexusReleaseUrl}&amp;quot;&lt;br /&gt;
                sh ('wget --user=$nexusUser --password=$nexusPass -q $NexusReleaseUrl')&lt;br /&gt;
            }&lt;br /&gt;
        }&lt;br /&gt;
&lt;br /&gt;
		Company.split(',').each { company -&amp;gt;&lt;br /&gt;
			stage(&amp;quot;Société ${company}&amp;quot;) {&lt;br /&gt;
    			println &amp;quot;${company}&amp;quot;&lt;br /&gt;
    			&lt;br /&gt;
                def server = instances.&amp;quot;${Phase}&amp;quot;.&amp;quot;${company}&amp;quot;.SERVER&lt;br /&gt;
				def appDirectory = instances.&amp;quot;${Phase}&amp;quot;.&amp;quot;${company}&amp;quot;.DIRECTORY&lt;br /&gt;
&lt;br /&gt;
                withCredentials([&lt;br /&gt;
                	sshUserPrivateKey(&lt;br /&gt;
                		credentialsId: &amp;quot;${sshUser}-${server}&amp;quot;, &lt;br /&gt;
                		keyFileVariable: 'sshKey', &lt;br /&gt;
                		passphraseVariable: 'sshPassphrase'&lt;br /&gt;
                	)&lt;br /&gt;
                ]) {&lt;br /&gt;
                    def sshServer = [:]&lt;br /&gt;
                    sshServer.name = &amp;quot;Serveur de ${Phase} pour ${company}&amp;quot;&lt;br /&gt;
                    sshServer.host = &amp;quot;${server}&amp;quot;&lt;br /&gt;
                    sshServer.user = &amp;quot;${sshUser}&amp;quot;&lt;br /&gt;
                    sshServer.identityFile = sshKey&lt;br /&gt;
                    sshServer.passphrase = sshPassphrase&lt;br /&gt;
                    sshServer.allowAnyHosts = true&lt;br /&gt;
&lt;br /&gt;
                    sshPut remote: sshServer, from: &amp;quot;${packageFilename}&amp;quot;, into: &amp;quot;/tmp/&amp;quot;&lt;br /&gt;
                    if ( &amp;quot;${appDirectory}&amp;quot; != &amp;quot;${appDirectory}/${packageName}&amp;quot; &amp;amp;&amp;amp; &amp;quot;${appDirectory}/&amp;quot; != &amp;quot;${appDirectory}/${packageName}&amp;quot;) {&lt;br /&gt;
                        sshCommand remote: sshServer, command: &amp;quot;rm -rf ${appDirectory}/${packageName}&amp;quot;&lt;br /&gt;
                    }&lt;br /&gt;
&lt;br /&gt;
                    def directories = sshCommand remote: sshServer, command: &amp;quot;ls -1d ${appDirectory}/*|grep -vE 'PARAM|LOG|DATA|MAINTENANCE|BATCH|zip|APPLI|CURRENT'|sort -V&amp;quot;&lt;br /&gt;
        			def directoriesCount = directories.split('\n').length&lt;br /&gt;
        				println &amp;quot;Nombre total de répertoires versionnés : ${directoriesCount}&amp;quot;&lt;br /&gt;
    				def versions_count_to_del = directoriesCount - versions_count_to_keep&lt;br /&gt;
        				println &amp;quot;Nombre de répertoires à supprimer : ${versions_count_to_del}&amp;quot;&lt;br /&gt;
                    sshCommand remote: sshServer, command: &amp;quot;for i in \$(ls -1d ${appDirectory}/*|grep -vE 'PARAM|LOG|DATA|MAINTENANCE|BATCH|zip|CURRENT'|sort -V|head -${versions_count_to_del});do echo 'Suppression du dossier : '\$i;rm -rf \$i;done&amp;quot;&lt;br /&gt;
&lt;br /&gt;
                    sshCommand remote: sshServer, command: &amp;quot;unzip -q /tmp/${packageFilename} -d ${appDirectory}/${packageName}&amp;quot;&lt;br /&gt;
                    sshCommand remote: sshServer, command: &amp;quot;rm /tmp/${packageFilename}&amp;quot;&lt;br /&gt;
                    sshCommand remote: sshServer, command: &amp;quot;chown -R www:www ${appDirectory}/${packageName}&amp;quot;&lt;br /&gt;
                    sshCommand remote: sshServer, command: &amp;quot;unlink ${appDirectory}/CURRENT &amp;amp;&amp;amp; ln -s ${packageName} ${appDirectory}/CURRENT&amp;quot;&lt;br /&gt;
                }&lt;br /&gt;
			}&lt;br /&gt;
		}&lt;br /&gt;
    } catch (err) {&lt;br /&gt;
        currentBuild.result = &amp;quot;FAILURE&amp;quot;&lt;br /&gt;
        throw err&lt;br /&gt;
    } finally {&lt;br /&gt;
        script {&lt;br /&gt;
            deleteDir()&lt;br /&gt;
        }&lt;br /&gt;
    }&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;/div&gt;</summary>
		<author><name>Jordan</name></author>
		
	</entry>
</feed>