0

我正在为我的项目在 Jenkins 中的管道作业使用声明性管道语法。我想用

pipeline {
    agent any

    environment {
        VERSION = VersionNumber projectStartDate: '', versionNumberString: '${BUILD_YEAR}.${BUILD_MONTH}.${BUILDS_TODAY}.${BUILD_NUMBER}', versionPrefix: 'v1.', worstResultForIncrement: 'SUCCESS'
    }

    stages {
        stage('Version Update'){
            steps{
                echo '${VERSION}'
                writeFile file: 'version.ini', text: '%VERSION%'
            }
        }
    }
}

我尝试 ${VERSION},%VERSION 打印版本号,但它总是打印 echo 中的内容,writeFile 步骤中的文本。(例如 %VERSION%)

我可以使用我使用的格式在侧面菜单中看到版本。

在此处输入图像描述

4

1 回答 1

1

在 groovy 中,使用单引号的字符串'不会被插值。您应该改用双引号,并$在要替换的每个变量前面使用(如果要将 a 保留$在字符串中,则需要使用 将其转义\)。

因为writeFile它是一个管道命令,所以它在 jenkins master 上作为 groovy 运行,而不是在构建节点上运行。这就是为什么你需要这样对待它(双引号和$)。管道{代理任何

    environment {
        VERSION = VersionNumber projectStartDate: '', versionNumberString: "${BUILD_YEAR}.${BUILD_MONTH}.${BUILDS_TODAY}.${BUILD_NUMBER}", versionPrefix: 'v1.', worstResultForIncrement: 'SUCCESS'
    }

    stages {
        stage('Version Update') {
            steps {
                echo "${VERSION}"
                writeFile file: 'version.ini', text: "$VERSION"
            }
        }
    }
}

注意:我不使用版本号插件,所以我无法测试这个确切的代码

于 2018-09-13T17:49:46.630 回答