如何在github操作的“with”块中使用变量

Tro*_*ndh 6 github-actions

我在 github 操作上很挣扎。这似乎有效:

      - name: Tag & Push docker image
        run: |
          docker push myrepo/myapp:${GITHUB_SHA::8}
Run Code Online (Sandbox Code Playgroud)

但是,这不会:

      - name: create release
        uses: some-custom-action
        with:
          release_version: 1.0.0-${GITHUB_SHA::8}
Run Code Online (Sandbox Code Playgroud)

也不是这个:

      - name: create release
        uses: some-custom-action
        with:
          release_version: "1.0.0-${{ env.GITHUB_SHA }}"
Run Code Online (Sandbox Code Playgroud)

我对 github 操作完全陌生,对缺乏文档等感到有点惊讶。

我只需要将一个变量传递到 github 操作的“with”参数中。

如果有人能够帮助我弄清楚我做错了什么,我将不胜感激!

Edw*_*son 9

当您使用run上下文时,您正在调用一个 shell。(对于 macOS 和 Linux 主机,这是/bin/bash。)所以对于这一步:

- name: Tag & Push docker image
  run: |
    docker push myrepo/myapp:${GITHUB_SHA::8}
Run Code Online (Sandbox Code Playgroud)

你正在使用一个 shell${GITHUB_SHA::8}并将被逐字传递给它。然后,shell 将解析它并使用其正常的解析规则对其进行插值。

但是,当您指定要运行的操作而不是要执行的脚本时,您只是在调用不同的程序。没有外壳,所以没有什么可以解析${GITHUB_SHA::8}.

您可以使用${{ ... }}来引用可用上下文中的事物。例如,有一个env上下文可供您设置键/值对并重新使用它们。(但env上下文不是bashshell 的一部分,所以没有${{ env.PWD }}例如。)

这里一个映射,但是之间github范围内,并当您已设置环境变量运行shell。该${{ github.sha }}上下文变量会在你的shell作为设置$GITHUB_SHA环境变量。

所以在你的例子中,这应该有效:

- name: create release
  uses: some-custom-action
  with:
    release_version: "1.0.0-${{ github.sha }}"
Run Code Online (Sandbox Code Playgroud)