Как обновить защиту веток с помощью Terraform без удаленной ветки в GITHUB? - PullRequest
0 голосов
/ 19 октября 2019

Мне нужно создать конвейеры CI / CD и защитить некоторые специфические ветви в GITHUB для большого количества репозиториев. Но если удаленная ветвь не существует, я получаю сообщение об ошибке.

Это работает, только если я уже создал удаленную ветвь в GITHUB. Но мне нужно сделать все это через Terraform или автоматическим способом.

# Configure the GitHub Provider
provider "github" {
  token        = "${var.github_token}"
  organization = "${var.github_organization}"
}

# Protect the CI/CD branch of the foo repository
resource "github_branch_protection" "foo" {
  repository     = "foo"
  branch         = "staging"
  enforce_admins = true

  required_pull_request_reviews {
   required_approving_review_count = 2
  }

}

Результат Terraform с удаленной веткой GITHUB:

github_branch_protection.foo: Creating...
github_branch_protection.foo: Creation complete after 3s [id=foo:staging]
Apply complete! Resources: 1 added, 0 changed, 0 destroyed.

(Фактическая ошибка) Результат Terraform без удаленной ветви GITHUB:

Error: PUT https://api.github.com/repos/jetprogramming/foo/branches/staging/protection: 404 Branch not found []

1 Ответ

0 голосов
/ 19 октября 2019

Вы не можете сделать это, так как защита филиала является собственностью филиала. Если ветвь не существует, вы не можете включить ее свойство защиты ветви, так как вы не можете установить свойство несуществующего объекта. Эта функция была введена, поскольку в потоке GitHub обычной практикой является защита главной ветви (которая создается при создании репозитория), поэтому единственный способ внести в нее изменения - это запрос на извлечение, который должен быть сначала одобрен.

Что вы можете сделать сейчас (в качестве временного решения) - это сначала создать репозиторий (с помощью terraform), затем создать ветки (с некоторым сценарием, использующим github api), а затем применить защиту включенных веток с помощью terraform.

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

...