首页 > 解决方案 > 詹金斯 - 如果比较 HOUR 的语句不起作用

问题描述

我正在尝试根据时间在 Jenkinsfile 中添加一个“验证”阶段。如果晚于16,则需要验证,否则不需要。

if 语句不起作用

在这里我声明变量

HOUR=sh(returnStdout: true, script: 'date +"%H"').trim().toInteger() 

这是舞台

stage('validation') {
  steps {
    script {
      if ( HOUR > 16 ) {
        echo "Validation is required, time now is $HOUR"
      }
      else {
        echo "No validation required, time now is $HOUR"
      }
    }
  }
}

这是输出

Validation is required, time now is 9

变量 HOUR 的值是正确的,但是 if 语句不能正常工作

提前致谢

标签: jenkinsjenkins-pipeline

解决方案


首先尝试使用以下${xx}语法引用您的变量:

if ( ${HOUR} > 16 ) {

实际上,这将在要运行的环境步骤中定义,如${env.HOUR},如此处所示


OP Judy1989评论中确认您可以使用HOUR,但分两个步骤:

HOUR=sh(returnStdout: true, script: 'date +"%H"').trim() 
...
if ( HOUR.toInteger() > 16 )

您可以在此问题中看到此类延迟使用的示例。


推荐阅读