본문 바로가기
[AWS]/CICD

[AWS] CI/CD, Pipeline 세미나 실습

by METAVERSE STORY 2022. 10. 13.
반응형
728x170



AWS에서 진행한 세미나 참석후, 실습을 진행한 서비스에 대해서 다시한번 짚고 넘어가자.

1. Cloud9 구성

우선은 Cloud9으로 이동하여 환경을 구성하도록 한다.

Create environment를 클릭하고

Name에는 Development를 입력하고 Description은 선택사항이니 자율적으로 적으면 된다.
다 입력했으면 Next Step을 클릭하여 다음으로 넘어가자.

환경을 검토하도록 하자.
Instace type이나 다른 부분을 선택해서 구성하면 된다.
필자는 빠른 배포, 빌드를 위해서 m5.large로 변경한다.

Platform은 Amazon Linux로 선택하고 다음 단계로 넘어가도록 하자.

최종 확인후 Create environment를 클릭하여 마무리 한다.

Cloud9이 실행 되었다. 다음 아래 명령을 통해서 사용자가 로그인했는지 확인한다.

aws sts get-caller-identity

AWS에서 제공한 이벤트 테스트 환경이 맞는지 아래와 비교하여 확인한다.

{
    "Account": "123456789012",
    "UserId": "AKIAI44QH8DHBEXAMPLE",
    "Arn": "arn:aws:iam::123456789012:user/Alice"
}

 

2. Cloud Development Kit (CDK) 구성

다음으로는 AWS Cloud Development Kit (AWS CDK)이다.
CDK는 익숙한 프로그래밍 언어를 사용하여 클라우드 애플리케이션 리소스를 모델링하고 프로비저닝하기위한 오픈 소스 소프트웨어 개발 프레임 워크이다. 이 워크숍의 목적을 위해 TypeScript를 실행하여 다음 AWS 리소스를 프로비저닝 한다.

이제 다음 명령어를 입력하여 CDK 애플리케이션 소스를 다운로드하고 개발 환경에 애플리케이션을 생성한다.

curl -s https://static.us-east-1.prod.workshops.aws/public/8c4076ba-a416-424d-acc7-06e5cc2de102//static/20-infrastructure/InfrastructureApp.tgz | tar -xzv
cd InfrastructureApp

다음으로 CDK애플리케이션 종속성을 설치하고 CDK 프로젝트를 빌드한다.

npm install
npm run build

npm run build까지 완료 되었으면 다음으로 CDK를 부트스트랩한다.
AWS 계정에서 특정 리전에 CDK 배포를 허용하는 데 필요한 리소스를 생성하는 일회성 작업이다.

cdk bootstrap

CDK가 완료되면 위와 같은 화면이 확인될것이다.

다음 순서로는 CDK 애플리케이션을 배포한다.

cd ~/environment/InfrastructureApp
cdk deploy

해당 과정을 통해서 CI/CD Pipeline을 구성하기 위해 필요한 리소스를 모두 생성한다.

CDK 애플리케이션 배포가 모두 마무리 되었다. 위 내용은 CloudFormation에서 확인 가능하다.






3. CodeCommit 구성

다음으로는 CodeCommit을 시작하여 Git 리포지토리를 생성한다.

CodeCommit에서 리포지토리 생성 버튼을 클릭한다.

리포지토리 이름에 DemoApp을 입력하고 생성을 클릭한다.

생성이 완료된 리포지토리이다.

다음 스탭으로 git clone을 진행한다.
Demo Java 웹 애플리케이션을 위한 새 Git 저장소를 시드한다. 우선 앞서 생성한 리포지토리에서 URL을 확인한다.

해당 탭에서 HTTPS 복제한다.


그 다음 아래 명령어에 각자의 URL을 입력하여 진행한다.

cd ~/environment
git clone https://git-codecommit.us-east-1.amazonaws.com/v1/repos/DemoApp

Git Clone이 완료되었다.
경고 문구가 뜨지만 당연히 지금은 리포지토리가 비어있으니 당연하다.

그 다음으로 데모 Java 애플리케이션으로 비어있는 새 리포지토리를 채운다.

curl -s https://static.us-east-1.prod.workshops.aws/public/8c4076ba-a416-424d-acc7-06e5cc2de102//static/30-source/DemoApp.tgz | tar -xzv
cd DemoApp

모두 완료되면 초기 커밋을 수행해야 하는데, 그전에 이름과 이메일 주소로 Git을 구성한다.

git config --global user.email "scourge1100@naver.com"
git config --global user.name "Peter"


그 다음 마지막으로 변경 사항을 로컬 Git 리포지토리에 커밋하고 변경 사항을 CodeCommit-hosting 리포지토리로 푸시한다.

git add .
git commit -m "Initial commit"
git push

Git Push가 완료되면

 

 

 

4. CodeBuild 구성


다음으로 빌드를 생성한다.
CodeBuild를 사용할것이다.

프로젝트 만들기 버튼을 클릭해서 진행한다.

우선 프로젝트 이름은 DemoApp으로 작성한다.

그 다음 소스에서의 설정사항이다.

다음으로 환경 이미지 설정을 한다.
환경 이미지는 관리형 이미지로 선택하고 운영체제는 우분투로 설정한다.
런타임은 Standard 이미지는 4.0버전을 선택한다.
추가로 이 런타임 버전에 항상 최신 이미지 사용을 해야 최신으로만 빌드를 진행한다.
기타 설정이 모두 끝났으면 빌드 스펙으로 넘어간다.

 

 

 

 

빌드 스펙은 Use a buildspec file로 체크되어 있는지만 확인하고 넘어간다.

다음으로 Artifact 패널에서 type Amazon S3를 선택하고
버킷명은 기존에 CDK 배포로 생성된 S3 버킷을 선택한다.
추가로 name 필드에는 WebAppOutputArtifact.zip을 입력하고 넘어간다.(빌드 war 파일 포함)
마지막으로 아티팩트 패키징에 Zip을 선택하고 가장 하단에 빌드 프로젝트 생성을 클릭하여 마무리한다.

 

 

 

 

 

4-1 buildspec 세부설정


다음 순서로는 Cloud9 환경에서 DemoApp 디렉토리에 buildspec.yml 파일을 만든다.

해당 탭에서 New File을 클릭하고 buildspec.yml으로 파일 이름을 변경한다.
그 다음 아래 내용을 입력하고 저장한다.

version: 0.2

phases:
  install:
    runtime-versions:
      java: corretto8
  build:
    commands:
      - mvn install
artifacts:
  files:
    - target/javawebdemo.war
    - appspec.yml
    - scripts/**/*
  discard-paths: no


그 다음 새로 적용된 buildspec을 Git에 해당 내용을 Push한다.

cd ~/environment/DemoApp
git add .
git commit -m "Add buildspec"
git push


다음 순서로는 빌드 검증을 진행한다.

해당 화면에서 빌드 시작 버튼을 클릭하여 빌드를 실행한다.
빌드가 실행되면 상태에 진행중이라고 확인되고 완료되면 아래와 같이

성공했다고 확인되고

로그 가장 하단에 Maven 빌드까지 성공했다는것을 알수 있다.

 

 

 

5. CodeDeploy 구성

다음 순서로는 배포 그룹을 만든다.

CodeDeploy로 이동하여 애플리케이션 생성 버튼을 클릭한다.

애플리케이션 이름은 DemoApp을 입력하고 컴퓨팅 플랫폼은 EC2/온프레미스를 선택하여 생성 버튼을 클릭한다.

배포가 생성이 되었다. 다음으로는 배포 그룹 탭에서 배포 그룹 생성 버튼을 클릭해서 배포 그룹을 진행한다.

배포 그룹 이름은 Development를 입력하고
서비스 역할을 선택하고 배포 유형은 현재위치로 되어 있는지 확인하고 다음으로 넘어간다.

환경 구성에서 Amazon EC2 인스턴스를 선택하고 태그를 추가한다.
Key : App / Value : DemoApp
Key : Env / Value : DEV
태그 다 입력하고 다음으로 넘어간다.

배포구성에는 CodeDeployDefault.AllAtOnce를 그대로 냅두고 로드밸런서는 이번 세션에 사용하지 않음으로 선택 해제하고 배포 그룹 생성 버튼을 클릭한다.

생성 완료된 배포이다.

 

5-1 appspec.yml 생성
다음 순서로는 위의 buildspec.yml을 추가했던것과 똑같이 appspec.yml을 생성한다.

version: 0.0
os: linux
files:
  - source: /target/javawebdemo.war
    destination: /tmp/codedeploy-deployment-staging-area/
  - source: /scripts/configure_http_port.xsl
    destination: /tmp/codedeploy-deployment-staging-area/
hooks:
  ApplicationStop:
    - location: scripts/stop_application
      timeout: 300
  BeforeInstall:
    - location: scripts/install_dependencies
      timeout: 300
  ApplicationStart:
    - location: scripts/write_codedeploy_config.sh
    - location: scripts/start_application
      timeout: 300
  ValidateService:
    - location: scripts/basic_health_check.sh

해당 내용 입력이 끝나면 또다시 리포지토리로 해당 내용을 푸시한다.

cd ~/environment/DemoApp
git add .
git commit -m "Add appspec"
git push

그 다음 적용된 appspec으로 다시 빌드를 진행한다.

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

5-2. CodeDeploy 배포

빌드가 마무리되었다면 다음으로 CodeDeploy로 이동한다.

왼쪽 메뉴에서 애플리케이션을 선택하고 DemoApp을 클릭한다.

이전에 생성한 배포 그룹을 선택한다.

해당 메뉴에서 배포생성 버튼을 클릭하고

해당 사항에서 S3 버킷을 입력해야한다.
우선 CloudFormation으로 이동한다.

우리가 이전에 CDK 배포를 했던 Stack이 있다.
해당 메뉴중 InfrastructureStack을 클릭하고

출력 탭으로 이동한다.

여기에서 BucketName을 s3://<your bucket name>/WebAppOutputArtifact.zip 와 조합하여

위와 같이 입력하고 가장 하단에 배포 만들기를 클릭하여 배포 생성을 마무리한다.

마무리되면 바로 배포가 진행된다.

배포가 완료되면 조금전에 확인했던 CloudFormation에서 S3 버킷 이름을 확인한곳 아래에 있는 DevLocation으로 접속한다.

http://ec2-3-228-23-150.compute-1.amazonaws.com

정상적으로 빌드가 완료되면 해당 URL로 접속하면 웹 화면이 확인된다.

 

 

6. Code Pipeline 구성

그 다음 이 세션의 마지막 핵심인 Pipeline으로 이동한다.

파이프라인 생성 버튼을 클릭한다.

파이프라인 이름을 DemoApp이라고 입력하고 역할 이름은 절대로 변경하지 않고 다음으로 넘어간다.

 

6-1 소스 스테이지

다음으로는 위와 같이 소스 스테이지를 추가한다.소스 공급자는 AWS CodeCommit을 선택하고 리포지토리 이름을 DemoApp으로 브랜치 이름은 master로 하고
변경 감지 옵션이 CloudWatch Events를 선택되어 있는지 확인하고 다음으로 넘어간다.

 

6-2 빌드 스테이지

빌드 스테이지에도 이전에 생성한 AWS CodeBuild를 선택하고 프로젝트의 이름도 DemoApp으로 선택하고 다음으로 넘어간다.

 

6-3 배포 스테이지

배포 스테이지는 배포 공급자에서 AWS CodeDeploy를 선택하고 애플리케이션 이름에 DemoApp을 선탠다음 배포 그룹은 Development를 선택하고 다음으로 넘어간다.
최종 검토를 완료하고 파이프라인 생성 버튼을 클릭한다.

 

생성 완료된 파이프라인의 모습이다.

 

6-4 소스 수정 감지

파이프라인이 다 돌았다면 소스를 수정해서 새로 푸시해보자.

DemoApp/src/main/webapp/WEB-INF/pages/index.jsp로 이동하여 소스를 변경한다.
필자의 경우는 title과 h1, 그리고 그 아래에 있는 p태그까지만 수정했다.

cd ~/environment/DemoApp
git add .
git commit -m "Change title"
git push

해당 명령어를 입력하여 push하자.
push하면 파이프라인이 소스의 변경을 감지하고 CI/CD를 시작한다.

Deploy까지 모두 완료되면 이전에 접속했던 URL로 접속하여 확인한다.

http://ec2-3-228-23-150.compute-1.amazonaws.com

변경이 잘 되었음을 확인할수 있다.




출처 : https://catalog.us-east-1.prod.workshops.aws/workshops/cbcd960c-a07b-40c2-a01d-1d2e7a52b945/ko-KR

 

Workshop Studio

 

catalog.us-east-1.prod.workshops.aws

 

반응형
그리드형

'[AWS] > CICD' 카테고리의 다른 글

[AWS] CICD 시작하기  (0) 2022.10.06
[AWS][CICD] 4. CodePipeline 사용하기  (0) 2022.08.19
[AWS][CICD] 3. CodeDeploy 사용하기  (0) 2022.08.19
[AWS][CICD] 2. CodeBuild 사용하기  (0) 2022.08.16
[AWS][CICD] 1. AWS CodeCommit 사용하기  (0) 2022.08.09

댓글