jenkins - 从 Jenkins 声明式管道设置构建名称和描述

标签 jenkins jenkins-pipeline

我想从 Jenkins 声明式管道设置构建名称和描述,但找不到正确的方法。我尝试在管道后使用环境括号,在代理括号中使用节点括号等。我总是收到语法错误。

我的 Jenkinsfile 的最后一个版本是这样的:

pipeline {  
    stages {
        stage("Build") {
            steps {
                echo "Building application..."
                bat "%ANT_HOME%/bin/ant.bat clean compile"
                currentBuild.name = "MY_VERSION_NUMBER"
                currentBuild.description = "MY_PROJECT MY_VERSION_NUMBER"
            }
        }
        stage("Unit Tests") {
            steps {
                echo "Testing (JUnit)..."
            echo "Testing (pitest)..."
                bat "%ANT_HOME%/bin/ant.bat run-unit-tests"
            }
        }
        stage("Functional Test") {
            steps {
                echo "Selenium..."
            }
        }
        stage("Performance Test") {
            steps {
                echo "JMeter.."
            }
        }
        stage("Quality Analysis") {
            steps {
                echo "Running SonarQube..."
                bat "%ANT_HOME%/bin/ant.bat run-sonarqube-analysis"
            }
        }
        stage("Security Assessment") {
            steps {
                echo "ZAP..."
            }
        }
        stage("Approval") {
            steps {
            echo "Approval by a CS03"
            }
        }
        stage("Deploy") {
            steps {
                echo "Deploying..."
            }
        }
    }
    post {      
        always {
            junit '/test/reports/*.xml'
        }
        failure {
            emailext attachLog: true, body: '', compressLog: true, recipientProviders: [[$class: 'CulpritsRecipientProvider'], [$class: 'DevelopersRecipientProvider']], subject: '[JENKINS] MY_PROJECT build failed', to: '...recipients...'
        }
        success {
            emailext attachLog: false, body: '', compressLog: false, recipientProviders: [[$class: 'DevelopersRecipientProvider']], subject: '[JENKINS] MY_PROJECT build succeeded', to: '...recipients...'
        }
    }       
}

错误是:
org.codehaus.groovy.control.MultipleCompilationErrorsException: startup failed:
WorkflowScript: 11: Expected a step @ line 11, column 5.
                currentBuild.name = "MY_VERSION_NUMBER"
       ^

WorkflowScript: 12: Expected a step @ line 12, column 5.
                currentBuild.description = "MY_PROJECT MY_VERSION_NUMBER"
       ^

理想情况下,我希望能够从 build.properties 文件或 Jenkins 构建日志中读取 MY_PROJECT 和 MY_VERSION_NUMBER。任何有关该要求的指导也将不胜感激。

更新

根据我在下面的答案,以下工作有效:
stage("Build") {
    steps {
        echo "Building application..."
        bat "%ANT_HOME%/bin/ant.bat clean compile"

        script {
            def props = readProperties  file: 'build.properties'
            currentBuild.displayName = "v" + props['application.version']
        }
    }

现在,通过读取 build.properties 文件,在管道期间自动设置构建版本。

最佳答案

我认为这会做你想做的。我能够在 script 内完成它堵塞:

pipeline {
    stages {
        stage("Build"){
            steps {
                script {
                    currentBuild.displayName = "The name."
                    currentBuild.description = "The best description."
                }
                ... do whatever.
            }
        }
    }
}

该脚本是一种脱离声明性管道的逃生舱口。可能有一种声明式的方法来做到这一点,但我找不到它。还有一张纸条。我想你想要 currentBuild.displayName而不是 currentBuild.name在 Jenkins 全局变量的文档中,我在 currentBuild 下没有看到 name 属性。

关于jenkins - 从 Jenkins 声明式管道设置构建名称和描述,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43639099/

相关文章:

java - 如何使用 Java 发布经过身份验证的 Jenkins 作业

maven - 使用 Jenkins 和 kubernetes 在 CI/CD 管道中实现反馈循环

python - 使用 Jenkins 中的管道执行 pytest

jenkins - Jenkinsfile 启动代理中的条件步骤

jenkins - 附加到作业属性

debian - 从 Jenkins 将 Debian 部署到 Artifactory 仓库

continuous-integration - 在持续集成中处理多个分支

node.js - 在 Jenkins 上运行时 cucumber-js 解析错误

maven - Jenkins、Junit 和 Flaky 测试处理程序插件

jenkins - 如何使用 Jenkinsfile 更好地可视化大型构建步骤的工作?