Поиск по сайту:

Как перенести систему управления версиями на AWS с помощью CodeCommit


CodeCommit — это управляемое решение AWS для управления исходным кодом. Это важнейший компонент в конвейере AWS CodeSuite CI/CD, который упрощает выполнение частых сборок кода и развертывание программных обновлений приложений на серверах EC2 или в функциях Lambda.

Что такое кодкоммит?

Действительно, CodeCommit сам по себе не фантастичен. Он хорошо работает в качестве базового поставщика системы управления версиями, и вы, безусловно, можете использовать его в качестве основного репозитория, но он немного отстает от конкурентов — GitHub, GitLab, BitBucket и других — когда дело доходит до повседневных задач. удобство использования.

Отличительной чертой CodeCommit является его интеграция с AWS. У AWS есть целый конвейер непрерывной разработки/непрерывной интеграции, который они называют CodeSuite. Все начинается с CodeCommit, который просто размещает ваш исходный код в экосистеме AWS. Всякий раз, когда вы будете готовы к обновлению, вы можете отправить исходный код в CodeBuild, который может запустить все ваши автоматические тесты и построить ваш проект, используя серверы сборки, которые он запускает автоматически. Если сборка выполнена успешно, вы можете автоматически развертывать обновления для группы серверов EC2 или функций Lambda.

CodeCommit не требуется для использования конвейера AWS CI/CD, поскольку CodeBuild поддерживает управление исходным кодом из GitHub, BitBucket и S3, но использовать Git с двумя удаленными устройствами настолько просто, что мы рекомендуем следующую конфигурацию, если вы хотите использовать CodePipeline:

  • Продолжайте использовать свою основную систему управления версиями, как обычно, вместе с Jira и любыми другими сторонними инструментами, которые вы используете для оптимизации разработки.
  • Что касается операционной стороны, когда вы будете готовы выпустить новые изменения, попросите менеджера проекта (или любого другого уполномоченного лица) извлечь все изменения из основного репозитория, переключить удаленный сервер на CodeCommit и отправить все новые коммиты в AWS.
  • После обновления CodeCommit конвейер может начинаться оттуда со всем новым кодом в CodeCommit.

Таким образом, CodeCommit содержит точную копию вашего проекта и историю коммитов всякий раз, когда вы готовы к выпуску, не требуя от вас фактического использования CodeCommit в качестве основного элемента управления исходным кодом. Это также делает CodeCommit практически бесплатным, поскольку вы действительно используете только одного пользователя и не делаете тысячи коммитов в месяц. Вам предоставляется 50 ГБ хранилища до оплаты (достаточно для большинства проектов без огромных двоичных файлов) и неограниченное количество репозиториев. Единственная плата составляет 1 доллар в месяц за каждого активного пользователя после первых пяти и 1 доллар в месяц за каждые 2000 запросов Git после первых 10 000. С вас также взимается плата в размере 0,06 доллара США за ГБ в месяц сверх бесплатных 50.

Если вы уже используете GitHub или BitBucket, вместо этого вы можете выбрать получение данных непосредственно оттуда с небольшой настройкой. Но если вы используете GitLab (или любого другого поставщика), вам нужно использовать эти две удаленные настройки, чтобы использовать CodePipeline (если только вы не хотите вручную загружать код в S3, гораздо более неуклюжее решение ).

Настройка дополнительного удаленного выпуска CodeCommit

Во-первых, вам нужно создать репозиторий. В консоли AWS CodeSuite перейдите к CodeCommit, выберите «Репозитории» на боковой панели и нажмите «Создать репозиторий».

Дайте ему имя, описание, любые теги, которые вы хотите, и нажмите «Создать».

Затем вы попадете на главный экран репозитория, и если вы вошли в систему с учетной записью root, вам будет выдано жирное предупреждение о том, что вы не можете настроить SSH-соединения для учетной записи root, и что HTTPS-соединения не рекомендуемые. Вы захотите настроить любые подключения к CodeCommit для пользователей IAM, возможно, для существующей учетной записи менеджера проекта. Войдите в эту учетную запись или перейдите в консоль IAM и создайте нового пользователя специально для этой цели (с доступом к консоли управления):

Вы захотите предоставить доступ к CodeCommit на экране выбора роли.

Держите консоль IAM открытой, потому что вам нужно добавить здесь свой открытый ключ SSH. Нажмите на пользователя, который используется для доступа CodeCommit, и на вкладке «Учетные данные безопасности» найдите кнопку для загрузки открытых ключей SSH.

Вставьте закрытый ключ вашего компьютера, который обычно можно найти с помощью:

cat ~/.ssh/id_rsa.pub

Вы можете добавить сюда несколько ключей, чтобы дать нескольким машинам доступ к CodeCommit через git. Для каждого ключа вам дается «идентификатор ключа SSH», скопируйте его.

Откройте ~/.ssh/config или создайте его, если он еще не существует. Вставьте следующую конфигурацию, указав свой идентификатор ключа:

Host git-codecommit.*.amazonaws.com
User IAM-SSH-KEY-ID
IdentityFile ~/.ssh/id_rsa

Убедитесь, что разрешения установлены на 600:

chmod 600 ~/.ssh/config

Это гарантирует, что git установит правильное соединение с использованием настроенного вами пользователя IAM.

Как только это будет не так, вы сможете добавить новый пульт, как обычно. Ваш основной пульт, вероятно, называется «происхождение». Создайте новый с именем «релиз», используя URL-адрес SSH. CodeCommit дает вам:

git remote add release ssh://git-codecommit.us-east-1.amazonaws.com/v1/repos/RepoName

Затем, когда вы запустите git push, укажите удаленное имя и ветку, в которую вы отправляете:

git push release master

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