読者です 読者をやめる 読者になる 読者になる

GeekFactory

int128.hatenablog.com

Gradle SSH Plugin 1.0.2をリリースした

gradle groovy

Gradle SSH Plugin 1.0.2をリリースしました.

SSH Pluginを使うと,下記のようにGradleからSSHでコマンドを実行したりファイルを送受信したりできます.

// build.gradle
plugins {
  id 'org.hidetake.ssh' version '1.0.2'
}

remotes {
  webServer {
    host = '192.168.1.101'
    user = 'jenkins'
    identity = file('id_rsa')
  }
}

task deploy << {
  ssh.run {
    session(remotes.webServer) {
      put 'example.war', '/webapps'
      execute 'sudo service tomcat restart'
    }
  }
}

詳しい使い方は https://gradle-ssh-plugin.github.io をご覧ください.

New Feature in 1.0.2

put コマンドでリモートのファイルに文字列を書き込めるようになりました.下記のようにファイルパス,文字列,バイト配列を指定できます.

// specify a file path, File object or Interable<File>
put file: 'local_file', into: '/remote/file'
put file: buildDir, into: '/remote/folder'
put files: files('local_file1', 'local_file2'), into: '/remote/folder'

// specify a string
put text: 'hello world', into: '/remote/script.sh'

// specify a byte array
put bytes: [0xff, 0xff] as byte[], into: '/remote/fixture.dat'

下記のように複数行の文字列も指定できます.

put text: '''#!/bin/sh
echo 'hello world'
echo 'hoge'
''', into: '/tmp/deploy.sh'

実は,この機能は2011年頃のプロトタイプでは実装済みでしたが,プロダクトではずっと放置していました.

Groovy SSH

Gradleではなく単体のコマンドラインツールDSLを使いたい場合はGroovy SSHが便利です.