#git #github #aws-codepipeline #aws-codestar
#git #github #aws-codepipeline #aws-codestar
Вопрос:
У меня есть конвейер AWS, который подключен к GitHub через соединение CodeStar. Процесс выглядит следующим образом:
- Извлеките исходный код из GitHub
- Построить проект
- Запуск тестов
- Развертывание
Перед (или как часть) шага 4 я хотел бы, чтобы конвейер AWS пометил код тегом git, а затем отправил его обратно в репозиторий в GitHub.
Как я могу это сделать?
Комментарии:
1. Я ничего не знаю о конвейере AWS, но чтобы отправить теги на удаленный (например, GitHub) с помощью Git, вам нужно использовать либо
--tags
флаг для отправки всех тегов сразу (напримерgit push origin --tags
,), либоgit push origin <tagname>
для отправки одного тега. По умолчанию Git не отправляет теги на удаленные устройства. Для получения дополнительной информации см. раздел «Совместное использование тегов» в главе «Теги» книги Git . Тем не менее, я не знаю, помогает ли это вам в вашем контексте.2. @milk Ты понял это?
3. Я пытаюсь сделать то же самое, и мне удалось решить одну часть проблемы, то есть получить папку .git как часть клона. Для этого вам нужно выбрать code_build_clone_output=True в исходном действии. Это позволяет codebuild клонировать репозиторий. Но я не могу использовать то же соединение для отправки тега.
Ответ №1:
Вам понадобится действие CodeBuild до / после шага 4 в конвейере, которое в основном будет выполнять команды пометки git и отправлять в origin, как упоминалось другими комментаторами. Пример спецификации сборки для проекта CodeBuild будет выглядеть следующим образом:
version: 0.2
env:
git-credential-helper: yes
phases:
install:
runtime-versions:
python: 3.7
build:
commands:
- echo Build started on `date`
- git checkout master
- git tag ${BUILD_NUMBER} ${CODEBUILD_RESOLVED_SOURCE_VERSION}
- git push origin master --tags ${BUILD_NUMBER}
Комментарии:
1. Это не работает. тег git применяет тег к локальному репозиторию, но codebuild не предоставляет вам репозиторий — только zip-файл данного коммита.
2. @BillShubert как насчет получения полного клона?
3. Да, проверка полного клона из codebuild будет работать, но это очень медленно. Я надеялся, что есть какой-то способ отправить тег непосредственно в удаленный репозиторий, но, думаю, нет. В конце я создал SQS, в котором есть запросы на пометку, затем на компьютере, на котором всегда проверен код, он отслеживает эту очередь. Довольно некрасиво, но я не смог найти ничего лучше.