我正在自動部署我的“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 隧道?
- 有沒有更好的方法在詹金斯管道腳本中建立隧道?