我正在使用 Renovate 通过 git Trailer 生成 PR。这些 PR 始终只包含单个提交。我已将 Renovate 配置为在提交正文中嵌入更新列表,现在我想在 Github 操作步骤中获取该列表。
目前,我设置
GITHUB_SHA={{github.event.pull_request.head.sha}}
,然后使用 git log ${GITHUB_SHA}^1..${GITHUB_SHA}^2
和正确的格式参数,从而提取预告片。
它有效,但看起来很脆弱。它需要对合并提交父级进行排序。它要求存在合并提交。我希望该步骤可重复使用,并且即使结账操作与替代参考一起使用也能正常工作。目前,鉴于它在合并提交上运行,它会中断。 如何更简洁地从 Renovate 生成的 PR 中提取 git 预告片?
我当前的步骤,看起来太不优雅(来自
来源):
- name: Extract New-Versions git trailer from Renovate
if: ${{ github.event_name == 'pull_request' }}
env:
GITHUB_SHA: "{{ github.event.pull_request.head.sha }}"
run: |
echo 'packages: .' > cabal.project
for constraint in $(git log "--format=%(trailers:key=New-Versions,valueonly=true)" ${GITHUB_SHA}^1..${GITHUB_SHA}^2)
do echo "constraints: $constraint" >> cabal.project
done
env
部分没有任何效果,这就是为什么 GITHUB_SHA 没有按预期引用拉取请求头。
如果您使用git log ${{ github.event.pull_request.head.sha }} -1
而不是使用环境变量,您将获得相同的结果,而无需担心合并提交。当然,它与检出哪个提交无关,因为它指定了要操作的确切提交。
但请记住,您需要设置fetch-depth
,例如设置为
0
。否则它不会知道 PR 头提交 SHA。