0

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

4

1 回答 1

2

使用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}^.

于 2019-01-11T09:24:32.357 回答