Dav*_*ers 3 bitbucket jenkins devops jenkins-pipeline
我将 Jenkins 与Bitbucket 分支源插件一起使用。
一切都很好,但我希望能够根据分支是否与拉取请求相关联来运行/排除管道中的某些阶段,例如:
pipeline {
stages {
stage('build') {
//compile
}
stage('package') {
when {
environment name: 'IS_PULL_REQUEST', value: 'true'
}
//create deployable package
}
}
}
Run Code Online (Sandbox Code Playgroud)
Jenkins 知道分支何时用于 PR,因为它将源与目标合并,并且还在多分支管道页面的拉取请求文件夹中显示分支。
我可以在管道中使用环境变量来排除/包含阶段吗?
Dib*_*tya 15
changeRequest在声明式管道中,您还可以使用指令内的内置条件when来确定分支是否与拉取请求关联。
stage('package') {
when {
changeRequest()
}
//create deployable package
}
Run Code Online (Sandbox Code Playgroud)
您还可以检查拉取请求是否针对特定分支:
stage('package') {
when {
changeRequest target: 'master'
}
//create deployable package
}
Run Code Online (Sandbox Code Playgroud)
请参阅https://jenkins.io/doc/book/pipeline/syntax/#when。
您可以使用BRANCH_NAME和CHANGE_ID环境变量来检测拉取请求。当您从分支运行多分支管道构建时(在创建拉取请求之前),将设置以下环境变量:
env.BRANCH_NAME设置为存储库分支名称(例如develop),env.CHANGE_BRANCH是null,env.CHANGE_ID是null。但是一旦你创建了一个拉取请求,那么:
env.BRANCH_NAME设置为 PR-\d+ 名称(例如PR-11),env.CHANGE_BRANCH设置为真实的分支名称(例如develop),env.CHANGE_ID设置为拉取请求 ID(例如11)。我when在我的管道中使用以下条件来检测拉取请求:
when {
expression {
// True for pull requests, false otherwise.
env.CHANGE_ID && env.BRANCH_NAME.startsWith("PR-")
}
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
3020 次 |
| 最近记录: |