- Что такое Git-репозиторий?
- Начало работы
- Развертывание
- Устранение неполадок
- Сбой рабочего процесса
- Результат
- Репозиторий Github
- edwardmercado / mirror-repo-from-github-to-codecommit
- Зеркальное отражение репозитория Github в CodeCommit
- Необходимые условия:
- Начало работы
- Устранение неполадок
- Рабочий процесс не работает
Что такое 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
.
Развертывание
Выполнив все необходимые условия, вы можете приступить к развертыванию решения.
- Запустите
terraform init
. - Запустите
terraform apply
. - Отметьте ресурсы, которые необходимо развернуть, и введите «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…
По любым вопросам вы можете связаться со мной по адресу:
Dev.to
Twitter
LinkedIn