GithubActions, Docker, EC2를 이용한 CI/CD를 구축

나지은·2023년 12월 28일
0

CI/CD

목록 보기
1/2
post-custom-banner

CI/CD를 구축하며 했던 실수들을 공유합니다.

프로젝트 언어 && 프레임워크: Java11, Spring Boot2
배포 환경: EC2, Elasticcache, Docker
EC2 인스턴스 플랫폼: Ubuntu

내가 했던 실수 1.

✔️ YAML 파일을 Github secret에 등록할 때 들여쓰기가 제대로 되지 않았다.

도대체 뭐가 잘못된걸까.. 난 모든걸 제대로 입력했는데 왜 자꾸 잘못됐다고 나올까? 한참을 헤맸는데 원인은 들여쓰기가 잘못되어서였다... IntellJ에서 입력하고 정렬한 다음에 복붙하도록 하자

내가 했던 실수 2.

✔️ host에 Private IP를 넣었다.

SSH 연결을 위해 appleboy/ssh-action을 사용했다. SSH를 로컬로 띄웠을 때 나오는 IP를 host에 넣어주었다. 당연히 안된다! timeout이라고 뜨는데 해당 라이브러리 레포에 들어가서 timeout과 관련된 이슈는 다 읽었다. EC2에서 Public IP(Elastic IP)를 host에 넣도록 한다!

내가 했던 실수 3.

✔️ 나의 IP와 Github IP가 다르다는 것을 고려하지 않았다.

당연한 것이라고 생각할 수도 있지만..🙄 나는 IP가 다르다고 미처 생각하지 못했다. 처음에는 아무 생각 없이 SSH port에 대해 나의 IP만 열어두었다. 그러다보니 Github Actions에서 SSH에 접근하려고 할 때 당연히 실패하고 말았다. 정~~말 한참 동안 헤매고 엉뚱한데서 답을 찾으려고 했다. appleboy/ssh-action 레포만 한참 뒤졌다. 그러던 중 갑자기 Github의 IP가 내 IP와 같을까? 라는 의문이 들었다. GPT에게 물어보니 다를 수도 있다는 답변을 받았다. 22 port를 인바운드 규칙에서 모든 IP에 대해 열었더니 성공했다. 굉장히 허무하고 어처구니 없었다.😩

추가 사항

22 포트(SSH)에 대해 모든 IP에 대해 열어놓은 것이 마음에 안든다. Github의 IP를 조회할 수 있는 방법이 있는 것 같은데 이 방법으로 수정하는 것이 좋겠다.

gradle.yml

    - name: Deploy
      uses: appleboy/ssh-action@master
      id: deploy
      with:
        host: ${{ secrets.HOST }}
        username: ubuntu
        key: ${{ secrets.PRIVATE_KEY }}
        envs: GITHUB_SHA
        script: |
          sudo docker stop $(docker ps -a -q) 
          sudo docker rm $(docker ps -a -q) 
          sudo docker pull ${{ secrets.DOCKER_USERNAME }}/munbnaggu
          sudo docker run -it -d -p 8080:8080 ${{ secrets.DOCKER_USERNAME }}/munbanggu
profile
즐거움을 찾는 개발자🐯
post-custom-banner

0개의 댓글