Maven, Glassfish 4 ja Cargo plugin

Kun hioo jatkuvaa integraatiota kuntoon tulee ennen pitkää ajankohtaiseksi pohdiskella miten automatisoidaan Maven buildien asennus etäservereille – kehittäjätestiservereille, hyväksyntätestiservereille, ja tuotantoonkin. Tapojahan tähän on monia – serverien omat työkalut, ihan tiedostotasolla toiminta ja hot deploy. Itse kuitenkin halusin kytkeä tämänkin Maveniin, se helpottaa kovasti mm. Jenkinsin kanssa toimintaa ja pitää munat samassa korissa.

Kokeilin muutamaa plug-inia, ja suosikiksi niistä erääntyi Cargo plug-in. Muissa tuli vastaan bugeja, ja Cargon konfiguraatio oli simppeleimmästä päästä joten se päätyi mukaan. Mukavaa on myös se, että Cargo ei ole yhden serverin ihme vaan tukee valtaisaa määrää Java Appservereitä.

Eli lisätään pom.xml tiedostoon tällainen plug-in:

 <!-- Maven Cargo plug-in to deploy .war to test servers -->
  <plugin>
    <groupId>org.codehaus.cargo</groupId>
    <artifactId>cargo-maven2-plugin</artifactId>
    <version>1.4.8</version>
    <configuration>
      <container>
        <containerId>glassfish4x</containerId>
        <type>remote</type>
      </container>
    <configuration>
      <type>runtime</type>
      <properties>
        <cargo.hostname>munserveri</cargo.hostname>
        <cargo.remote.username>muntunnus</cargo.remote.username>
        <cargo.remote.password>munsalasana</cargo.remote.password>
      </properties>
   </configuration> 
   </configuration>
    <dependencies>
      <dependency>
        <groupId>org.glassfish.deployment</groupId>
        <artifactId>deployment-client</artifactId>
        <version>3.2-b06</version>
      </dependency>
    </dependencies>
  </plugin>

Ja siinä se. Tuossa yllä munserveri on tietysti oman Glassfish 4 serverin osoite, muntunnus ja munsalasana sen admin-oikeudet omaavat tunnukset.

Nyt voit ajaa seuraavia komentoja:

mvn clean package cargo:deploy
mvn clean package cargo:redeploy
mvn cargo:undeploy

Yritin viritellä tätä toimimaan force-parametrilla siten että deploy hoitaisi myös redeploy-toiminnon – mutta jostain syystä ei pelittänyt ainakaan tässä ympäristössä. Ratkaisuna on ajaa aina cargo:redeploy, se ei näytä pahastuvan ellei serveriltä softaa ennestään löydykään, mutta deploy pahastuu jos softa on jo serverillä samalla nimellä, ja undeploy pahastuu jos softaa ei ole.

Seuraava askel on sitten tuunata profiileja käyttöön. Niillä voit säätää helposti serveriosoitteet, salasanat ja tunnukset vaikka miten monelle eri serverille ja käytellä niitä esim. näin:

mvn -Pintegration-test package cargo:undeploy cargo:deploy

Varmaan on fiksumpiakin tapoja tehdä näitä, esim. kenties force parametrin saa toimimaan, kenties redeploy hoitaa saman kuin undeploy+deploy. Tällä pääsee kuitenkin alkuun, ja kommentoida sopii jos keksii liukkaampia tapoja.

Plug-in on CodeHousin käsialaa ja löytyy täältä: http://cargo.codehaus.org/

 

 

Ja näin opimme taas jotain kivaa ja hyödyllistä 😉

 

 

 

Advertisements

Vastaa

Täytä tietosi alle tai klikkaa kuvaketta kirjautuaksesi sisään:

WordPress.com-logo

Olet kommentoimassa WordPress.com -tilin nimissä. Log Out / Muuta )

Twitter-kuva

Olet kommentoimassa Twitter -tilin nimissä. Log Out / Muuta )

Facebook-kuva

Olet kommentoimassa Facebook -tilin nimissä. Log Out / Muuta )

Google+ photo

Olet kommentoimassa Google+ -tilin nimissä. Log Out / Muuta )

Muodostetaan yhteyttä palveluun %s