如何在 gerrit 触发的 jenkins 管道作业中获取提交的父 ID

How to get parent ID for a commit in a gerrit triggered jenkins pipeline job

在管道代码中,我需要检索由 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 无法解释和转义“^”。任何指点都会有很大帮助!

使用git rev-parse代替echo,假设在bash中:

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

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