【问题标题】:Setting git committer's name to environment variable in Jenkins declarative pipeline在 Jenkins 声明性管道中将 git 提交者的名称设置为环境变量
【发布时间】:2019-08-08 04:03:53
【问题描述】:

在 jenkins 声明式管道中,我试图获取 git committer 的名称,然后将其设置为 en 环境变量。获取部分工作正常,但是,无论我尝试哪种语法,它都不起作用。

例如我试过script块:

script {
    env.GIT_CULPRIT = sh('git log --format="%ae" | head -1 | awk -F"@" \'{print $1}\'')
    echo "culprit: ${env.GIT_CULPRIT}"
}

输出:

[管道] 回显 罪魁祸首:空

尝试了environment 块(在dir 块内):

environment {
    env.GIT_CULPRIT = sh(script: 'git log --format="%ae" | head -1', returnStdout: true)
    echo "culprit: ${env.GIT_CULPRIT}"
}

输出:

WorkflowScript:33:缺少必需参数:“名称”@ 第 33 行,第 21 列。 环境 { ^

WorkflowScript:33:缺少必需参数:“值”@ 第 33 行,第 21 列。 环境 { ^

【问题讨论】:

    标签: jenkins jenkins-plugins


    【解决方案1】:

    从“Jenkins Pipeline - set and use environment variables”,第二种方法应该可行。

    除了:

    上述方法仅在环境部分位于“stage”内时有效,但会在阶段外为WORKSPACE 生成“null”。

    请注意,在步骤部分中,该环境变量被引用为${VAR},而不是${env.VAR}

    【讨论】:

    • 问题是,我无法从dir 外部执行git log --format="%ae",因为它应该从初始化的目录中执行。
    • @Waqas Coud你把dir中执行的git log的结果赋值给一个变量,然后在一个stage中定义一个环境变量,用那个局部变量的值?
    猜你喜欢
    • 1970-01-01
    • 2021-05-24
    • 1970-01-01
    • 2018-01-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-01-11
    • 2019-08-05
    相关资源
    最近更新 更多