# 개념도?
- Code build 없이 Code PipeLine을 구축하는 방법에 대해서 알아보자. (Code Deploy를 S3로 하는 방법)
1. S3 생성
Name : codepipeline-test-01
2. 버킷 > 속성 > 버킷 버전 관리 항목에서 활성화를 선택한 뒤 저장을 한다.
3. 샘플코드 다운로드 (로컬 컴퓨터의 폴더 또는 디렉토리에 저장합니다.)
* 배포 Target의 OS종류
Linux : https://docs.aws.amazon.com/ko_kr/codepipeline/latest/userguide/samples/SampleApp_Linux.zip
Window : https://docs.aws.amazon.com/ko_kr/codepipeline/latest/userguide/samples/SampleApp_Windows.zip
4. 다운받은 샘플코드를 S3 버킷에 업로드 합니다.
S3 버킷 > 파일 업로드 > 위에서 다운받은 ZIP 파일 업로드
- 업로드된 객체를 확인 할 수 있습니다.
5. 샘플 애플리케이션이 배포되는 EC2 인스턴스를 생성합니다. (Linux)
1) IAM Role 설정
- 역할 이름을 입력하고, 역할을 생성 합니다.
2) EC2생성 > 인스턴스 중지 > 인스턴스 설정 > 사용자 데이터 편집
- Userdata에 아래 명령어를 기입함으로서, ruby, aws-cli, codedeploy를 자동으로 설치합니다.
#!/bin/bash
sudo su -
yum -y update
yum install -y ruby
yum install -y aws-cli
cd /home/ec2-user
aws s3 cp s3://aws-codedeploy-us-east-2/latest/install . --region us-east-2
chmod +x ./install
./install auto
- EC2 보안그룹에서 80포트를 오픈합니다.
3) IAM Role" 에서 생성한 Role을 맵핑해줍니다.
> 인스턴스 id > 보안 > IAM 역할 수정 > 위에서 생성한 codepipeline-role 을 선택하고 저장.
6. CodeDeploy 배포
1) IAM Role
2) CodeDeploy 애플리케이션을 생성
Name : MyDemoApplication
Platform : EC2/온프레미스
7. CodeDeploy 배포그룹 설정
- 이전 IAM에서 설정한 ROLE을 적용
- 해당 EC2 인스턴스에 Tag값을 설정한 뒤 CodeDeploy에서 설정한 태그값을 적용
- 14일마다 CodeDeploy를 업데이트 하도록 설정
- 배포 설정을 아래와같이 설정
8. CodePipeline에서 첫 번째 파이프라인 생성
파이프라인을 생성하고 실행할 준비가 되었습니다.
CodeCommit 리포지토리로 푸시될 때 자동으로 실행되는 파이프라인을 생성합니다.
1) Code Pipeline 설정 선택
2) Source Stage 추가
소스공급자 : Amazon S3
버킷 : codepipeline-test-01
S3 객체 키 : SampleApp_Linux.zip
Change detection options 아래에서 기본값을 그대로 둡니다.
CodePipeline이 Amazon CloudWatch Events를 사용하여 소스 버킷의 변경을 감지할 수 있습니다.
- 빌드 스테이지 (생략)
3) 배포 스테이지 추가
배포 공급자 : CodeDeploy
리전 : ap-northeast-2
이름 : MyDemoApplication
배포그룹 : codedeployrole-test
- 파이프라인을 생성하고, 파이프라인이 실행을 시작합니다. CodePipeline과 CodeDeploy가 각 Amazon EC2 인스턴스에 웹 페이지를 배포하므로 진행 사항과 성공 및 실패 메시지를 볼 수 있습니다.
9. CodePipeline Action
* Source라는 소스 단계는 S3 버킷에 저장된 버전이 지정된 샘플 애플리케이션의 변경 사항을 감지하고 이러한 변경 사항을 파이프라인으로 가져옵니다.
* Deploy 단계는 CodeDeploy를 이용해 이러한 변경 사항을 EC2 인스턴스에 배포합니다.
- 여러번 실패 후 아래와 성공 하였는데 위의 사용자 데이터 편집의 명령어들이 정상적으로 실행이 되지않아 생긴 문제였습니다.
7. 테스트
- 3번에서 구성한 EC2의 Public DNS로 호출해봅니다.
- 정상적으로 테스트 페이지를 호출하는것을 확인 할 수 있습니다.
- 여기까지 S3를 활용하여 배포하는 방법에 대해서 알아보았습니다.
- 끝 -
'⭐ AWS > CodePipeLine' 카테고리의 다른 글
CodePipeLine 자동실행 정리 (0) | 2022.07.12 |
---|