获取 bash 命令的输出并将其放入 yaml 中的消息中以进行 GitHub 操作?

Posted

技术标签:

【中文标题】获取 bash 命令的输出并将其放入 yaml 中的消息中以进行 GitHub 操作?【英文标题】:Taking a bash command's output and putting it into a message in yaml for GitHub actions? 【发布时间】:2021-10-22 04:40:11 【问题描述】:

我有以下 Github Action 工作流程,旨在从 coverage.txt 文件中读取我们的代码覆盖范围并将覆盖范围打印为注释。

name: Report Code Coverage

on:
  pull_request:

jobs:
  test:
    runs-on: ubuntu-latest

    steps:
      - uses: actions/checkout@v2

      - name: Use Node.js 12.x
        uses: actions/setup-node@v1
        with:
          node-version: 12.x

      - name: Install dependencies
        run: npm ci

      - name: Run tests
        run: npm run test:coverage

      ## I need help around here, as test:coverage generates a file and I need to get a value from a file

      - uses: mshick/add-pr-comment@v1
        with:
          message: |
            **Where I want the code coverage value to go**
            ????
            !
          repo-token: $ secrets.GITHUB_TOKEN 
          repo-token-user-login: 'github-actions[bot]' # The user.login for temporary GitHub tokens
          allow-repeats: false # This is the default

我正在努力获取文件的输出,我可以使用 bash 使用 awk '/^Lines/ print $2 ' < coverage.txt 获得该输出(不确定是否有更好的替代方法)并将其插入到当前只是打招呼的消息中。

我找到了这个article on yaml variables,但是当我将其中一些代码添加到我自己的文件中时,GitHub 操作不再识别它(这是我知道测试 yaml 的唯一方法)。通常它会在某处失败并给我一个错误,但经过多次尝试后,唯一有效的方法就是将其删除。

我很可能遗漏了一些明显的东西,因为我不太了解 yaml,甚至某些关键词可能是什么。

或者,将文件的内容转储到消息中是否更容易?这也是可以接受的。

【问题讨论】:

【参考方案1】:

您可以创建一个步骤来获取输出变量的覆盖率,然后下一步可以访问该变量。

请注意,要使用此方法,您需要为步骤和 id 以及设置的输出变量指定一个变量名称,以便您可以在同一作业中的后续步骤中访问它。

下面是您的工作流程示例,但如果您想在此处查看正在运行的演示,请参阅 repo https://github.com/meroware/demo-coverage-set-output

  - name: Run tests
    run: npm run test:coverage
  - name: Get coverage output
    id: get_coverage
    run: echo "::set-output name=coverage::$(awk '/^Lines/  print $2 ' < test.txt)"
  - uses: mshick/add-pr-comment@v1
    with:
      message: |
        Coverage found $steps.get_coverage.outputs.coverage
        ?
        !
      repo-token: $ secrets.GITHUB_TOKEN 
      repo-token-user-login: 'github-actions[bot]' # The user.login for temporary GitHub tokens
      allow-repeats: false # This is the default

如果您想了解更多有关此主题的信息,我会制作很多 github actions tutorials here。干杯!!

【讨论】:

以上是关于获取 bash 命令的输出并将其放入 yaml 中的消息中以进行 GitHub 操作?的主要内容,如果未能解决你的问题,请参考以下文章

获取Symfony命令的输出并将其保存到文件中

在bash中使用“<”有什么用处

按子字符串拆分字符串并将其放入数组bash

Bash:找到某个分区所在的磁盘并将结果放入变量中

从 alias 命令中获取第一个参数并将其插入到文件扩展名中

使用 Afnetworking 获取 UIImageView 并将其放入数组中