Codebuild 연동하기

Codebuild란 무엇인가?

Why Codebuild ?

file-download
6MB

Jenkins와 Codebuild

Jenkins와 Codebuild를 연동하게 되면, 빌드 또는 배포 job 은 jenkins에서 생성하고 실제 작업은 Codebuild를 통해서 진행하실 수 있습니다. Jenkins에서 Job이 실행되면 AWS 상에 독립적인 codebuild job이 생성 됩니다.

장점

  • 각 Job을 독립적인 환경에서 빌드/배포할 수 있습니다.

  • AWS Codebuild 특성상 특정 VPC내에서 실행하실 수 있기 때문에, 접근제어 또는 다른 서비스와의 연동 시 용이합니다.

  • Codebuild의 모든 로그를 Amazon CloudWatch Logs를 통해서 보실 수 있고, 기존의 빌드 및 배포 이력을 손쉽게 찾아보실 수 있습니다.

circle-info

본 실습에서는 artp(prod) 계정에서 동일 환경에 배포해보겠습니다.

사전 준비 사항

  • Jenkins와 Codebuild에 연동할 Github 토큰

  • Jenkins에서 사용할 AWS IAM User 및 Credentials

    • AWS_ACCESS_KEY_ID

    • AWS_SECRET_ACCESS_KEY

Github 토큰

  • Github 에서 Settings --> Developer settings --> Personal access tokens 를 들어갑니다.

  • Generate new token 을 클릭합니다.

  • 이름을 넣고 reporead:org권한을 추가한 후에 토큰을 발급합니다.

  • 발급받은 토큰은 임시로 안전한 곳에 저장해두시기 바랍니다.

IAM User 생성

  • Jenkins를 배포할 계정의 IAM directory를 찾아서 들어갑니다.

    • 예시 : terraform/iam/art-prod

    • 없으신 경우에는 이전 IAM 환경 구성arrow-up-right을 참조하셔서 먼저 환경 세팅을 해주시기 바랍니다.

  • GetLogEventsCodebuild:*에 관한 권한은 반드시 필요합니다. 다른 권한은 필요에 따라 추가/삭제하셔도 됩니다.

  • 아래와 같이 테라폼 코드를 작성하시고 나서, terraform apply 를 통해 배포하시면 콘솔에서 유저를 찾으실 수 있습니다.

생성이 완료되었으면 아래와 같이 Access Key를 발급 받습니다. 발급받으신 키는 반드시 안전한 곳에 보관하시기 바랍니다.

CodeBuild 생성

이제 연동할 Codebuild 프로젝트를 생성하도록 하겠습니다. Codebuild 프로젝트를 위해서는 아래의 리소스가 필요합니다.

  • Codebuild에서 사용할 IAM 역할

  • Codebuild의 기본 베이스가 되는 Docker image

  • Codebuild에서 사용할 보안그룹

  • Codebuild 프로젝트

IAM 역할 생성

  • Codebuild에서 사용할 역할이므로, 실제 빌드/배포에 필요한 권한을 가지고 있어야 합니다.

  • Codebuild를 생성할 계정의 IAM 디렉토리로 가서 생성을 진행합니다. (terraform/iam/art-prod)

Docker Image 생성(optional)

  • Codebuild는 컨테이너로 생성되므로 어떤 이미지를 사용하여 Job을 돌릴지 정해주어야 합니다.

  • 본 가이드에서는 필요한 이미지를 빌드해서 ECR에 저장하도록 하겠습니다.

  • ECR 레포지토리를 생성하는 디렉토리에 리소스를 추가합니다.

    • terraform/ecr/art-prod/prod_apnortheast2

    • Policy 에 Account ID는 자신의 계정 번호를 넣어주시면 됩니다.

  • ECR 레포지토리 생성이 완료되면, 각자 원하는 Docker Image를 생성해서 해당 Repository에 푸시합니다. (샘플 이미지는 올려놓았습니다!)

    • terraform/ecr/art-prod/prod_apnortheast2/Dockerfile-art-build-amazon

보안그룹 생성

  • VPC를 생성했던 곳으로 가서 Security Group을 생성합니다. (terraform/vpc/artp_apnortheast2 )

  • 만약 다른 곳에서 관리하고 계신 경우에는 해당 디렉토리에서 생성하시면 됩니다.

  • 생성한 Security Group을 외부에서 참조할 수 있도록 output에도 추가합니다.

Codebuild에 github 인증하기

  • AWS CodeBuild 콘솔로 들어갑니다.

  • Create build project 를 클릭합니다.

  • Connect using OAuth 를 클릭합니다. (Personal Access Token으로 하셔도 무방합니다)

  • 인증을 마치신 후에는 Cancel 누르고 빠져나오셔도 됩니다. 실제 프로젝트는 terraform 코드를 이용해서 생성할 예정입니다.

Codebuild Project 생성

  • Jenkins에서 사용할 Codebuild 프로젝트를 생성합니다.

  • Codebuild 프로젝트와 관련된 전체 코드는 아래 디렉토리에 module 형태로 올려놓았으니 참조해주시기 바랍니다.

    • terraform/codebuild/

  • 변경이 필요한 부분은 아래 주석으로 표시해 놓았습니다.

circle-info

본 가이드에서는 goployer 오픈소스를 활용하여 EC2를 배포할 예정입니다. goployer를 사용하고 싶으신 분들은 아래 링크를 참조해주시기 바랍니다.

https://github.com/DevopsArtFactory/goployer.gitarrow-up-right

Jenkins 설정

이제 Codebuild 연동을 위해서 Jenkins 세팅을 진행하도록 하겠습니. 본 세팅은 따로 코드로 정의하지 않았고, 아래 가이드를 통해서 한 번 설정하시고 나면 특별한 일이 없는 이상은 바꾸실 일이 거의 없습니다.

플러그인 설치

  • Manage Jenkins -> Manage Plugins 를 클릭합니다.

  • Available 항목을 가셔서 codebuild를 검색해보시면 AWS CodBuild 플러그인이 보이실 겁니다. 이걸 클릭하신 후에 Install now without restart 를 클릭합니다.

설치가 진행되면 Jenkins를 재실행 할 수 있도록 옵션을 클릭해주고 기다립니다. Jenkins가 설치를 마치면 알아서 재시작합니다.

Github 연동

  • Manage Jenkins -> Configure System 를 클릭합니다.

  • Github 란으로 가셔서 Add Github Server 를 클릭합니다. 이름을 입력하신 후에, Credentials 쪽에 Add 버튼을 클릭합니다.

  • Kind로 Secret text 를 선택하시고, Secret란에 이전에 발급받으신 github 토큰을 입력합니다. ID는 편하신대로 입력하셔도 됩니다. 완료되었으면 Add 버튼을 클릭합니다.

  • 생성하신 Credentials를 선택하고 Test Connection을 클릭하셔서 정상적으로 연결되었는지 확인합니다.

  • 정상적으로 테스트가 끝나면 Save 버튼을 누르셔서 현재 세팅을 저장합니다.

Codebuild 연동

  • 메인화면에서 New Item 을 선택합니다.

  • Freestyle project 를 선택하시고, 이름을 입력하신 후 ok를 클릭합니다.

    • 저는 hello production 어플리케이션을 배포할 예정입니다.

  • Build 란에서 AWS Codebuild를 선택합니다.

    • AWS Codebuild가 안보이시는 경우에는 위에서 플러그인이 제대로 설치되었는지 확인해주시기 바랍니다.

  • Select credentials from jenkins 를 선택하시고 Add 를 클릭해서 새로운 인증키를 생성합니다.

  • 사전에 발급받은 Jenkins User의 AWS Access Key와 AWS Secret Access Key를 입력합니다.

  • Region ID를 입력하시고, 이전에 생성했던 Codebuild 이름을 입력합니다. 이후에 Use Project Source 를 선택합니다. 따로 값은 입력하지 않으셔도 됩니다.

  • (Optional) 파라미터가 필요하신 경우에는 파라미터를 (원하시는만큼)입력합니다. 해당 파라미터는 codebuild로 전달하실 수 있습니다. 참고로 맨 위쪽에서 세팅하시면 됩니다.

  • 위의 파라미터를 Codebuild로 전달합니다. Codebuild 설정했던 부분의 Build Configuration 부분에 있습니다.

  • 설정이 완료되었으면 save 버튼을 누릅니다.

Codebuild 사용하기

  • Build with Parameters 를 클릭하셔서 Codebuild job을 실행합니다.

  • 빌드 번호를 선택하시고 Console Output 을 보시면 Codebuild의 로그를 보실 수 있습니다.

  • Codebuild를 확인해보시면 아래와 같이 실행되고 있는 Job을 보실 수 있습니다.

Last updated

Was this helpful?