如何让 terraform stdout 在 github 操作中进行流式传输?

问题描述 投票:0回答:1

当我从本地计算机运行 terraform 命令时,进程的 stdout 和 stderr 在运行时流入我的终端。

当我在 Github Action 中针对完全相同的 terraform 模板运行完全相同的命令时,直到命令的最后才会显示 stdout 和 stderr,此时它将突然转储所有内容。

这是非常令人沮丧的,因为有时它可能需要很长时间才能运行,而且我们有一个特殊的问题,其中一个步骤实际上可能会挂起,但我无法分辨是哪个步骤,因为输出不是流式传输的,如果你取消 github 操作,github 将吃掉所有后续输出,因此无法查看挂起的内容。

如何让 terraform 在 github 操作内部运行时像在本地一样传输其所有输出?

terraform continuous-integration github-actions stdout
1个回答
0
投票

这是我刚刚完成的测试:

name: 'Terraform'

on:
  push:
    branches:
    - master
  pull_request:

jobs:
  terraform:
    name: 'Terraform'
    runs-on: ubuntu-latest

    defaults:
      run:
        shell: bash

    steps:
    - name: Checkout
      uses: actions/checkout@v2
      with:
        fetch-depth: 0

    - name: Setup Terraform
      uses: hashicorp/setup-terraform@v1

    - name: Terraform Version
      run: terraform version -json

    - name: Terraform Init
      run: |
        cd TerraForm/time_sleep/
        terraform init

    - name: Terraform Apply
      run: |
        cd TerraForm/time_sleep/
        terraform apply -auto-approve

在 terraform 方面,我主要做 time_sleep:

resource "time_sleep" "wait" {
  count           = 15
  create_duration = "${count.index + 1}s"
}

完整代码在这里:
https://github.com/heldersepu/hs-scripts/tree/master/TerraForm/time_sleep

我们没有看到任何问题:

© www.soinside.com 2019 - 2024. All rights reserved.