ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • 내가 보려고 만든 CodePipeline 구축 A to Z
    인프라/aws 2024. 3. 23. 22:21

     

    1. 사전 설정하기

    EC2 관련 사전 설정하기 (링크의 2. EC2 세팅하기 참고)

     

    2. CodePipeline 생성하기

    CodeBuild를 먼저 생성하지 않고 CodePipeline에서 생성하는 것이 포인트입니다.

     

    2-1. 파이프라인 생성하기

    적당한 이름으로 파이프라인을 만들어줍니다.

     

    2-2. 소스 stage 생성하기

    version2를 선택해서 원하는 레포의 브랜치와 연결해줍니다.

     

     

    2-3. 빌드 stage 생성하기

    만들어준 CodeBuild를 연결하지 않고 새로운 Build를 생성합니다.

    Create project를 누르면 Code Build 탭에서 만드는 것과 동일한 프로세스를 진행합니다.

    차이점은 소스코드를 어디서 받는지 별도로 선택하지 않는다는 점입니다.

     

     

    ECR을 사용하기 때문에 privileged를 선택해주고, 필요하다면 환경변수를 입력해줍니다.

    성공적으로 추가된 모습입니다.

     

    ECR 사용을 위한 권한도 추가해줍니다.

     

    2-4. 배포 stage 생성하기

    우선 deploy stage는 skip합니다.

     

     

    2-5. 파이프라인 성공

    바로 성공을 한다면 문제없이 설정을 한 것입니다.

     

    2-6. s3 확인

    이런식으로 s3에 각 stage의 결과물을 옮길 수 있는 경로가 생성됩니다.

     

    이 버킷은 pipeline의 source stage 설정할 때 깃헙 연결하는 이름을 기준으로 만들어지기 때문에,

    실수로 지웟거나 다시 만들고 싶다면 github 연결할 때 사용하는 이름을 변경하면 됩니다.

    (새로운 이름의 connection을 생성하면 됩니다)

     

    3. CodeDeploy 생성하기

    deployment group만 생성하고 개별 deployment는 생성하지 않습니다!

     

    3-1. application 생성하기

     

    3-2. deployment group 생성하기

    이름과 권한을 설정해줍니다.

     

    태그 설정을 통해서 EC2와 연결합니다.

     

    선택한 권한은 이렇게 구성되어있습니다.

     

     

     

    4. CodePipeline 수정하기

    만들어둔 파이프라인을 수정합니다.

    Add stage를 통해서 Deploy stage를 생성합니다.

     

    Add  action group을 통해서 새로운 action을 생성합니다.

    여기서 보니 해당 액션에 결과물을 Source stage로 부터 가져올 수도 있는 듯 합니다.

     

    모두 저장 후 새롭게 pipeline을 실행합니다.

     

     

    5. 빌드 stage를 빌드와 테스트로 분리하기

    파이프라인 수정하기를 들어가서 add stage를 합니다.

    Test stage를 추가하고 테스트를 위한 새로운 CodeBuild를 하나 더 생성합니다.

     

    프로젝트에도 testspec.yml을 생성한 뒤, buildspec.yml에서 진행하던 테스트 관련 로직을 분리시켜줍니다.

    version: 0.2
    phases:
      install:
        runtime-versions:
          java: corretto17
      pre_build:
        commands:
          - java -version
    	  - aws s3 cp $REMOTE_PATH > ./src/main/resources/application.yml // application.yml을 s3에 업로드하고 가져다 사용
      build:
        commands:
          - ./gradlew test

     

    6. 불필요한 artifacts 제거하기

    application.yml을 s3에 업로드하고 test stage에서 소스코드에 반영합니다.

    test stage의 결과물을 새로운 폴더이름 SourceEnvArtifact르 생성합니다.

    개별 스테이지에서 input artifacs를 SourceEnvArtifact로 수정하고, Output Artifacts를 제거해줍니다.

     

    또 **spec.yml에서도 artifacts 관련 항목을 지워줍니다.

     

     

     

    감사합니다.

Designed by Tistory.