我正在自动化部署我的“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
我的问题有两个:
- 如何在使用后终止 SSH 隧道?
- 有没有更好的方法在詹金斯管道脚本中建立隧道?