Как я могу заставить terraform stdout транслироваться в действии github?

Когда я запускаю команды terraform со своего локального компьютера, stdout и stderr процесса передаются в мой терминал во время его работы.

Когда я запускаю те же самые команды для одного и того же шаблона terraform в действии Github, стандартный вывод и стандартный вывод не будут отображаться до самого конца команды, где они внезапно все выгрузятся.

Это очень расстраивает, так как иногда выполнение может занять очень много времени, и у нас есть особая проблема, когда кажется, что один из шагов действительно может зависнуть, но я не могу сказать, какой именно, поскольку выходные данные не передаются в потоковом режиме, и если вы отмените действие github, github съест весь последующий вывод, поэтому невозможно увидеть, что зависает.

Как я могу заставить terraform передавать весь свой вывод в потоковом режиме, как это происходит локально, во время работы внутри действия github?

Пожалуйста, поделитесь кодом

Helder Sepulveda 10.03.2024 00:46

Попробуйте stdbuf -o0 -e0 terraform apply ... и посмотрите, сработает ли это. Используемая оболочка — Bash. Вы используете раннер Ubuntu? Ваш местный тоже такой же?

Azeem 10.03.2024 06:29

Оказывается, прямо сейчас в настройке действия терраформирования есть ошибка, вы можете установить wrapper_enabled: false, чтобы ее исправить. Подробности о проблеме github.com/hashicorp/setup-terraform/issues/395

justin.m.chase 11.03.2024 21:23
Стоит ли изучать PHP в 2026-2027 годах?
Стоит ли изучать PHP в 2026-2027 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Приемы CSS-макетирования - floats и Flexbox
Приемы CSS-макетирования - floats и Flexbox
Здравствуйте, друзья-студенты! Готовы совершенствовать свои навыки веб-дизайна? Сегодня в нашем путешествии мы рассмотрим приемы CSS-верстки - в...
Тестирование функциональных ngrx-эффектов в Angular 16 с помощью Jest
В системе управления состояниями ngrx, совместимой с Angular 16, появились функциональные эффекты. Это здорово и делает код определенно легче для...
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
2
3
275
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Вот тест, который я только что завершил:

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

что касается терраформирования, я в основном занимаюсь 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

Мы не видим проблем:

безумие... можешь ли ты удалить стандартную оболочку bash? Интересно, есть ли в этом разница между sh и bash? Если нет, то я скажу, что мы не используем последний образ Ubuntu, у нас есть локальный раннер, который очень похож, но немного отличается. Возможно ли, что что-то может отличаться от самого бегуна?

justin.m.chase 11.03.2024 16:31

Я изменил свое действие, чтобы оно было основано на nodejs20, и оно унаследовало стандартный вывод / stderr, и оно все еще делает то же самое. Существуют ли какие-либо известные переменные окружения для управления этим поведением?

justin.m.chase 11.03.2024 17:16

@justin.m.chase Я не эксперт в этой теме ... но теперь у вас есть рабочий образец, поработайте над ним и посмотрите, где ваши вещи ломаются

Helder Sepulveda 11.03.2024 17:25

Мне интересно, имеет ли базовый бегун Ubuntu TF_LOG env var, установленный по умолчанию, а у меня нет? Можете ли вы экспортировать переменную среды TF_LOG? Я попытаюсь установить это явно и посмотреть, не будет ли по умолчанию ничего не использоваться в Linux. На моей локальной машине он не установлен, но потоковая передача данных работает должным образом.

justin.m.chase 11.03.2024 17:49

Оказывается, разница заключалась в том, что вы используете @v1 setup-terraform, а я использую v3. Существует «обертка», в которой в настоящее время есть ошибки, которую вы можете отключить, и потоковая передача снова будет работать, как и ожидалось. Подробности об ошибке можно найти здесь: github.com/hashicorp/setup-terraform/issues/395

justin.m.chase 11.03.2024 21:22

Другие вопросы по теме