Jenkins 詹金斯档案代理;dockerfile“;参数化';目录';论点
我在Jenkins 2.280中使用了一个带有顺序阶段的声明性管道Jenkins 詹金斯档案代理;dockerfile“;参数化';目录';论点,jenkins,dockerfile,jenkins-pipeline,Jenkins,Dockerfile,Jenkins Pipeline,我在Jenkins 2.280中使用了一个带有顺序阶段的声明性管道 dockerfile的dir参数应从${params}获取: pipeline { agent none parameters { choice(name: PLATFORM, choices: ['dir1', 'dir2', ...], description: '') string(name: FOO, defaultValue: 1001, description: 'Interesting nu
dockerfile
的dir
参数应从${params}
获取:
pipeline {
agent none
parameters {
choice(name: PLATFORM, choices: ['dir1', 'dir2', ...], description: '')
string(name: FOO, defaultValue: 1001, description: 'Interesting number')
}
stages {
stage('Top') {
agent {
dockerfile {
filename 'Dockerfile'
dir 'platforms/${params.PLATFORM}' // <-- HERE
label 'master'
additionalBuildArgs '--build-arg FOO=${params.FOO}'
args '--mount type=bind,source=/opt/tools,target=/tools,readonly'
}
} // agent
stages {
stage('Checkout') {
steps { checkout scm }
}
stage('Build') {
sh """
// call cmake
// call ninja
"""
}
...
} // stages
} // Top
} // stages
} // pipeline
这两件事怎么办
有更好的方法吗
更新:我的问题是管道项目名称中有一个“空格”。我试图创建一个类似于您的示例。请看一下Docker文件和dockerfile代理如何在声明性管道中使用 Dockerfile
FROM alpine
ARG PACKAGE
RUN apk add ${PACKAGE}
pipeline {
agent {
dockerfile {
filename 'Dockerfile'
dir "${params.DOCKERFILE_PATH}"
additionalBuildArgs "--build-arg PACKAGE=${params.PACKAGE}"
args '-v /tmp:/tmp'
}
}
parameters {
string(name: 'DOCKERFILE_PATH', defaultValue: 'src01', description: 'Pick Dockerfile from a folder')
text(name: 'PACKAGE', defaultValue: 'curl', description: 'Package To Be Installed')
}
stages {
stage('build'){
steps {
sh 'git version'
}
}
}
}
Jenkinsfile
FROM alpine
ARG PACKAGE
RUN apk add ${PACKAGE}
pipeline {
agent {
dockerfile {
filename 'Dockerfile'
dir "${params.DOCKERFILE_PATH}"
additionalBuildArgs "--build-arg PACKAGE=${params.PACKAGE}"
args '-v /tmp:/tmp'
}
}
parameters {
string(name: 'DOCKERFILE_PATH', defaultValue: 'src01', description: 'Pick Dockerfile from a folder')
text(name: 'PACKAGE', defaultValue: 'curl', description: 'Package To Be Installed')
}
stages {
stage('build'){
steps {
sh 'git version'
}
}
}
}
groovy必须插入您的运行时参数,为此,您必须用“
包装它<代码>''将不起作用
在你的情况下,它将是
dockerfile {
filename 'Dockerfile'
dir "platforms/${params.PLATFORM}"
label 'master'
additionalBuildArgs "--build-arg FOO=${params.FOO}"
args '--mount type=bind,source=/opt/tools,target=/tools,readonly'
}
谢谢你的帮助@samit kumar patel。我正试着找时间回去测试它!嗨@samit kumar patel,在整个过程中替换双引号之后,在替换变量的值之后,删除所有脚本,删除注释等等。所以它被完全剥离了。。。我还是犯了同样的错误。我把这个项目从“foobar”改名为“foobar”,它成功了!你的回答并没有解决我的问题,但我还是会“接受”,因为你帮助了我!谢谢