我只想从分支名称启用部署(从 hotfix 和 master 开始)。我怎样才能做到这一点?
I want to enable deployment only from the branch names(starting with hotfix and master). How can I do that?
我正在编写 Jenkinsfile
并尝试从分支名称启用部署(从 master
和 hotfix
开始)。我怎样才能做到这一点?下面是我的 groovy 代码。如果我只指定一个分支,这将起作用。我如何为多个分支执行此操作?
// Create and Deploy to STAGE Environment
stage ('Create and Deploy to k8s stage Environment') {
when {
allOf {
expression {
branch_name.startsWith('master')
}
}
}
options {
skipDefaultCheckout()
}
steps {
withCredentials([string(credentialsId: "$env.K8S_STAGE_NS_TOKEN" , variable: 'STAGE_TOKEN')]) {
kubernetesDeploy(hcEnv: 'stage', hcToken: "${STAGE_TOKEN}")
}
}
}
如果我指定 2 个分支名称,下面的代码将不起作用,但上面的代码可以。
// Create and Deploy to PROD Environment
stage ('Create and Deploy to k8s production Environment') {
when {
allOf {
expression {
branch_name.startsWith('hotfix')
branch_name.startsWith('master')
}
}
}
options {
skipDefaultCheckout()
}
steps {
withCredentials([string(credentialsId: "$env.K8S_PROD_NS_TOKEN" , variable: 'PROD_TOKEN')]) {
kubernetesDeploy(hcEnv: 'prod', hcToken: "${PROD_TOKEN}")
}
}
}
你可以用这个
expression { return (env.GIT_BRANCH.startsWith('origin/master') || env.GIT_BRANCH.startsWith('hotfix'))}
或
你也可以试试这个
expression { return (env.BRANCH_NAME.startsWith('origin/master') || env.GIT_BRANCH.startsWith('origin/hotfix'))}
我不确定你的分支名称是否以 origin 开头或没有 origin 所以根据你的情况使用它。我会建议而不是 startsWith
使用 contains
.
此外,我猜你需要 anyOf
而不是 allOf
,因为你想要 运行 阶段,如果它是主分支或修补程序分支,并且都在同一时间不可能是真的所以
我正在编写 Jenkinsfile
并尝试从分支名称启用部署(从 master
和 hotfix
开始)。我怎样才能做到这一点?下面是我的 groovy 代码。如果我只指定一个分支,这将起作用。我如何为多个分支执行此操作?
// Create and Deploy to STAGE Environment
stage ('Create and Deploy to k8s stage Environment') {
when {
allOf {
expression {
branch_name.startsWith('master')
}
}
}
options {
skipDefaultCheckout()
}
steps {
withCredentials([string(credentialsId: "$env.K8S_STAGE_NS_TOKEN" , variable: 'STAGE_TOKEN')]) {
kubernetesDeploy(hcEnv: 'stage', hcToken: "${STAGE_TOKEN}")
}
}
}
如果我指定 2 个分支名称,下面的代码将不起作用,但上面的代码可以。
// Create and Deploy to PROD Environment
stage ('Create and Deploy to k8s production Environment') {
when {
allOf {
expression {
branch_name.startsWith('hotfix')
branch_name.startsWith('master')
}
}
}
options {
skipDefaultCheckout()
}
steps {
withCredentials([string(credentialsId: "$env.K8S_PROD_NS_TOKEN" , variable: 'PROD_TOKEN')]) {
kubernetesDeploy(hcEnv: 'prod', hcToken: "${PROD_TOKEN}")
}
}
}
你可以用这个
expression { return (env.GIT_BRANCH.startsWith('origin/master') || env.GIT_BRANCH.startsWith('hotfix'))}
或
你也可以试试这个
expression { return (env.BRANCH_NAME.startsWith('origin/master') || env.GIT_BRANCH.startsWith('origin/hotfix'))}
我不确定你的分支名称是否以 origin 开头或没有 origin 所以根据你的情况使用它。我会建议而不是
startsWith
使用contains
.此外,我猜你需要
anyOf
而不是allOf
,因为你想要 运行 阶段,如果它是主分支或修补程序分支,并且都在同一时间不可能是真的所以