【问题标题】:terraform plan output too long for GitHub Actions commentGitHub Actions 评论的 terraform 计划输出太长
【发布时间】:2022-06-21 05:09:42
【问题描述】:

我有以下代码尝试在 GitHub 拉取请求上评论 2 个不同的 terraform plan 环境:

- name: "Run - Terraform Comment"
  uses: actions/github-script@0.9.0
  env:
      STDOUT: |
        ${{ env.terraform1 }}
       
        ${{ env.terraform2 }}
  with:
    github-token: ${{ secrets.GITHUB_TOKEN }}
    script: |
      github.issues.createComment({
        issue_number: context.issue.number,
        owner: context.repo.owner,
        repo: context.repo.repo,
        body: process.env.STDOUT
      })

但是,我收到以下错误:

参数列表太长

什么是可能减少来自terraform plan 的输出量的最佳做法,或者不是在 GitHub PR 上评论文本,而是创建一个文件并链接到该文件?

【问题讨论】:

    标签: terraform github-actions


    【解决方案1】:

    如果您使用低于 0.14 的 Terraform 版本,您可能需要考虑升级到 0.14+,因为它带有一个新的 Concise Diff Format,它只显示您的计划和远程状态之间的不同之处。

    如果您的计划仍然太长,如果您想在 PR 上查看计划而不打开单独的文件,则可能必须在单独的评论中添加每个计划。

    最坏的情况,我想您可以创建一个包含计划的文件,将其上传到 S3 之类的东西,然后在 PR 中创建一个链接,但其他两种方法会更好。

    【讨论】:

      【解决方案2】:

      对于在线查找的任何人,我发现了一些减小输出大小的不同方法。

      我建议通过运行切断terraform plan 输出的上半部分:

      out="$(terraform plan)"
      out="$(echo "${out}" | grep -v "Refreshing state")"
      

      您可以进一步tail 并在评论之前仅包含一定数量的输出(切掉顶部):

      out="$(echo -n "$out" | tail -c 12000)"

      将 terraform 计划隐藏在 details HTML 中使 GitHub 评论易于阅读。

      这是最终结果:

      - name: Plan
        id: terraformplan
        run: |
              out="$(terraform plan)"
              out="$(echo "${out}" | grep -v "Refreshing state")"
              out="$(echo -n "$out" | tail -c 12000)"
              echo "::set-output name=output::$out"
      
      - uses: actions/github-script@v5
      if: github.event_name == 'pull_request'
      with:
        github-token: ${{ secrets.GITHUB_TOKEN }}
        script: |
          const output = `Output \
          \-
          #### Terraform Plan 
          <details><summary>Show Plan</summary>
          \`\`\`terraform\n
          ${{ steps.terraformplan.outputs.output }}
          \n\`\`\`
          </details>
          
          *Pusher: @${{ github.actor }};
          github.rest.issues.createComment({
            issue_number: context.issue.number,
            owner: context.repo.owner,
            repo: context.repo.repo,
            body: output
          })     
      
      

      【讨论】:

        猜你喜欢
        • 2022-07-13
        • 2021-09-25
        • 2022-01-23
        • 2022-01-07
        • 2018-09-06
        • 2020-10-15
        • 1970-01-01
        • 2013-12-31
        • 2021-11-05
        相关资源
        最近更新 更多