Сохранение операций git для конвейера AWS с использованием стороннего поставщика исходных текстов GitHub

#github #amazon-cloudformation #aws-codepipeline

#github #aws-cloudformation #aws-codepipeline

Вопрос:

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

 ...
Resources:
  DevPipeline:
    Type: AWS::CodePipeline::Pipeline
    Properties:
      Name: my-pipeline
      RoleArn: !Ref 'PipelineRole'
      Stages:
        - Name: Source
          Actions:
            - Name: GitHub
              ActionTypeId:
                Category: Source
                Owner: ThirdParty
                Version: 1
                Provider: GitHub
              Configuration:
                Owner: !Ref GitHubOwner
                Repo: !Ref GitHubRepo
                Branch: !Ref GitHubBranch
                OAuthToken: !Ref GitHubToken
              OutputArtifacts:
                - Name: JavaSource
              RunOrder: 1
...
  

Я хотел бы иметь возможность запускать git операции с исходным кодом на следующих этапах сборки. Однако это исходное действие не включает .git папку в выходной артефакт.

Как я могу изменить это, чтобы я мог получить доступ git к операциям в репозитории?

Ответ №1:

CodePipeline недавно выпустила новую версию действия GitHub Source, которое выполняет фактический клон репозитория git вместо получения пакета zip из GitHub.

Новое действие GitHub (версия 2) использует CodeStarSourceConnection. Итак, нам просто нужно указать поставщика исходных действий CodeStarSourceConnection [1] на этапе исходного кода вашего конвейера. Ресурс AWS::CodeStarConnections::Connection [2] также поддерживается в CloudFormation. Вы можете ссылаться на ARN существующего соединения или создать новое в CloudFormation. Существующие подключения можно найти здесь [0].

Вот пример фрагмента шаблона:

 Resources:
  CodeStarConnection:
    Type: 'AWS::CodeStarConnections::Connection'
    Properties:
      ConnectionName: MyGitHubConnection
      ProviderType: GitHub
  CodePipeline:
    Type: 'AWS::CodePipeline::Pipeline'
    Properties:
      Stages:
        - Name: Source
          Actions:
            - Name: SourceAction
              ActionTypeId:
                Category: Source
                Owner: AWS
                Version: 1
                Provider: CodeStarSourceConnection
              OutputArtifacts:
                - Name: SourceArtifact
              Configuration:
                ConnectionArn: !Ref CodeStarConnection
                BranchName: master
                FullRepositoryId: username/repository
              RunOrder: 1
      ... ...
  

Примечание: Соединение, созданное с помощью CloudFormation, по умолчанию находится в состоянии ОЖИДАНИЯ. Вы можете сделать его статус ДОСТУПНЫМ, обновив соединение в консоли [3]. После того, как соединение будет доступно, вы можете использовать свой CodePipeline с исходным кодом Github версии 2. Действие.

Ссылки:

[0] Соединения — https://console.aws.amazon.com/codesuite/settings/connections

[1] CodeStarSourceConnection — https://docs.aws.amazon.com/codepipeline/latest/userguide/action-reference-CodestarConnectionSource.html

[2] AWS ::CodeStarConnections::Connection — https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-codestarconnections-connection.html

[3] Обновление ожидающего подключения — https://docs.aws.amazon.com/dtconsole/latest/userguide/connections-update.html