如何在 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}^
.
在管道代码中,我需要检索由 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}^
.