如何在Gerrit触发的詹金斯管道作业中获取提交的父ID

时间:2019-01-11 08:49:20

标签: git jenkins parent gerrit gerrit-trigger

在管道代码中,我需要检索由gerrit触发器触发的jenkins管道作业中的提交的父ID。

我试图从gerrit触发器环境变量$ GERRIT_PATCHSET_REVISION中获取父ID

        echo "$GERRIT_PATCHSET_REVISION^"
        echo "${GERRIT_PATCHSET_REVISION}^"
        echo "${env.GERRIT_PATCHSET_REVISION}^"
        echo "$GERRIT_PATCHSET_REVISION^^"
        echo "${GERRIT_PATCHSET_REVISION}^^"
        echo "${env.GERRIT_PATCHSET_REVISION}^^"

实际结果: 当前提交的SHA1值,GERRIT_PATCHSET_REVISION值,后跟1或2个脱字号(“ ^”)

预期结果: 父提交的SHA1值

Jenkins无法解释和转义“ ^”。任何指针都会有很大帮助!

1 个答案:

答案 0 :(得分:1)

假设使用bash,请使用git rev-parse代替echo

firstparent=$(git rev-parse ${GERRIT_PATCHSET_REVISION}^)
echo ${firstparent}

要成功检索父提交,补丁集修订的提交对象必须可从本地git存储库中获得。如果该代码段在存储库外部运行,请使用git --git-dir=<path_to_repo_.git> rev-parse ${GERRIT_PATCHSET_REVISION}^