Code States/TIL

[0424] (페어) 배포 자동화 - 클라이언트 배포 파이프라인

ki1111m2 2023. 4. 24. 11:42

Bare Minimum Requirement

  • AWS 개발자 도구 서비스를 이용해서 배포 자동화 파이프라인을 구축해야 합니다.
    • CodePipeline을 이용해서 각 단계를 연결하는 파이프라인을 구축합니다.
    • Source 단계에서 소스 코드가 저장된 GitHub 리포지토리를 연결합니다.
    • Build 단계에서 CodeBuild 서비스를 이용하여 수동으로 진행했던 build 과정을 자동으로 진행합니다.
    • Deploy 단계에서 결과물을 S3 버킷에 자동으로 전달합니다.
  • 나중에 변경 사항을 GitHub 리포지토리에 반영했을 경우, 배포 과정이 자동으로 진행되어야 합니다.
  • 배포 과정에서 오류가 생길 경우, log 파일을 참조하여 문제점을 확인할 수 있어야 합니다.

Getting Started

repository 주소의 main 브랜치를 이용합니다.

  • 위 링크로 접속하여 스프린트 리포지토리를 자신의 리포지토리로 fork 한 뒤, git clone 명령어를 사용하여 로컬 환경에 소스 코드를 저장합니다.
  • S3에 버킷을 생성하고, 정적 웹 호스팅용으로 구성합니다.
    • 이때 버킷 안은 비어 있어야 합니다.
    • S3에서 버킷을 생성하고 정적 웹 호스팅용으로 구성하는 방법을 모르시거나 잊어버린 경우, AWS 유닛에 있는 S3 호스팅 Hands-on 슬라이드를 참조하여 진행합니다.

실습 완료 시 보이는 화면

실습을 성공적으로 마무리하고 S3 버킷의 엔드포인트 주소(http://버킷이름.s3-website.ap-northeast-2.amazonaws.com)로 접속하면 아래 화면이 보입니다.


buildspec.yml 파일 작성

CodePipeline을 통해 빌드를 진행할 때, buildspec.yml 파일을 기준으로 빌드한다

이를 위해 GitHub 레포지토리에 파일을 생성해줬다

CodePipeline 생성

배포를 자동화하기 위한 파이프라인을 생성한다

깃허브 레포지토리와 연동할 것이기 때문에 이와 관련된 설정을 해준다

사용할 레포지토리를 선택한다

레포지토리와 브랜치를 설정해준다

빌드 프로젝트를 생성한다

운영 체제를 선택해준다

내가 작성한 yml 파일의 명령어는 우분투 환경을 기준으로 작성했으므로 우분투를 선택했다

이미지 버전은 항상 최신 버전을 이용한다

S3 버킷을 이용할 것이므로 배포 공급자를 선택해준다

미리 생성해둔 버킷을 설정하고 배포 전 압축 풀기에 체크해준다

생성이 완료되고 파이프라인이 실행된다

오른쪽 중앙에 3개 표시로 진행 상황을 알 수 있다

그런데.. 오류가 떴다

어째서 ..

로그를 까본다

빌드 로그 파일 확인

CodeBuild 서비스로 이동한다

생성한 빌드의 상태가 실패함인 것을 확인할 수 있다

 

테일 로그를 확인한다

yaml 파일이 존재하지 않는다고 한다

아.. 아까 파일 생성만 하고 커밋과 푸시를 안했다

바보

파일을 깃허브에 올려준다

파일이 올라가니까 재시도를 누르지 않았는데 자동으로 진행됐다

신기하다

모두 성공한 후 S3 버킷의 주소로 접속한다

파일이 정상적으로 업로드 된 것을 확인할 수 있다


진짜 신기하다.. 이렇게 자동으로 되는 거를 저번 스프린트때는 일일이 손으로 했단말이야..

이게 데브옵스가 필요한 이유구나 .. 

이런걸 느끼라고 이렇게 커리를 짜두신거겠지 ..