ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • Bitbucket Pipelines + EC2 + NestJS
    공부/AWS 2025. 1. 19. 23:30

    작성하는 글은 codedeploy를 사용하지 않고 EC2에 바로 bitbucket pipelines가 배포할 수 있도록 하는 방법입니다.

    하지만, 이 방법은 그리 추천하지 않습니다. 이유는 .pem 키로 접속하는 것을 할 수 없도록 하기 때문입니다.


    초기설정

    Session Manager를 이용할 수 있도록 등록이 필요합니다. 제가 작성한 블로그 글을 통해서 등록하시기 바라겠습니다.( 링크 )

     

    1. Bitbucket에서 내 Repository에 Repository Settings를 선택 후 pipelines 탭에서 SSH Keys 선택

    - Generate keys를 클릭하여 키를 생성합니다.

     

    2. 생성된 키를 Copy합니다. 

    3. 해당 키를 EC2에 등록합니다.(키를 등록하기 전에 기존에 있던 키를 복사해 두세요. 해당 키는 .pem키의 공개키입니다.)

    - cat ~/.ssh/authorized_keys 로 키의 값을 확인합니다.

     

    - vi ~/.ssh/authorized_keys를 입력하여 복사한 키값을 저장합니다.

    - 변경된 키를 확인합니다. 이제 .pem키를 이용해서 접속을 할 수 없습니다. 그렇기 때문에 Session Manager가 필요합니다.

    - Session Manager를 사용하시지 않는다고 하시면 EC2 Connection을 이용하셔도 됩니다.

     

    4. 보안그룹에 Bitbucket ip를 등록해줍니다. ( bitbucket ip 확인 링크

    - bitbucket pipelines에서 전달하는 데이터를 받을 수 있도록 해야 됩니다.

    - 혹시, 인바운드를 규칙을 설정하실 때, ssh로 접근하는 ip를 bitbucket으로 해주시면 됩니다.

    - bitbucket ip는 주기적으로 변경이 일어난다고 합니다. 그래서 지속적으로 확인이 필요하실 거 같습니다. 

     

    - 저의 경우 IPv4에 있는 3가지를 모두 등록하였습니다.

     

    5. bitbucket-pipelines.yml 파일 작성

    image: node:18
    pipelines:
      branches:
        dev:
          - step:
              name: Deploy to Dev EC2
              script:
               - pipe: atlassian/ssh-run:0.2.6
              variables:
                SSH_USER: $DEV_EC2_SSH_USER
                SERVER: $DEV_EC2_SERVER_IP
                COMMAND: |
                  export PATH=/home/ubuntu/.nvm/versions/node/v18.17.1/bin:$PATH
                  cd 실행 폴더
                  git pull origin dev
                  npm install
                  npm run build
                  pm2 restart 실행중인 서버

    - SSH_USER는 EC2의 유저를 입력(저는 ubuntu 유저였습니다. 모르신다면 지금 EC2 인스턴스에 접속하여 유저@ip-xxxx에서 유저 부분을 확인하시면 됩니다.

    - SERVER는 EC2의 public ip를 입력하시면 됩니다.

    - SSH_USER와 SERVER는 Repository variables에 등록하시면 됩니다.

    - COMMAND에서 export PATH=/home/ubuntu/.nvm/versions/node/v18.17.1/bin:$PATH 부분은 npm을 사용하기 위해서 node의 위치를 지정해줘야 합니다. 사용하시는 node의 위치를 모르신다면, which node를 입력하여 확인하실 수 있습니다.

    6. 테스트를 진행해 봅니다.

     


    해당 방법은 좋은 방법이라고 생각이 들지 않는 게, 우선 ec2와 .pem으로 연결된 공개키를 바꿔야 하기 때문입니다. 그리고 bitbucket의 ip를 지속적으로 확인하여 변경해줘야 하는 불편함이 있습니다. 인스턴스에 직접 접근하여 build를 하는 과정에서 memory와 CPU의 사용량이 증가하여 리소스를 낭비하는 일이 발생도 합니다.

    이외에도 단점이 많다고 생각합니다. 그러나 제가 해당 방법을 했던 이유는 CI/CD를 진행하면서 AWS의 다른 서비스를 이용하지 않고 bitbucket pipelines 컨테이너를 이용해서만 시도를 해보고 싶었습니다.

    다른 사람이 봤을 때는 불편하게 그런 걸 시도하냐 일 수도 있지만, 여러 가지를 시도해 보는 경험은 실패든 성공이든 항상 좋다고 생각합니다.

     

     

    특정 문제나 궁금한 점을 검색하며 찾아보고 작성한 글입니다. 혹시라도 부정확한 정보를 전달드릴 수 있습니다. 틀린 부분이 있으면 댓글을 남겨주세요.

     

    Ref.

    https://www.atlassian.com/blog/it-teams/ip-address-update-2024

     

    Update: New IP addresses for Bitbucket Cloud - Work Life by Atlassian

    Bitbucket Cloud IP has updated IP address ranges, effective starting July 2024.

    www.atlassian.com

     

    댓글

Designed by Tistory.