【问题标题】:How to pass the output of a bash command to Github Action parameter如何将 bash 命令的输出传递给 Github Action 参数
【发布时间】:2020-07-30 01:56:50
【问题描述】:

我有一个工作流程,在推送到 master 之后,我想创建一个版本并将资产上传到它。
我正在使用actions/create-release@v1actions/upload-release-asset@v1

我想将 bash 命令的输出传递给操作参数。但是我发现“$(command)”的语法不起作用。

如何将 bash 命令的输出传递给操作的参数。

例如,我想做这样的事情:

- name: Create Release
  id: create_release
  uses: actions/create-release@v1
  env:
    GITHUB_TOKEN: ${{ secrets.token }}
  with:
    tag_name: $(cat projectFile | grep -Po '(?<=Version>).*(?=</Version>)')

【问题讨论】:

    标签: bash github-actions


    【解决方案1】:

    更新:出于安全原因,此答案将无法作为 GitHub 禁用此语法。你应该改用environment files

    我会根据你的命令输出创建一个环境变量:

    - name: Retrieve version
      run: |
        echo ::set-env name=TAG_NAME::$(cat projectFile | grep -Po '(?<=Version>).*(?=</Version>)')
    

    然后像下面这样访问它:

    - name: Create Release
      id: create_release
      uses: actions/create-release@v1
      env:
        GITHUB_TOKEN: ${{ secrets.token }}
      with:
        tag_name: ${{ env.TAG_NAME }}
    

    【讨论】:

    • 等一下,有一个问题,我也想得到发行说明,其中有换行符,我使用cat projectFile | grep -Pzo '(?&lt;=PackageReleaseNotes&gt;)(.|\n)*(?=&lt;/PackageReleaseNotes&gt;)',但是只有第一行被设置在变量中。
    • 下面的链接应该可以帮助你处理多行:(github.community/t5/GitHub-Actions/…) 你会有类似的东西:run: | RELEASE_NOTES="$(grep -Pzo '(?&lt;=PackageReleaseNotes&gt;)(.|\n)*(?=&lt;/PackageReleaseNotes&gt;)' projectFile)" RELEASE_NOTES="${RELEASE_NOTES//'%'/'%25'}" RELEASE_NOTES="${RELEASE_NOTES//$'\n'/'%0A'}" RELEASE_NOTES="${RELEASE_NOTES//$'\r'/'%0D'}" echo "::set-env name=RELEASE_NOTES::$RELEASE_NOTES"
    【解决方案2】:

    现在set-env 已被弃用,您可以使用set-output 在此answer 中完成相同的操作

    - name: Retrieve version
      run: |
        echo "::set-output name=TAG_NAME::$(cat projectFile | grep -Po '(?<=Version>).*(?=</Version>)')"
      id: version
    
    
    - name: Create Release
      id: create_release
      uses: actions/create-release@v1
      env:
        GITHUB_TOKEN: ${{ secrets.token }}
      with:
        tag_name: ${{ steps.version.outputs.TAG_NAME }}
    

    参考资料:

    https://docs.github.com/en/free-pro-team@latest/actions/reference/workflow-commands-for-github-actions#using-workflow-commands-to-access-toolkit-functions

    How to save the output of a bash command to output parameter in github actions

    【讨论】:

      【解决方案3】:

      使用environment files

      steps:
        - name: Set the value
          id: step_one
          run: |
              echo "FOO=$(git status)" >> $GITHUB_ENV
        - name: Use the value
          id: step_two
          run: |
              echo "${{ env.FOO }}"
      

      【讨论】:

      • 感谢您提供此示例,因为我在文档的链接部分中看不到任何有用的示例代码。
      猜你喜欢
      • 2021-11-25
      • 2022-06-17
      • 2012-07-08
      • 2018-02-13
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-09-13
      • 1970-01-01
      相关资源
      最近更新 更多