当我从本地计算机运行 terraform 命令时,进程的 stdout 和 stderr 在运行时流入我的终端。
当我在 Github Action 中针对完全相同的 terraform 模板运行完全相同的命令时,直到命令的最后才会显示 stdout 和 stderr,此时它将突然转储所有内容。
这是非常令人沮丧的,因为有时它可能需要很长时间才能运行,而且我们有一个特殊的问题,其中一个步骤实际上可能会挂起,但我无法分辨是哪个步骤,因为输出不是流式传输的,如果你取消 github 操作,github 将吃掉所有后续输出,因此无法查看挂起的内容。
如何让 terraform 在 github 操作内部运行时像在本地一样传输其所有输出?
这是我刚刚完成的测试:
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