我看到一些奇怪的行为,试图在管道中使用Jenkins的“ sidecar container”模式。我使用模式的目标是创建一个数据库容器,使用测试数据对其进行初始化,然后在后端应用程序上运行端到端测试。这是阶段的样子(一些细节已删除):
stage('e2e-test') {
steps {
script {
docker.image('mcr.microsoft.com/mssql/server:2017-latest').withRun(
'--network=test_net ' +
'--name mssql_dev ' +
'--publish 1433:1433 ' +
'--env SA_PASSWORD=password123 ') {
docker.image('node:8.16.0-alpine').inside('--network=test_net') {
sh '''
./testms.sh
sleep 1d
'''
}
}
}
}
}
此脚本testms.sh对服务器运行一个简单的sql命令。当脚本在管道中运行时,其中的sql命令将失败,并显示“连接被拒绝错误”。
sleep 1d 命令在那里使容器保持运行,以便我可以在内部的容器中执行命令。如果我
docker exec -it container-id sh
我可以运行相同的脚本(testms.sh),它可以按预期运行。我也可以跑步
docker exec container-id ./testms.sh
,而且效果也符合预期。
任何帮助表示赞赏,我很困惑!