git - 詹金斯管道条件
问题描述
我正在使用 Jenkins Pipeline 作为源Jenkinsfile
我没有使用多分支管道,因此在分支选择条件下我不能使用标准。我的 git 存储库的主机是 gitlab,但我正在使用 gitlab 插件,所以我可以看到这个环境变量已设置:
Name: gitlabSourceBranch -> Value continuous_integration
但是,当我尝试在某个阶段使用此环境变量时,我会得到:
Stage "build_sd_card" skipped due to when conditional
我使用的 when 条件是:
when {
environment name: 'gitlabSourceBranch ', value: 'continuous_integration'
}
我使用了 jenkins 语法声明性指令生成器来生成它。
我用这个函数打印出环境(在前面的阶段中调用):
@NonCPS
def printParams() {
env.getEnvironment().each { name, value -> println "Name: $name -> Value $value" }
}
为什么这个when
条件不起作用?
解决方案
您需要将值与输入值进行比较。
如您所知,环境值已设置(或可以设置)并且可以在 env 下访问。字首。你应该使用类似的东西:
when {
equals expected: 'continuous_integration', actual: env.gitlabSourceBranch
}
或者
when {
expression {
env.gitlabSourceBranch == 'continuous_integration'
}
}
虽然我更喜欢第一个
推荐阅读
- mysql - 如何在 MySQL 中做到这一点?
- python - 如何在python中按下按钮进行冷却
- mysql - 通过 SQL 语句的 Moodle-Enrolement-Course-Information
- temporal-workflow - 时间:何时以及如何使用本地活动?
- docker - 两个docker都可以设置主机网络模式吗?
- c# - ItemsControl ItemTemplate DataTemplate 触发器未触发
- algorithm - 将一组坐标转换为已排序的二维数组
- ros - ROS melodic - gps_goal 包 - 机器人向与目标相反的方向前进
- javascript - Load font from googleapis after page loading in react.js
- vue.js - 如何在 vue.js 中连接两个过滤值?