[AWS] CodePipeline의 SAM 애플리케이션을 사용한 CI/CD 환경 구축(후편)
전편은 아래의 내용을 참조하시오.
[AWS] CodePipeline의 SAM 어플리케이션을 사용한 CI/CD 환경 구축(전편)
전편에는 기초 창고(CodeCommiit)와 구축 환경(CodeBuild)이 만들어졌다.
이번에 우리는 CodePipeline을 이용하여 이러한 서비스를 제공하여 자동적으로 건설하고 디버깅하는 환경을 창조할 것이다.
Push 이벤트 테스트
CodeCommiit의 Push 이벤트 탐지 방법은 여러 가지가 있습니다.
이번에는'아마존 클라우드 워치 이벤트'를 활용해 퍼시를 테스트하는 이벤트다.
밀어넣기 이벤트를 사용하여 파이핑 편집하기
알림을 위해서는 CodePipeline 권한이 필요합니다.
CodePipline의 역할을 만듭니다.
AmazonCloudWatchEventRole:
Type: AWS::IAM::Role
Properties:
AssumeRolePolicyDocument:
Version: 2012-10-17
Statement:
-
Effect: Allow
Principal:
Service:
- events.amazonaws.com
Action: sts:AssumeRole
Path: /
Policies:
-
PolicyName: cwe-pipeline-execution
PolicyDocument:
Version: 2012-10-17
Statement:
-
Effect: Allow
Action: codepipeline:StartPipelineExecution
Resource: !Join [ '', [ 'arn:aws:codepipeline:', !Ref 'AWS::Region', ':', !Ref 'AWS::AccountId', ':', !Ref AppPipeline ] ]
그리고 "PollForSourceChanges"를 진짜로 설정하면...CodePipline은 CodeCommiit를 모니터링하고 변경 사항이 있으면 자동으로 파이프를 시작합니다.
CodePipeline 구축
· Source 무대에서 전편으로 제작된 CodeCommiit의 창고 지정
· Build 단계에서 전편에서 제작한 CodeBuild 프로젝트 지정
· 캐릭터 설정 전편에서 제작한'My CodePipeline Service Role'
AppPipeline:
Type: AWS::CodePipeline::Pipeline
Properties:
Name: AppPipeline
RoleArn: !GetAtt MyCodePipelineServiceRole.Arn
ArtifactStore:
Type: S3
Location: app-pipeline-artifacts
Stages:
-
Name: Source
Actions:
-
Name: SourceAction
ActionTypeId:
Category: Source
Owner: AWS
Version: 1
Provider: CodeCommit
Configuration:
RepositoryName: MyDemoRepo
BranchName: master
PollForSourceChanges: true
OutputArtifacts:
- Name: app-rtifact
-
Name: Build
Actions:
-
Name: BuildAction
ActionTypeId:
Category: Build
Owner: AWS
Version: 1
Provider: CodeBuild
Configuration:
ProjectName: myProjectName
InputArtifacts:
- Name: app-rtifact
이렇게 하면 파이프가 다 구축되었다!지정된 CodeCommiit에 Push를 적용하면 파이프라인이 자동으로 실행됩니다.
SAM 프로젝트의 구축과 설계를 진행할 것입니다. 한번 시도해 보십시오.
AWS Chatbot 클라이언트 설정
Slack 알림을 위해 AWS Chatbot을 사용하려면 Slack에 대한 액세스 권한이 필요합니다.
여기는 CFn이 할 수 없는 것이기 때문에 AWS 콘솔부터 실시합니다.
AWS Chatbot의 콘솔을 엽니다.
채팅 클라이언트에서 "Slack"을 선택하고 "클라이언트 구성"버튼을 누릅니다.
다음 권한 요청 화면이 표시되면 액세스 권한이 부여됩니다.
여기에 지정된 Slack의 작업공간이 작성됩니다. 작업공간 ID
발매됐어요. 확인해 볼게요.나중에 CFn으로 이 ID를 지정합니다.
AWS Chatbot의 Slack 채널 설정
공지를 작성하는 데 필요한 역할은 AWS Chaatbot의 슬랙 채널을 설정하는 것입니다.
Slack Workspace Id에서 방금 만든 Slack의 작업공간 ID를 지정합니다.
SlackChannelId는 협력할 Slack 채널 ID를 지정합니다.
※ 슬랙의 채널 ID는 슬랙을 통해
채널 선택 - 마우스 오른쪽 버튼 클릭 - 링크 복사
를 참고하십시오.
PipelineNotificationRole:
Type: AWS::IAM::Role
Properties:
AssumeRolePolicyDocument:
Version: 2012-10-17
Statement:
-
Effect: Allow
Principal:
Service:
- chatbot.amazonaws.com
Action:
- sts:AssumeRole
ManagedPolicyArns:
- arn:aws:iam::aws:policy/CloudWatchReadOnlyAccess
AppPipelineNotificationForSlack:
Type: AWS::Chatbot::SlackChannelConfiguration
Properties:
ConfigurationName: app-pipeline-notification-slack
IamRoleArn: !GetAtt PipelineNotificationRole.Arn
LoggingLevel: ERROR
SlackChannelId: xxx
SlackWorkspaceId: xxx
Codepipeline 공지 규칙 작성
알림은 객체의 카테고리(스테이지 및 파이핑 실행) 및
상태(성공, 실패, 취소 등)를 지정할 수 있습니다.
지정할 수 있는 ID 일람은 다음을 참조하십시오.
Events for notification rules on pipelines
이번에는 파이프가 실행하는 모든 상태 변경 통지를 받아들일 것을 지정합니다.
PipelineNotificationRule:
Type: AWS::CodeStarNotifications::NotificationRule
Properties:
Name: app-pipeline-notification-rule
DetailType: FULL
Resource: !Sub arn:aws:codepipeline:${AWS::Region}:${AWS::AccountId}:AppPipeline
EventTypeIds:
- codepipeline-pipeline-pipeline-execution-started
- codepipeline-pipeline-pipeline-execution-succeeded
- codepipeline-pipeline-pipeline-execution-failed
- codepipeline-pipeline-pipeline-execution-canceled
- codepipeline-pipeline-pipeline-execution-resumed
- codepipeline-pipeline-pipeline-execution-superseded
Targets:
-
TargetType: AWSChatbotSlack
TargetAddress: !Ref AppPipelineNotificationForSlack
알림 설정이 완료되었습니다.소스 코드를 CodeCommiit에 Push 연결하면 구축 또는 완료 가능
슬랙한테 알릴 것 같아서요.
Slack 알림을 E-mail 알림으로 변경하려면 SNS 화제 만들기
SNS 화제를 통해 알림을 설정하면 된다.
이상
Reference
이 문제에 관하여([AWS] CodePipeline의 SAM 애플리케이션을 사용한 CI/CD 환경 구축(후편)), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/cloud-solution/items/d9aa282fb5431c5c9a9c텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)