我必须在sidecar模式下运行两个docker容器。我花了几天的时间来尝试实现正确的管道,但是现在我感到绝望,因为我的想法都没有真正起作用。
首先,我已阅读此块Running sidecar containers
它在 node {}块内实现该方法。这是我的管道现在的样子:
pipeline {
agent any
options {
disableConcurrentBuilds()
}
stages {
stage("Obtain images") {
steps {
script {
writeFile(file: './ui-tests/env.yaml', text: "environment:\n # dev or stage\n type: dev\n lang: en\n")
withDockerRegistry([credentialsId: 'my-hub', url: 'https://myhub.hub']) {
def selena = docker.image('myhub.hub/selenium-dev:latest')
def uirun = docker.image('myhub.hub/ui-shell-runner:latest')
selena.pull()
uirun.pull()
}
}
}
}
stage("Run tests") {
steps {
node('pyrunner') {
docker.image('myhub.hub/selenium-dev').withRun('-e JAVA_OPTS=-Xmx1024m') { test ->
docker.image('myhub.hub/selenium-dev').inside("--link ${test.id}:se") {
sh 'pwd'
}
docker.image('myhub.hub/ui-shell-runner:latest').inside("--link ${test.id}:se") {
sh 'cd ui-tests ; pwd ; nose2 -v --attribute desktop-site,type=smoke'
}
}
}
}
}
}
}
这是主意。第一个带有硒myhub.hub / selenium-dev的容器-在后台运行,第二个容器myhub.hub / ui-shell-runner包含 nose2 实用程序,该实用程序利用了第一个。我尝试实现 node ,试图将其完全删除并将代码移至 steps 中,我尝试删除所有内容并通过 sh'docker container run运行容器...'(虽然不好)。我的想法实际上都没有达到我的预期。并且列出的管道因
崩溃 WorkflowScript: 28: Expected a symbol @ line 28, column 6.
docker.image('myhub.hub/selenium-dev').withRun('-e JAVA_OPTS=-Xmx1024m') { test ->
WorkflowScript: 28: Arguments to "error" must be explicitly named. @ line 28, column 6.
docker.image('myhub.hub/selenium-dev').withRun('-e JAVA_OPTS=-Xmx1024m') { test ->
我没主意了。我接下来要做什么?
答案 0 :(得分:1)
这是对我有用的代码。感谢Denis Khokhryakov的帮助和建议!在此示例中,“ se”-是第一个硒容器的dns名称,我们也可以在第二个客户端容器中使用dns名称进行连接。
pipeline {
agent any
options {
disableConcurrentBuilds()
}
stages {
stage("Obtain images") {
steps {
script {
writeFile(file: './ui-tests/env.yaml', text: "environment:\n # dev or stage\n type: dev\n lang: en\n")
withDockerRegistry([credentialsId: 'my-hub', url: 'https://myhub.hub']) {
def selena = docker.image('myhub.hub/selenium-dev:latest')
def uirun = docker.image('myhub.hub/ui-shell-runner:latest')
selena.pull()
uirun.pull()
}
}
}
}
stage("Run tests") {
steps {
script {
docker.image('myhub.hub/selenium-dev').withRun('-e JAVA_OPTS=-Xmx1024m') { test ->
docker.image('myhub.hub/selenium-dev').inside("--link ${test.id}:se") {
sh 'pwd'
}
docker.image('myhub.hub/ui-shell-runner:latest').inside("--link ${test.id}:se") {
sh 'cd ui-tests ; pwd ; nose2 -v --attribute desktop-site,type=smoke'
}
}
}
}
}
}
}