404 При создании github_repository_webhook с помощью Terraform

Мы перешли на использование integrations/githubпровайдера, и с тех пор мы начали получать 404 при попытке создать github_repository_webhook с помощью Terraform. Я полагаю, что у нас есть все необходимые части, требуемые на основе документов, но API uri в журналах отсутствует org. ПРИМЕЧАНИЕ. Настоящие названия организаций и репозиториев были отредактированы.

main.tf

      resource "aws_codepipeline_webhook" "codepipeline_webhook" {
  name            = "test-github-webhook"
  authentication  = "GITHUB_HMAC"
  target_action   = "CC"
  target_pipeline = aws_codepipeline.pipeline.name

  authentication_configuration {
    secret_token = data.aws_secretsmanager_secret_version.github_token.secret_string
  }

  filter {
    json_path    = "$.ref"
    match_equals = "refs/heads/{Branch}"
  }

  tags = merge(var.tags, {
    Name = "test-github-webhook"
  })
}

# Wire the CodePipeline webhook into a GitHub repository.
resource "github_repository_webhook" "github_webhook" {
  repository = "my_repo"

  configuration {
    url          = aws_codepipeline_webhook.codepipeline_webhook.url
    content_type = "json"
    insecure_ssl = true
    secret       = data.aws_secretsmanager_secret_version.github_token.secret_string
  }

  events = ["push"]
}

бэкенд.tf

      terraform {
  required_providers {
    aws = {
      source  = "hashicorp/aws"
      version = "3.65.0"
    }
    github = {
      source  = "integrations/github"
      version = "~> 4.0"
    }
  }
}

provider "github" {
  token    = data.aws_secretsmanager_secret_version.github_token.secret_string
  owner    = "my_org"
  base_url = "https://github.com/my_org/" # we have github enterprise
}

Ошибка при создании:

      Error: POST https://api.github.com/repos//my_repo/hooks: 404 Not Found []

Обратите внимание, что организация полностью отсутствует в URL-адресе. Я также пытался включить имя организации в ресурс github_repository_webhook, но URL-адрес по-прежнему содержит двойную косую черту и 404:

      Error: POST https://api.github.com/repos//my_org/my_repo/hooks: 404 Not Found []

Когда я полностью удаляю исходный код и версию провайдера, terraform возвращается к hashicorp/terraformsource и веб-хук создается без проблем. Кто-нибудь еще столкнулся с этой проблемой?

3 ответа

Вы, вероятно, уже решили эту проблему, но на всякий случай есть другие, кто сталкивается с этой проблемой.

Это решение предполагает, что вы используете версию Terraform >=0.13 и новую интеграцию Terraform GitHub.

Убедитесь, что все модули, использующие провайдер, определили required_providersблокировать. Если этот блок не определен в модуле, то кажется, что используется (устаревший) поставщик «hashicorp/github», даже если вы настроили этот блок в корневом модуле, где вы определили githubпровайдер. (Это то, что вызывало у меня ошибку.) То есть убедитесь, что вы определили следующее в каждом из ваших модулей:

      terraform {
  required_providers {
    github = {
      source  = "integrations/github"
      version = "~> 4.0"
    }
  }
}

Предполагая, что вы сделали все вышеперечисленное, попробуйте еще раз проверить, правильно ли вы настроили интеграцию с GitHub . Некоторые заметные ошибки:

  • При обновлении с hashicorp/githubк integrations/github, использовать terraform state replace-provider. В противном случае Terraform по-прежнему будет требовать, чтобы старый провайдер взаимодействовал с файлом состояния.
  • В organizationаргумент устарел в пользу ownerаргумент (должен вести себя так же, но на всякий случай).

Каков результат terraform providers? Я подозреваю, что у вас есть обе версии провайдера github в вашем штате. Если вы это сделаете,

terraform state replace-provider hashicorp/github integrations/githubДолжен исправить тебя.

Я столкнулся с этой проблемой несколько месяцев назад. В вашем URL отсутствует организация. Он должен быть в формате

https://api.github.com/repos/my_organization/my_repo/hooks

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