Как я могу отправить тег git на GitHub в конвейере AWS, используя соединение CodeStar?

#git #github #aws-codepipeline #aws-codestar

#git #github #aws-codepipeline #aws-codestar

Вопрос:

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

  1. Извлеките исходный код из GitHub
  2. Построить проект
  3. Запуск тестов
  4. Развертывание

Перед (или как часть) шага 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, в котором есть запросы на пометку, затем на компьютере, на котором всегда проверен код, он отслеживает эту очередь. Довольно некрасиво, но я не смог найти ничего лучше.