Синхронизация Git-репозитория с Github на AWS CodeCommit с помощью Terraform


Что такое Git-репозиторий?

Git-репозиторий — это структура данных, которую VCS использует для хранения метаданных для набора файлов и каталогов. Содержит коллекцию файлов и историю изменений, внесенных в эти файлы.

Этот git-репозиторий может быть удаленным репозиторием, хранящимся на службе хостинга кода, такой как Github, BitBucket и т.д.

Преимущество хранения git-репозитория на сервисах хостинга кода, таких как Github, заключается в развитии сотрудничества, поскольку это будет общий репозиторий, который все члены команды используют для обмена изменениями между файлами.

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

В нашем случае у нас есть частная организация Github, где мы храним коды наших проектов, и у нас есть потребность синхронизировать их с другим хранилищем в AWS CodeCommit.

Начало работы

Сначала нам нужно сгенерировать несколько токенов и SSH-ключ.

  • Сгенерируйте токен GitHub — предоставьте права на рабочий процесс, организацию, создание и удаление репозитория.
  • Клонируйте этот репозиторий.
  • Сгенерируйте SSH-ключ.
  • Подставьте соответствующие значения ниже (см. описание), создайте файл terraform.tfvars и замените заполнители.
github_token          = "PUT YOUR GITHUB PERSONAL ACCESS TOKEN HERE"

aws_access_key_id     = "PUT AWS SECRET ACCESS KEY ID HERE"
aws_secret_access_key = "PUT AWS SECRET ACCESS KEY HERE"

github_repository_name     = "Github Repository Name e.g. 'samplegithubrepo'"
codecommit_repository_name = "CodeCommit Repository Name e.g. 'samplecodecommitrepo'"

ssh_private_key_path  = "PUT THE PATH WHERE SSH PRIVATE KEY IS STORED e.g. ~/.ssh/id_rsa"
ssh_public_key_path   = "PUT THE PATH WHERE SSH PUBLIC KEY IS STORED e.g. ~/.ssh/id_rsa.pub"

aws_region            = "PUT YOUR AWS REGION OF CHOICE"
Войти в полноэкранный режим Выйти из полноэкранного режима

Обратите внимание, что значения внутри вашего файла terraform.tfvars не должны попадать в репозиторий Github. Чтобы предотвратить это, в самом репозитории Github есть файл .gitignore, в который включены *.tfvars.

Развертывание

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

  1. Запустите terraform init.
  2. Запустите terraform apply.
  3. Отметьте ресурсы, которые необходимо развернуть, и введите «yes» для развертывания ресурсов.

Устранение неполадок

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

Сбой рабочего процесса

> Run pixta-dev/repository-mirroring-action@v1
> fatal: no path specified; see 'git help pull' for valid url syntax
Войти в полноэкранный режим Выход из полноэкранного режима

Решение:

  • Откройте созданный репозиторий GitHub, перейдите в раздел Settings > Secrets > Update CODECOMMIT_SSH_PRIVATE_KEY с вашим приватным SSH-ключом.
  • Запустите рабочий процесс заново.

Результат

  • Все части GitHub Repo зеркалируются, т.е. ветки, коммиты и т.д.
  • Настройте CodePipeline на использование CodeCommit в качестве источника.
  • Выгрузка в Git автоматически запускает выгрузку в CodeCommit, что в свою очередь запускает повторный запуск конвейера.

Репозиторий Github

Смотрите репозиторий Github здесь.

edwardmercado / mirror-repo-from-github-to-codecommit

Зеркальное отражение репозитория Github в CodeCommit

Необходимые условия:

  • Terraform
  • AWS с соответствующими учетными данными
  • Пара ключей SSH (открытый и закрытый)
  • Токен GitHub

Начало работы

  • Сгенерируйте GitHub Token — предоставьте (рабочий процесс, права на создание и удаление репозитория)
  • Клонируйте этот репозиторий.
  • Сгенерируйте SSH-ключ — по возможности сохраните имя по умолчанию, поскольку оно указывает на ~/.ssh/id_rsa и ~/.ssh/id_rsa.pub.
  • Подставьте значения, указанные ниже, создайте файл terraform.tfvars и вставьте в него указанные ниже значения.
github_token = "PUT YOUR GITHUB PERSONAL ACCESS TOKEN HERE"
aws_access_key_id     = "PUT AWS SECRET ACCESS KEY ID HERE"
aws_secret_access_key = "PUT AWS SECRET ACCESS KEY HERE"
repository_name = "PUT YOUR REPOSITORY NAME HERE (SAME ON BOTH GITHUB & CODECOMMIT)"
  • Запустите terraform init.
  • Запустите terraform apply -auto-approve.

Устранение неполадок

Рабочий процесс не работает

> Run pixta-dev/repository-mirroring-action@v1
> fatal: no path specified; see 'git help pull' for valid url syntax

Решение:

  • Откройте созданный репозиторий GitHub, перейдите в раздел Settings > Secrets > Обновите CODECOMMIT_SSH_PRIVATE_KEY своим личным SSH…
Посмотреть на GitHub

По любым вопросам вы можете связаться со мной по адресу:

Dev.to
Twitter
LinkedIn

Оцените статью
devanswers.ru
Добавить комментарий