我正在与git和jenkins (流水线)合作一个项目。
我希望在每次提交时构建项目,但只在负责人需要时部署它。
因此,我希望有两条管道,一条在每次提交时运行,并且只进行构建/测试,另一条可以通过单击标签为"click me to deploy“的按钮来运行。
我是否必须创建2个jenkins作业,或者有一个插件或一种方法来做到这一点与1个作业。
我已经找过了,但我什么也没找到。
发布于 2020-01-20 19:39:51
您可以使用Input Step (Pipeline)实现1个作业。作为管道的一部分,在构建和测试执行之后,添加输入步骤(等待交互输入),然后添加与部署相关的阶段。
因此,对于每次签入,Jenkins build都会触发。但它将只完成构建和测试阶段,之后将等待首席批准进行部署。
参考:https://jenkins.io/doc/pipeline/steps/pipeline-input-step
发布于 2020-01-21 18:17:07
这是一个关于如何构建管道的示例,该管道在输入为yes时进行构建、等待输入和部署。如果输入超时,则作业将退出。如果不需要超时,那么可以忽略它,流水线将无限期地等待,而不消耗执行器(注意顶部流水线和每个阶段中的代理注释)。
pipeline {
agent none
stages {
stage('Build') {
agent { label 'master' }
steps {
sh 'build something'
}
}
stage('Production deploy confirmation') {
options {
timeout(time: 60, unit: 'SECONDS')
}
input {
message "Deploy to production?"
ok "Yes"
}
steps {
echo 'Confirmed production deploy'
}
}
stage('Deploy Production') {
stage('internal') {
agent { label 'master' }
steps {
sh 'deploy something'
}
}
}
}
}发布于 2020-01-20 19:44:36
尝试使用带布尔参数的参数化作业和用于构建和部署的两个独立阶段
pipeline{
parameters {
booleanParam(name: 'deploy_param', defaultValue: false, description: 'Check if want to deploy')
}
stages{
stage("Build"){
steps{
// build steps
}
}
stage("Deploy"){
when {
environment name: 'deploy_param', value: 'true'
}
steps{
// deploy steps
}
}
}
}通过这种方式,yo可以在"Deploy“阶段关闭的情况下进行CI构建,因为默认情况下deploy_param被设置为false 。还有一个手动构建(“当首席执行官需要时”),通过手动将deploy_param设置为true来打开"Deploy“阶段。
https://stackoverflow.com/questions/59821036
复制相似问题