2012-11-01 8 views

risposta

9

Da un mio progetto che utilizzo per i file SCP su un server EC2. I file jar sono file locali che fanno parte del mio progetto, ho dimenticato da dove li ho presi. C'è probabilmente un modo più conciso per fare tutto questo, ma mi piace essere molto esplicito nei miei script di compilazione.

configurations { 
    sshAntTask 
} 

dependencies { 
    sshAntTask fileTree(dir:'buildSrc/lib', include:'jsch*.jar') 
    sshAntTask fileTree(dir:'buildSrc/lib', include:'ant-jsch*.jar') 
} 

ant.taskdef(
    name: 'scp', 
    classname: 'org.apache.tools.ant.taskdefs.optional.ssh.Scp', 
    classpath: configurations.sshAntTask.asPath) 

task uploadDbServer() { 
    doLast { 
    ant.scp(
     file: '...', 
     todir: '...', 
     keyfile: '...') 
    } 
} 
+0

Molte Grazie @Shorn per questo modo pulito ed esplicito (e metterlo in una configurazione propria), che io anche anticipare in vantaggio per consentire una manutenzione più semplice. – ngeek

+0

Entrambi questi artefatti sono disponibili da Maven central. Rende la configurazione molto facile. –

+0

Sto notando che Gradle arriva con jsch ... quindi non c'è un modo migliore, più graduale, per fare questo? – Jason

19

Alcuni anni dopo la domanda originale, mi piace the Gradle SSH Plugin. Una piccola citazione del suo esteso :

Possiamo descrivere le operazioni SSH nella chiusura della sessione.

session(remotes.web01) { 
    // Execute a command 
    def result = execute 'uptime' 

    // Any Gradle methods or properties are available in a session closure 
    copy { 
    from "src/main/resources/example" 
    into "$buildDir/tmp" 
    } 

    // Also Groovy methods or properties are available in a session closure 
    println result 
} 

I seguenti metodi sono disponibili in una sessione chiusa.

  • execute - Esegue un comando.
  • executeBackground - Esegue un comando in background.
  • executeSudo - Esegue un comando con supporto sudo.
  • shell - Esegue una shell.
  • put - Inserisci un file o una directory nell'host remoto.
  • get - Ottieni un file o una directory dall'host remoto.

... e consente, ad esempio:

task deploy(dependsOn: war) << { 
    ssh.run { 
    session(remotes.staging) { 
     put from: war.archivePath.path, into: '/webapps' 
     execute 'sudo service tomcat restart' 
    } 
    } 
} 
Problemi correlati