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

时间:2020-03-13 15:48:04

标签: github-actions

我在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”参数中即可。

如果有人能够帮助我弄清楚我在做什么错,我将非常感激!

1 个答案:

答案 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 contextenvironment 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 }}"