我在github动作上苦苦挣扎。这似乎可行:
- name: Tag & Push docker image
run: |
docker push myrepo/myapp:${GITHUB_SHA::8}
但是,这不是:
- name: create release
uses: some-custom-action
with:
release_version: 1.0.0-${GITHUB_SHA::8}
也不是:
- name: create release
uses: some-custom-action
with:
release_version: "1.0.0-${{ env.GITHUB_SHA }}"
我对github动作完全陌生,对缺少文档等感到惊讶。
我只需要将变量传递到github动作的“ with”参数中即可。
如果有人能够帮助我弄清楚我在做什么错,我将非常感激!
答案 0 :(得分:7)
使用run
上下文时,您正在调用Shell。 (对于macOS和Linux主机,这是/bin/bash
。)因此,此步骤:
- name: Tag & Push docker image
run: |
docker push myrepo/myapp:${GITHUB_SHA::8}
您正在使用shell,${GITHUB_SHA::8}
将按字面意义传递给它。然后,Shell将对其进行解析,并使用其正常的解析规则对其进行插值。
但是,当您指定要运行的 action 而不是要执行的脚本时,您只是在调用其他程序。没有外壳,因此没有任何内容可以解析${GITHUB_SHA::8}
。
您可以使用${{ ... }}
来引用事物in the contexts that are available。例如,有一个env
上下文已打开,您可以设置键/值对并重新使用它们。 (但是env
上下文不是bash
shell的一部分,因此例如没有${{ env.PWD }}
。)
但是,在the github
context和environment variables that are set when you do run a shell之间有一个映射。 ${{ github.sha }}
上下文变量将在您的shell中设置为$GITHUB_SHA
环境变量。
因此在您的示例中,这应该可行:
- name: create release
uses: some-custom-action
with:
release_version: "1.0.0-${{ github.sha }}"