当我使用“when”关键字时,为什么我的 Jenkinsfile 中会跳过某个阶段?

问题描述 投票:0回答:1

如果这有点难以表达,我深表歉意,如果需要更多详细信息,请告诉我。

我试图让一个函数在

requirements.txt
文件发生更改时运行

这是我的代码:

stage('Testing push of requirements') {
    when{ expression { return fileExists('build-scripts/pushreqs.sh') } }
    steps {
        requirementsPusher()
    }
}
stage('Create Jira Ticket') {
    when {changeset "requirements.txt"}
    steps{
        jiraTicketCreator()
    }
}
                              

第一个

stage
块不相关,但用于比较/参考。

当我按原样运行上述内容时,

Testing push of requirements
出现在构建中,但它完全跳过当前构建中的
Create Jira Ticket
阶段,其中对
requirements.txt

进行了更改

有什么想法吗?这可能是一个不正确的语法吗?

jenkins groovy continuous-integration jenkins-pipeline
1个回答
0
投票

可能

requirements.txt
文件不在根目录中,通常,变更集包含文件的完整限定路径,因此请尝试完善您的文件模式。下面的例子。

when { changeset "**/requirements.txt" }

您还可以打印变更集并查看您收到的内容。您可以像

currentBuild.changeSets

一样访问变更集
© www.soinside.com 2019 - 2024. All rights reserved.