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, и у меня нет возможности ее установить.

Моя вторая мысль — установить 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

У меня два вопроса:

  1. Как завершить работу SSH-туннеля после использования?
  2. Есть ли лучший способ создания туннеля в скрипте конвейера Jenkins?

Связанный контент