【问题标题】:GitHub Actions to use variables set from shellGitHub Actions 使用从 shell 设置的变量
【发布时间】:2021-09-23 15:26:12
【问题描述】:

目标:

在 GitHub Actions 中,从 shell 动态定义我的提交消息:

      - name: Commit changes
        uses: EndBug/add-and-commit@v7
        with:
          message: "added on $(date -I)"

但是,我似乎必须定义一个环境变量然后使用它。我正在关注How do I set an env var with a bash expression in GitHub Actions? 和其他帮助文件,如this,但仍然不知道如何使用我之前定义的这种环境变量。这是我尝试但失败的方法:

      - name: Checkout repo
        uses: actions/checkout@v2
      - run: |
          touch sample.js
          echo "today=$(date -I)" >> $GITHUB_ENV

      - name: Commit changes
        uses: EndBug/add-and-commit@v7
        with:
          message: "added on ${today}"

如何让它发挥作用?

【问题讨论】:

    标签: shell environment-variables github-actions


    【解决方案1】:

    如果您想在另一个任务的参数中引用使用$GITHUB_ENV 环境文件设置的环境变量,您需要使用工作流语法来访问顶级env 键的相应键,如下所示:

    - name: Commit changes
      uses: EndBug/add-and-commit@v7
      with:
        message: "added on ${{env.today}}"
    

    您可以从正在运行的任务内部将其作为标准环境访问,例如:

    - name: Show an environment variable
      run: |
          echo "today is $today"
    

    在该示例中,表达式 $today 由外壳扩展, 它查找名为today 的环境变量。你也可以 写:

    - name: Show an environment variable
      run: |
          echo "today is ${{env.today}}"
    

    在这种情况下,扩展将由 github 的工作流执行 引擎run 命令执行之前,所以shell 会看到一个 类似于 echo "today is 2021-07-14" 的文字命令。


    您可以使用output parameters 完成类似的操作,如下所示:

    - name: "Set an output parameter"
      id: set_today
      run: |
        echo "::set-output name=today::$(date -I)"
    
    - name: Commit changes
      uses: EndBug/add-and-commit@v7
      with:
        message: "added on ${{steps.set_today.outputs.today}}"
    

    使用输出参数更细化(因为它们是 由步骤 id 限定),它们不会出现在环境中 由您的任务启动的进程数。

    【讨论】:

    • 工藤!回答了我想问但不知道它们存在的问题。
    猜你喜欢
    • 1970-01-01
    • 2022-11-20
    • 1970-01-01
    • 2020-10-10
    • 2023-03-30
    • 2020-10-03
    • 1970-01-01
    • 2021-11-03
    • 2020-12-07
    相关资源
    最近更新 更多