2016-08-23 5 views
0

Comment puis-je déployer une guerre en utilisant gradle qui a déjà été publié sur maven repo sur l'un des serveurs web? Est-ce que le plugin cargo pour gradle le facilite? Puis-je avoir plusieurs environnements distants (DEV/TEST/PROD)? J'ai utilisé le cargo pour le déployer à distance mais cela a toujours été fait à la fin de la construction en utilisant la guerre générée et seulement avec un environnement "distant".Déployer la guerre à partir d'un repo sur le serveur distant

Toute contribution sera utile.

Répondre

0

Je pense que ce code va vous aider. Créer sur runDeployment des tâches gradle et exécuter la tâche:

task runDeployment { 
    description 'deploy the war to the server' 

    doLast { 
     String serverIP; 
     String serverPort; 
     String userName; 
     String password; 
     String jbossPath; 
     Properties prop = new Properties(); 
     InputStream input; 


     try { 
      input = new FileInputStream("deployment.properties"); 
      // load a properties file 
      prop.load(input); 
      // get the property value setting in the variables. 
      serverIP = prop.getProperty("serverIP"); 
      serverPort = prop.getProperty("serverPort"); 
      userName = prop.getProperty("userName"); 
      password = prop.getProperty("password"); 
      jbossPath = prop.getProperty("jbossPath"); 
     } catch (IOException ex) { 
      logger.info(ex.printStackTrace()) 
      throw new GradleException("Unable to load deployment.properties file. Exiting....") 
     } finally { 
      if (input != null) { 
       try { 
        input.close(); 
       } catch (IOException e) { 

       } 
      } 
     } 



      File file = new File("xyz/build/libs"); //path of the war location 
      String warPath = file.getAbsolutePath(); 

      String[] comm = [jbossPath+"jboss-cli.bat","--connect","controller="+serverIP+":"+serverPort,"-u="+userName,"-p="+password, "--command=\"deploy","--force","xyz.war"]; 
      ProcessBuilder pb = new ProcessBuilder(); 
      pb.command(comm); 
      pb.directory(new File(warPath)); 
      pb.inheritIO();  
      Process p = pb.start(); 
      try { 
       p.waitFor(); 
      } 
      catch (InterruptedException e) { 
       logger.info(e.printStackTrace()); 
      } 
     }  
    } 

Ici, je suis essayer de déployer xyz.war à jboss serveur. Je garde le serveur et l'authentification dans le fichier deployments.properties. Nous allons obtenir le warPath et nous exécutons une commande CLI dans ce code. Cela va déployer la guerre sur le serveur distant avec serverIP et serverPort.

Ce code a fonctionné pour moi.