私は現在、「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つあります:
- 使用後に SSH トンネルを終了するにはどうすればよいですか?
- Jenkins パイプライン スクリプトでトンネルを確立するより良い方法はありますか?