当詹金斯没有数据库时从詹金斯管道访问远程数据库

Access remote database from Jenkins Pipeline when jenkins does not have DB

我必须从 Jenkins 访问 cloud foundry 数据库。因此,为此,我已将 Cloud Foundry SQL 端口转发到 Jenkins 本地端口。

在 Jenkins 上,我安装了数据库和 SQl 插件并尝试连接到 localhost:3306 端口。但是,它给出以下错误:

错误 2003 (HY000):无法连接到“127.0.0.1”上的 MySQL 服务器 (111)

我找到了解决方案,这是因为 cf ssh app-name -L 3306:192.168.32.29:3306 正在执行,然后在下一个命令 运行 之前终止 ssh。

所以在我的例子中,mysql 无法找到链接到该端口的任何数据库。

为了解决这个问题,我必须 运行 在后台执行第一个 ssh 命令,然后 运行 执行下一个 mysql 命令。

cf ssh ${appName} -N -L 3306:${db_ip}:3306 & mysql -h 127.0.0.1 -P 3306 -u 用户名 -ppassword 数据库名 < 'mysqlstatements.sql'

运行完成后,我们可以使用kill命令关闭后台命令