Liquibase a través de SSH a una instancia remota de MySQL

Liquibase a través de SSH a una instancia remota de MySQL

Estoy en medio de la automatización de la implementación de mi aplicación "LAMP". Por el momento tengo una configuración de Jenkins con una canalización para implementar en el entorno local sobre la que tengo control total. En un intento por asegurarme de que los esquemas de la base de datos estén sincronizados, mi mirada se posó en liquibase. Mi problema es cómo programar la canalización para conectarse al servidor remoto.

Yo usaría algo como

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

Pero no hay ninguna JVM en el servidor de destino y no tengo posibilidad de instalarla.

Mi segundo pensamiento es establecer un túnel 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

Mi pregunta es doble:

  1. ¿Cómo finalizo el túnel SSH después de su uso?
  2. ¿Existe una mejor manera de establecer el túnel en un script de tubería de Jenkins?

información relacionada