Github操作|基于分支名称的条件

Github操作|基于分支名称的条件,git,docker,github,github-actions,Git,Docker,Github,Github Actions,我目前正在第一次研究github的操作 我有一个创建docker映像并将其发布到docker Hub的过程 这一切似乎都工作得很好,但是当我努力掌握它的构建并用master分支标记时,我想用最新的分支标记它 我知道您可以在.yml文件中的步骤中执行条件语句,例如: step: if: github.ref == 'refs/heads/master' 但我想知道我是否可以内联使用,这样我就可以说 build . docker-image-name:${{ github.ref == 're

我目前正在第一次研究github的操作

我有一个创建docker映像并将其发布到docker Hub的过程

这一切似乎都工作得很好,但是当我努力掌握它的构建并用
master
分支标记时,我想用
最新的
分支标记它

我知道您可以在
.yml
文件中的步骤中执行条件语句,例如:

step:
  if: github.ref == 'refs/heads/master'
但我想知道我是否可以内联使用,这样我就可以说

build . docker-image-name:${{ github.ref == 'refs/head/master' ? 'latest' : github.ref }}

我知道这不是语法,但这就是想法,

只需少量的shell脚本就可以做到这一点。假设您知道将始终设置ref(即始终使用分支或标记),您可以编写以下代码:

build . docker-image-name:$(ref=${GITHUB_REF%refs/heads/master};echo ${ref:=latest})
或者,如果您想要不那么紧凑但更易于阅读的内容:

build . docker-image-name:$([ "$GITHUB_REF" = refs/heads/master ] && echo "latest" || echo "$GITHUB_REF")

如果您使用的是REF,则应通过您的操作自动设置
GITHUB\u REF
环境变量。

您可以通过少量的shell脚本来实现这一点。假设您知道将始终设置ref(即始终使用分支或标记),您可以编写以下代码:

build . docker-image-name:$(ref=${GITHUB_REF%refs/heads/master};echo ${ref:=latest})
或者,如果您想要不那么紧凑但更易于阅读的内容:

build . docker-image-name:$([ "$GITHUB_REF" = refs/heads/master ] && echo "latest" || echo "$GITHUB_REF")
如果使用REF,则应通过操作自动设置
GITHUB\u REF
环境变量