【问题标题】:GitHub Action: How to get value from expression evaluation and assign it to the environment variableGitHub Action:如何从表达式评估中获取值并将其分配给环境变量
【发布时间】:2022-08-18 06:59:50
【问题描述】:

环境表达式通常直接分配,如下例所示

  - name: set up env var
    env:
      TAG: v1.2.3
    run: echo $TAG

但是我怎样才能从 shell 脚本评估中获得价值呢?例如在我的终端中,我可以通过git describe --exact-match --tags $(git log -n1 --pretty=\'%h\') 获取当前标签

但是当我尝试将此脚本放入环境中时,如下所示

  - name: set up env var
    env:
      TAG: $(git describe --exact-match --tags $(git log -n1 --pretty=\'%h\'))
    run: echo $TAG 

回显打印出$(git describe --exact-match --tags $(git log -n1 --pretty=\'%h\')),这意味着它没有被评估而是被视为一个字符串。

如何获取 git describe --exact-match --tags $(git log -n1 --pretty=\'%h\') 的值并将其分配给环境变量 TAG ?

    标签: github-actions


    【解决方案1】:

    您可以使用以下方法将变量添加到GITHUB_ENV:echo "{name}={value}" >> $GITHUB_ENV

    这允许为作业中接下来运行的任何操作创建或更新环境变量。创建或更新环境变量的操作无权访问新值,但作业中的所有后续操作都可以访问。环境变量区分大小写,您可以包含标点符号。

    Source

    因此,您的工作流程可能如下所示:

     - name: set up env var
        run: echo "TAG=$(echo git describe --exact-match --tags $(git log -n1 --pretty='%h'))" >> $GITHUB_ENV
     - name: use env var
        run: echo ${{ env.TAG }}
    

    【讨论】:

    • 出现错误:无法插入字符串'echo "TAG=$(echo git describe --exact-match --tags $(git log -n1 --pretty='%h'))"
    • 我试过here 并没有收到这个错误(我只是没有设置标签)。工作流实现是here,我只是分命令来一步步检查。
    • 我知道为什么它不适合我。我在同一步骤中将 echo 命令与环境设置放在一起。您不能在同一步骤中以正确的方式使用它
    • 我想我必须在我的答案中删除一个回声,对吧?
    • 它解决了我的问题并完美运行。
    猜你喜欢
    • 1970-01-01
    • 2018-11-02
    • 2019-05-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-08-07
    • 2021-10-08
    • 1970-01-01
    相关资源
    最近更新 更多