프로필사진

Go, Vantage point

가까운 곳을 걷지 않고 서는 먼 곳을 갈 수 없다.


Github | https://github.com/overnew/

Blog | https://everenew.tistory.com/





티스토리 뷰

반응형

 

 

 

 

buildspec.yaml

AWS의 Code build에서는 Buildspec이라는 yaml 파일에 어떻게 빌드를 진행할지 작성해주어야 한다.

Build는 어떤 것을 CI 하느냐에 따라서 빌드 방식이 달라지기 때문에 이러한 빌드 파일작성은 Git Actions에서도 아래처럼 특정 폴더에 build 파일을 작성해 주어야 한다.

 

git actions의 build yaml

 

 

 

 

Code build 생성시 별다른 세팅이 없다면, 자동으로 소스 코드의 루트 디렉터리에 존재하는 buildspec.yaml을 사용하게 된다.

 

 

 

 

 

 

 

buildspec 예시

 


Code commit 레포지토리의 파일들을 git 레포지토리로 옮겨둔 링크이다.

 

https://github.com/overnew/AWS_PHP_SDK_CodeBuild_example

 

GitHub - overnew/AWS_PHP_SDK_CodeBuild_example: apache2, awsphp sdk, docker build, code build example

apache2, awsphp sdk, docker build, code build example - overnew/AWS_PHP_SDK_CodeBuild_example

github.com

 

 


env: 환경변수를 정의

 

phases: CodeBuild가 빌드의 각 단계에서 실행하는 명령

install: 빌드 환경을 위한 라이브러리 명시

pre_build, build, post_build: 빌드를 위한 단계 구분(build하나에 몰아서 해도 상관 x)

commands: 빌드 인스턴스의 OS에 해당하는 명령어를 나열하여 빌드 진행. (AmazonLinux2를 사용)


artifacts: 빌드 결과물을 저장하여, 추후 배포 과정에 활용

 

 

 

 

 

 

해당 코드를 통해 ECR에 빌드한 컨테이너를 저장하고, appspec.yaml을 남겨 code deploy에서 배포 시 활용할 수 있도록  설정하였다.

 

 

 

 

ECS를 사용하는 인프라이기 때문에 배포시, 새로운 task 정의 개정이 필요했다.

buildspec에서는 단순히 AmazonLinux의 명령어만 쓸 수 있기 때문에 복잡한 문자열작업에는 적합하지 않았다.

따라서 python을 통해 새로운 task 정의를 생성할 수 있도록 세팅하였다.

이처럼 단순 명령어 뿐만 아니라 다양한 작업도 할 수 있으며, 빌드 전 테스팅까지 진행할 수 있다.

 

 

 

 

레포지토리와 연결이 된 Code build 프로젝트에서 빌드를 진행하면 정상적으로 수행되어, ECR 레포지토리에 저장되는 것을 확인할 수 있다.

 

 

 

 

 

 


ECR에 새로 업로드된 이미지가 확인된다.

 

 

 

 

이 과정에서 Code build에 적절한 Role (S3, ECR, Code Commit) 설정이 되지 않으면 권한 문제가 발생하기 쉬우니. Code build가 접근하는 서비스에 대해 잘 이해하고 Role 설정을 해주자.

 

그래도 오류가 발생한다면, code build 생성 시 특권 모드를 활성화해주자.

 

 

 

 

 

 

아래는 위의 Buildspec 파일이 적절히 동작하기 위한 Role의 Json이다.

 


https://gist.github.com/overnew/85924993690786bd468ff02ce83fbb49

 

final_role.json

final_role.json. GitHub Gist: instantly share code, notes, and snippets.

gist.github.com

 

 

 

 

 

 

Terraform

 

 

 

 

 

 

 

 

 

참조

Docker build 공식 문서

 

https://docs.aws.amazon.com/ko_kr/codebuild/latest/userguide/sample-docker-section.html

 

Docker 샘플에 대한 CodeBuild - AWS CodeBuild

(root directory name)은 업로드하지 말고, (root directory name) 안에 있는 파일만 업로드하십시오. S3 입력 버킷을 사용하고 있는 경우, 파일을 포함하는 ZIP 파일을 생성한 다음, 이를 입력 버킷에 업로드

docs.aws.amazon.com

 

 

 

 

반응형
댓글
반응형
인기글
Total
Today
Yesterday
«   2024/12   »
1 2 3 4 5 6 7
8 9 10 11 12 13 14
15 16 17 18 19 20 21
22 23 24 25 26 27 28
29 30 31
글 보관함