Liquibase から SSH 経由でリモート MySQL インスタンスへ

Liquibase から SSH 経由でリモート MySQL インスタンスへ

私は現在、「LAMP」アプリケーションのデプロイメントを自動化しているところです。現時点では、私が完全に制御できるローカル環境にデプロイするためのパイプラインを備えた Jenkins をセットアップしています。データベース スキーマが同期されていることを確認するために、liquibase に注目しました。問題は、パイプラインをスクリプト化してリモート サーバーに接続する方法です。

私は次のようなものを使います

scp db.changelog-1.1.xml remotehost:/path/to/
ssh remotehost liquibase --driver=com.mysql.cj.jdbc.Driver --classpath=mysql-connector-java-8.0.17.jar --changeLogFile=/path/to/db.changelog-1.1.xml --url="jdbc:mysql://127.0.0.1:3306/dbname?autoReconnect=true&useSSL=false&useUnicode=true&useJDBCCompliantTimezoneShift=true&useLegacyDatetimeCode=false&serverTimezone=UTC" --username=user --password=secretpass update

しかし、ターゲット サーバーに JVM が存在しないため、インストールすることはできません。

2番目の考えはSSHトンネルを確立することです

ssh -L 3307:127.0.0.1:3306 remoteHost &
liquibase --driver=com.mysql.cj.jdbc.Driver --classpath=mysql-connector-java-8.0.17.jar --changeLogFile=/path/to/db.changelog-1.1.xml --url="jdbc:mysql://127.0.0.1:3307/dbname?autoReconnect=true&useSSL=false&useUnicode=true&useJDBCCompliantTimezoneShift=true&useLegacyDatetimeCode=false&serverTimezone=UTC" --username=user --password=secretpass update

私の質問は2つあります:

  1. 使用後に SSH トンネルを終了するにはどうすればよいですか?
  2. Jenkins パイプライン スクリプトでトンネルを確立するより良い方法はありますか?

関連情報