Как в GitHub Actions запустить план терраформирования при открытии PR и запустить приложение после слияния PR?

Я на GitHub Enterprise 3.6.2

Я пытаюсь разработать следующий рабочий процесс в действиях GitHub:

  • Открытие PR с изменениями в Terraform Codebase
  • Запускаются действия Lint и Terraform Plan
  • После утверждения и объединения PR запускается Terraform Apply.

В настоящее время я разработал рабочий процесс «планирования», который запускается при PR, и рабочий процесс «применения», который запускается при объединении PR. Проблема возникает из-за попытки взять выходной файл плана и передать его на шаг применения. До сих пор я не смог найти разумный способ заставить эту работу работать.

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

Мысль о том, как я мог бы сделать эту работу?

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

Ответы 1

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

В идеале вы должны повторно запустить план и применить слияние к основному, поскольку легко могут быть другие слияния, и поэтому ваш «PR-план» будет устаревшим.

В противном случае загрузите выходные данные плана в хранилище (например, S3), упорядоченные по имени/дате PR, а затем загрузите последний план по слияниям перед подачей заявки.

Да, я рассматривал оба этих варианта (и не полностью их списал). У нас очень маленькая команда, поэтому вероятность других PR будет минимальной, а то и вовсе отсутствующей. Основная причина такого подхода — привязать проверку извлечения к утверждению развертывания. Загрузка в хранилище, вероятно, будет моим лучшим вариантом для достижения этой цели, но сначала я хотел посмотреть, есть ли еще какие-либо творческие решения. Я подозреваю, что это будет лучший ответ.

Chris Batchelor 14.11.2022 23:00

Может быть, взгляните, как это делает Atlantis

OneCricketeer 14.11.2022 23:15

Большое спасибо за подсказку об Атлантиде. Они делают что-то очень похожее на то, что я искал.

Chris Batchelor 15.11.2022 16:22

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