Glassfish remote deployment

Olen viritellyt Glassfish serveriklusterin deploymentin parissa. Ideana on saada etäkoneelta buildi, esim. Jenkins tai kehittäjäkone, tipauttamaan nätisti buildin tuotokset serverille jossa niitä voidaan testata ja demoilla.

Tähän on moniakin vaihtoehtoja:

– Glassfish serverissä on autodeploy-kansio, eli jos sinne siirtää tiedoston esim. scp:llä tai ftp:llä, se nousee itsestään pystyyn

– Deployn voi tietysti tehdä käsin, glassfish hallintanäyttöjen kautta

– Cargo plugin on maineikas sen suhteen, että se osaa asennella monellekin eri serverille kun vain kerrotaan miten

– Asadmin työkalu toimii komentoriviltä, se kykenee myös asentamaan tuotoksia

– Joku muu jonka olen unohtanut :p

Tuosta listasta kokeilen ensiksi Cargo pluginia. Se vaikutti muuten lupaavalta paitsi ei toiminut ollenkaan. Ilmeisesti pulmia teeman deploy/redeploy välillä, ja monessa lähteessä mainittu force=true ei tuntunut auttavan. Ongelma siis että jos serverillä ei ole sovellusta, pitäisi tehdä deploy, myöhemmillä kerroilla taas redeploy. En saanut tätä kuitenkaan toimimaan. Sain kivoja nullpointer exceptioneitä Glassfish nelosen kanssa.

Noista tiedostopohjaisista kujeista en ole suunnattoman innostunut, eli käytän niitä vasta jos on pakko. Tiedostojen kanssa on ongelmia mm. lukituksen/säikeiden ja transaktionaalisen eheyden kanssa siirrossa, sekä jälkien putsauksen kanssa.

Asadmin työkalua tuli käyteltyä ja virittelin sen päälle maven exec tehtävän joka osaa sitä ajaa. En ole vielä aivan tyytyväinen vakauteen, mutta toistaiseksi riittävä ratkaisu.

Asadminilla onnistuu .war paketin asennus verkon yli serverille esim. näin:

c:\glassfish4\bin\asadmin deploy --host devserver.mycompany.com --force=true --availabilityenabled=true --target cluster1 --virtualservers server c:\projects\MyProject\target\MyDeliverable.war

Tämä komento hoitaa myös redeployn. Tämä kuitenkin edellyttää että komennon ajavalla käyttäjällä on salasanatiedot jo talletettuna profiiliinsa. Saamme tästä hieman geneerisemmän näin:

c:\glassfish4\bin\asadmin --user admin --passwordfile c:\glassfish4\password --host devserver.mycompany.com deploy  --force=true --availabilityenabled=true --target cluster1 --virtualservers server  c:\projects\MyProject\target\MyDeliverable.war

Tässä koukataan salasanat salasanatiedostosta, joka on aluksi Glassfish serverin kansiossa (paikallinen asennus, jotta saamme asadmin työkalun käyttöön). Sen voi suojata haluamallaan tavalla.

Tältä näyttäisi mavenin exec plugin:

<plugin>
  <groupId>org.codehaus.mojo</groupId>
  <artifactId>exec-maven-plugin</artifactId>
  <version>1.3.1</version>
  <configuration>
    <executable>${glassfish.asadmin.executable}</executable>
    <arguments>
      <argument>--user</argument>
      <argument>${glassfish.user}</argument>
      <argument>--passwordfile</argument>
      <argument>${glassfish.password.file}</argument>
      <argument>--host</argument>
      <argument>${glassfish.remote.host}</argument> 
      <argument>deploy</argument> 
      <argument>--force=true</argument>
      <argument>--availabilityenabled=true</argument>
      <argument>--target</argument>
      <argument>cluster1</argument>
      <argument>--virtualservers</argument>
      <argument>server</argument>
      <argument>${project.build.directory}/${project.build.finalName}.war</argument>
    </arguments>
  </configuration>
  <executions>
    <execution>
      <goals>
        <goal>exec</goal>
      </goals>
    </execution>
  </executions>
</plugin>

 

Ja tältä näyttävät tuossa käytetyt propertyt:

<glassfish.asadmin.executable>c:/glassfish4/bin/asadmin.bat</glassfish.asadmin.executable>
 <glassfish.user>admin</glassfish.user>
 <glassfish.password.file>${basedir}/password</glassfish.password.file>
 <glassfish.remote.host>devserver.mycompany.com</glassfish.remote.host>

Ja propertythän voi taas pistää profiilien alle, samoin kuin muutenkin exec konfiguraatiot, eli näillä voi tarvittaessa joka devaaja tai joka ympäristö asennella eri serverille eri tiedoilla.

Mainokset

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