[英]Running two docker containers in “sidecar” mode with Jenkinsfile
我必須以sidecar模式運行兩個docker容器。 我花了幾天時間試圖實現正確的管道,但我現在處於絕望狀態,因為我的想法實際上都沒有。
首先,我已經閱讀了這個塊運行邊車容器
它實現了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'
}
}
}
}
}
}
}
這是個主意。 第一個容器有selenium myhub.hub / selenium-dev - 在后台運行,第二個容器myhub.hub / ui-shell-runner包含使用第一個容器的nose2實用程序。 我試圖實現節點 ,試圖完全刪除它並將我的代碼移動到步驟中 ,我試圖刪除所有內容並通過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 ->
我沒有想法。 接下來我要做什么?
這是適用於我的代碼。 感謝Denis Khokhryakov的幫助和建議! 在這個例子中,“se” - 是第一個selenium容器的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'
}
}
}
}
}
}
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.