[英]Run docker build inside Jenkins Docker Slave
目前我有一個具有以下階段的 CI 管道:
這就是我的 Jenkinsfile 的樣子:
pipeline {
agent any
stages {
stage("Install") {
steps {
sh "npm install"
}
}
stage("Build") {
steps {
sh "npm run build"
}
}
stage("Format") {
steps {
sh "npm run format"
}
}
stage("Lint") {
steps {
sh "npm run lint"
}
}
stage("Test") {
steps {
sh "npm run test"
}
}
stage("Code Coverage") {
steps {
sh "npm run test:cov"
publishHTML(target: [
reportDir: "./coverage/lcov-report",
reportFiles: "index.html",
reportName: "Jest Coverage Report"
])
}
}
stage("End-To-End Testing") {
steps {
sh "npm run test:e2e"
}
}
}
}
我想在我的管道中添加更多階段:
例子:
pipeline {
.
.
.
stage("Docker Build") {
steps {
sh "docker build -t [user_name]/[image_name]:[tag] .
}
}
}
我對此很陌生,我嘗試了多種安裝 docker 的方法,但沒有成功,這也是一種不好的做法。
我們可以運行docker run -v /var/run/docker.sock:/var/run/docker.sock...
但我不能在使用 docker 構建命令時使用綁定安裝。
有人可以建議我在 Jenkins SSH 代理中使用 docker 命令的方法嗎?
解決方案
docker --host xxxx:2375 build -t johndoe:calculator.
docker --host [Docker_Host]:[Port] build -t [Image_Name]:[Image_Tag].
我的新 Jenkinsfile 如下:
pipeline {
agent any
stages {
stage("Install") {
steps {
sh "npm install"
}
}
stage("Build") {
steps {
sh "npm run build"
}
}
stage("Format") {
steps {
sh "npm run format"
}
}
stage("Lint") {
steps {
sh "npm run lint"
}
}
stage("Test") {
steps {
sh "npm run test"
}
}
stage("Code Coverage") {
steps {
sh "npm run test:cov"
publishHTML(target: [
reportDir: "./coverage/lcov-report",
reportFiles: "index.html",
reportName: "Jest Coverage Report"
])
}
}
stage("End-To-End Testing") {
steps {
sh "npm run test:e2e"
}
}
stage("Docker Build") {
steps {
withCredentials([string(credentialsId: 'Docker_Host', variable: 'DOCKER_HOST')]) {
sh 'docker --host $DOCKER_HOST build -t xxx/xxx .'
}
}
}
}
}
Note: I have stored Docker host URL on Jenkins as a credential and used it using withCredentials function.
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.