在构buildpipe道中使用jenkins docker插件来存储持久化容器

这是一个简单的构buildpipe道的groovy脚本,它使用Linux上的SQL Server的docker镜像:

def PowerShell(psCmd) { bat "powershell.exe -NonInteractive -ExecutionPolicy Bypass -Command \"\$ErrorActionPreference='Stop';$psCmd;EXIT \$global:LastExitCode\"" } node { stage('git checkout') { git 'file:///C:/Projects/SsdtDevOpsDemo' } stage('build dacpac') { bat "\"${tool name: 'Default', type: 'msbuild'}\" /p:Configuration=Release" stash includes: 'SsdtDevOpsDemo\\bin\\Release\\SsdtDevOpsDemo.dacpac', name: 'theDacpac' } stage('start container') { sh 'docker run -e "ACCEPT_EULA=Y" -e "SA_PASSWORD=P@ssword1" --name SQLLinuxLocal2 -d -i -p 15566:1433 microsoft/mssql-server-linux' } stage('deploy dacpac') { unstash 'theDacpac' bat "\"C:\\Program Files\\Microsoft SQL Server\\140\\DAC\\bin\\sqlpackage.exe\" /Action:Publish /SourceFile:\"SsdtDevOpsDemo\\bin\\Release\\SsdtDevOpsDemo.dacpac\" /TargetConnectionString:\"server=localhost,15566;database=SsdtDevOpsDemo;user id=sa;password=P@ssword1\"" } stage('run tests') { PowerShell('Start-Sleep -s 5') } stage('cleanup') { sh 'docker stop SQLLinuxLocal2' sh 'docker rm SQLLinuxLocal2' } } 

我在一天前发布的一个问题得到了一些帮助,这是我的尝试(有一些帮助)在做同样的事情,但与docker插件:

 def PowerShell(psCmd) { bat "powershell.exe -NonInteractive -ExecutionPolicy Bypass -Command \"\$ErrorActionPreference='Stop';$psCmd;EXIT \$global:LastExitCode\"" } node { stage('git checkout') { git 'file:///C:/Projects/SsdtDevOpsDemo' } stage('Build Dacpac from SQLProj') { bat "\"${tool name: 'Default', type: 'msbuild'}\" /p:Configuration=Release" stash includes: 'SsdtDevOpsDemo\\bin\\Release\\SsdtDevOpsDemo.dacpac', name: 'theDacpac' } stage('start container') { docker.image('-e "ACCEPT_EULA=Y" -e "SA_PASSWORD=P@ssword1" --name SQLLinuxLocal2 -d -i -p 15566:1433 microsoft/mssql-server-linux').withRun() { unstash 'theDacpac' bat "\"C:\\Program Files\\Microsoft SQL Server\\140\\DAC\\bin\\sqlpackage.exe\" /Action:Publish /SourceFile:\"SsdtDevOpsDemo\\bin\\Release\\SsdtDevOpsDemo.dacpac\" /TargetConnectionString:\"server=localhost,15566;database=SsdtDevOpsDemo;user id=sa;password=P@ssword1\"" } sh 'docker run -d --name SQLLinuxLocal2 microsoft/mssql-server-linux' } stage('sleep') { PowerShell('Start-Sleep -s 30') } stage('cleanup') { sh 'docker stop SQLLinuxLocal2' sh 'docker rm SQLLinuxLocal2' } } 

这个问题是,虽然它运作,docker运行线旋转康乃馨的一个不同的化身。 有人可以请指出我在正确的方向,以获得相同的结果,而不是第一个pipe道,但通过使用docker插件。