如何获得github工作流的短sha?
我正在GitHub中创建一个工作流,它创建并使用docker映像。因此,我已使用此docker图像的全局环境变量启动了我的工作流文件,该图像对我工作流中的所有作业都可见:如何获得github工作流的短sha?,git,docker,github-actions,Git,Docker,Github Actions,我正在GitHub中创建一个工作流,它创建并使用docker映像。因此,我已使用此docker图像的全局环境变量启动了我的工作流文件,该图像对我工作流中的所有作业都可见: name: continuous integration on: push: branches: - '**' env: IMAGE: docker.pkg.github.com/${{ github.repository }}/jactor-persistence:${{ github.sha
name: continuous integration
on:
push:
branches:
- '**'
env:
IMAGE: docker.pkg.github.com/${{ github.repository }}/jactor-persistence:${{ github.sha }}
我想用头提交的短sha替换${{github.sha}
,与以下命令的结果相同git rev parse--short head
这可能吗?它似乎不可用:仅包括
github.sha
作为完整提交sha(触发工作流运行)
您需要以某种方式计算所需的字符串(只选择${{github.sha}
的前n个字符)
这意味着您可以:
- 定义一个变量,如中所示
- 将其写入磁盘
在每个步骤中使用您的cat$my_var
var
env
映射
这些环境变量将与层次结构中任何较低一级定义的env
合并
见:
- name: Set outputs
id: vars
run: echo "::set-output name=sha_short::$(git rev-parse --short HEAD)"
- name: Check outputs
run: echo ${{ steps.vars.outputs.sha_short }}
您还可以使用短sha设置环境变量:
- name: Add SHORT_SHA env property with commit short sha
run: echo "SHORT_SHA=`echo ${GITHUB_SHA} | cut -c1-8`" >> $GITHUB_ENV
SHORT\u SHA
可以像任何其他环境变量一样使用,例如:
- name: My step
run: myscript ${SHORT_SHA}
对我的答案进行了很好的补充。问题是知道7足够短,而且不太短:但它确实如此:这就是documents/Declusted。回答很好,但在windows上运行时无法正常工作。需要引用echo字符串。
echo::set output name=sha_short:$(git rev parse--short HEAD)
谢谢@MaxGhost。更新了答案。哦,还值得一提的是,PR期间头部的提交哈希实际上指的是合并提交,这是将PR分支合并到目标分支的结果。CI在该合并上运行,以确保即使考虑到可能的合并冲突,构建也不会中断。这是但是,当CI在主线分支上运行时,右提交散列。通常没有问题,但这可能取决于用例。是的……这是我自己得出的结论。但是这是否可以在全局变量的表达式中执行(在这里的某处${github.sha}
),以避免在所有需要variable@jactor-瑞斯当然肯定是全局的,但彼得雷万斯使用了一个变量…..我现在知道了,但我希望有一个全局环境变量,以避免在我的工作中重复代码…@jactor瑞斯将使用环境映射:请参阅上面我编辑的答案。是的…我使用的是workflow环境(env
位于工作流文件顶部),因此它可用于工作流中的所有作业。但是在工作流阶段,是否可以将${{github.sha}}
操作为短sha,或者我必须在作业中复制此逻辑?