mardi 23 décembre 2008

Packager Hudson avec ses plugins

Depuis la version 1.259 de Hudson, il est possible de pré packager les plugins de Hudson dans l'archive Web (hudson.war).
Il suffit d'inclure les plugins (*.hpi) dans le répertoire « WEB-INF/plugins » de l'archive. Au lancement les plugins packagés seront déployés dans l'espace de travail de Hudson $HUDSON_HIOME/plugins.

L'exemple suivant montre la récupération d'une archive Hudson et d'un ensemble de plugins, puis son re-packaging avec Maven

<project xmlns="http://maven.apache.org/POM/4.0.0" xsi="http://www.w3.org/2001/XMLSchema-instance" schemalocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd"><project xmlns="http://maven.apache.org/POM/4.0.0" xsi="http://www.w3.org/2001/XMLSchema-instance" schemalocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
<modelversion>4.0.0</modelversion>

<groupid>org.jvnet.hudson.plugins</groupid>
<artifactid>hudson-war</artifactid>
<packaging>war</packaging>
<version>1.266</version>
<name>hudson-war</name>

<properties>
  <hudson.version>${project.version}</hudson.version>
  <hudson.unpack>${project.build.directory}/hudson-unpack</hudson.unpack>
</properties>

<build>
 <plugins>
  <plugin>
   <groupid>org.apache.maven.plugins</groupid>
   <artifactid>maven-dependency-plugin</artifactid>
   <executions>
    <execution>
    <id>unpack-origin-archive</id>
    <phase>initialize</phase>
    <goals>
    <goal>unpack</goal>
    </goals>
    <configuration>
    <artifactitems>
    <artifactitem>
    <groupid>org.jvnet.hudson.main</groupid>
    <artifactid>hudson-war</artifactid>
    <version>${hudson.version}</version>
    <type>war</type>
   <overwrite>true</overwrite>
    <outputdirectory>${hudson.unpack}</outputdirectory>
    </artifactitem>
    </artifactitems>
    </configuration>
    </execution>

    <execution>
    <id>copy-plugins</id>
    <phase>initialize</phase>
    <goals>
    <goal>copy</goal>
    </goals>
    <configuration>
    <artifactitems>

    <artifactitem>
    <groupid>org.jvnet.hudson.plugins</groupid>
    <artifactid>clearcase</artifactid>
    <version>0.8.1</version>
    <type>hpi</type>
    <outputdirectory>${hudson.unpack}/WEB-INF/plugins</outputdirectory>
    </artifactitem>

    <artifactitem>
     <groupid>org.jvnet.hudson.plugins</groupid>
     <artifactid>doxygen</artifactid>
     <version>0.1</version>
     <type>hpi</type>
     <outputdirectory>${hudson.unpack}/WEB-INF/plugins</outputdirectory>
     </artifactitem>

    <artifactitem>
     <groupid>org.jvnet.hudson.plugins</groupid>
    <artifactid>zentimestamp</artifactid>
    <version>1.0</version>
    <type>hpi</type>
    <outputdirectory>${hudson.unpack}/WEB-INF/plugins</outputdirectory>
    </artifactitem>

    </artifactitems>
    </configuration>
    </execution>

    </executions>
    </plugin>

   <plugin>
    <groupid>org.apache.maven.plugins</groupid>
    <artifactid>maven-war-plugin</artifactid>
    <version>2.1-alpha-2</version>
    <configuration>
    <classifier>withplugins</classifier>
    <webresources>
    <resource>
    <directory>${hudson.unpack}</directory>
    <excludes>
    <exclude>META-INF/HUDSON.SF</exclude>
    <exclude>META-INF/HUDSON.RSA</exclude>
    </excludes>
    </resource>
    </webresources>
    <archive>
    <manifestfile>${hudson.unpack}/META-INF/MANIFEST.MF</manifestfile>
    </archive>
   </configuration>
   </plugin>

   </plugins>
 </build>
</project>

Il vous suffira ensuite de lancer la commande mvn clean package pour obtenir la nouvelle archive Hudson hudson-war-1.266-withplugins.war avec les plugins inclus.

Aucun commentaire: