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

GeekFactory

int128.hatenablog.com

Gradle SSH Plugin 1.1.1をリリースした

gradle groovy

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

GradleからリモートサーバにSSHしてコマンド実行やファイル転送を行うことができるプラグインです.Groovy DSLを活用しているので,簡単にSSH処理を記述できます.

New Features

1.1系で追加された新機能を紹介します.

Port Forwarding support

ポートフォワードがサポートされました.ローカルポートをリモートネットワークに転送したり,リモートポートをローカルネットワークに転送したりできます.詳しくは 3.6. Enable the port forwarding を参照してください.

// Forward localhost:18080 to remote:8080
forwardLocalPort port: 18080, hostPort: 8080

// Forward localhost:(allocated port) to remote:8080
int port = forwardLocalPort hostPort: 8080

// Forward localhost:18080 to 172.16.1.1:8080
forwardLocalPort port: 18080, host: '172.16.1.1', hostPort: 8080

// Forward *:18080 (listen to all) to 172.16.1.1:8080
forwardLocalPort bind: '0.0.0.0', port: 18080, host: '172.16.1.1', hostPort: 8080
// Forward remote:30000 to localhost:8080
forwardRemotePort port: 30000, hostPort: 8080

// Forward remote:30000 to 192.168.1.5:8080
forwardRemotePort port: 30000, host: '192.168.1.5', hostPort: 8080

// Forward remote:30000 (listen to all) to 192.168.1.5:8080
forwardRemotePort bind: '0.0.0.0', port: 30000, host: '192.168.1.5', hostPort: 8080

DSL extension system

クロージャDSLを拡張できるようになりました.下記の例は restartAppServer というメソッドDSLに追加しています.メソッドの実装はクロージャで定義します.

ssh.settings {
  extensions.add restartAppServer: {
    execute 'sudo service tomcat restart'
  }
}

ssh.run {
  session(ssh.remotes.testServer) {
    restartAppServer()
  }
}

クロージャの内部からは project インスタンスにアクセスできるので,プロジェクトのメタデータや依存関係を使った処理も記述できます.

詳しくは 5. DSL extension system を参照してください.

Kaizen

1.1.1で,ログの可読性を改善しました.全体的に,ログレベルやログの内容を見直しました.

1.1系では,Groovy 2.3から追加されたtraitを活用することで,DSLをプラガブルに拡張できるアーキテクチャに変更しました.これまで execute などのメソッドを1つのクラスに集約して実装していましたが,複数のtraitに分けて実装するようにしました.これにより,保守性が改善されました.

Give me a star!

2/28現在で 99 stars です.あなたの一票を待ってます!