AWS

Github Actions 을 이용한 CI/CD

yugyeong 2022. 12. 20. 11:19

 

Github Actions 은  Github에서 제공하는 워크플로우(workflow)를 자동화하도록 도와주는 도구이다. 

 

CI/CD 는 지속적 통합 ( Continuous integration ) 과 지속적 배포 ( Continuous delivery ) 를 의미한다.

 

 

 

 

Github Actions 을 설정하는 방법이다.

 

 

먼저 윈도우즈 사용자라면, EC2에 접속할 .pem 파일을 해야한다.

만약 윈도우즈에서 .ppk 파일로 사용중이였다면 putty key generator 툴을 이용하여서 .pem 파일로 변환을 해주어야 한다.

 

1. putty key generator 툴을 실행 시킨 후, 기존 ppk 파일을 load

2. Conversions 메뉴 선택 - Export Open SSH 선택후 파일명.pem 형식으로 저장을 해준다.

 

 

 

github 사이트의 actions 를 설정하고자 하는 프로젝트에 들어간 후,

setting - 사이드바의 secrets - actions 를 클릭하여서 SSH_PRIVATE_KEY, USER, HOST 키를 설정해주어야 한다.

 

 

 

New repository secret 을 클릭하여서 시크릿을 생성해준다.

 

SSH_PRIVATE_KEY  에는 위에서 설정한 .pem 파일을 copy and paste 를 해준다.

 

HOST 에는 AWS - EC2 에서 생성한 인스턴스를 넣어준다.

 

USER 에는 ec2 에 접속할 때, 로그인 했던 명령어를 넣어주면 된다.

현재는 ec2 에서 기본으로 제공을 해주는 ec2-user 를 사용하고 있기때문에, ec2-user 를 입력하면 된다.

 

 

설정이 완료되었으면, Actions - set up a workflow yourself 를 클릭한다.

 

 

 

github actions 의 workflow 를 만든다.

 

아래는 작성한 소스코드를 푸시하면 자동으로 EC2 에서 pull 하도록 하는 코드이다.

아래 코드를 작성한 후 저장을 해주면 된다.

 

name: ec2 deploy
on:
  push:
    branches:
      - main

jobs:
  SSH:
    runs-on: ubuntu-latest
  
    steps:
      - uses: actions/checkout@v3
      - name: ssh to ec2
        uses: appleboy/ssh-action@master
        with:
          key: ${{ secrets.SSH_PRIVATE_KEY }}
          host: ${{ secrets.HOST }}
          username: ${{ secrets.USER }}
          script: |
            cd streamlit_car_price_app
            git pull

 

 

github actions 를 모두 설정하였다면, 이제 putty 를 이용하여서, streamlit 을 서버에 배포하면 된다.

 

하지만 기존에 사용하였던 nohup streamlit 명령어를 이용하면, streamlit 서버가 소스 코드 바뀐 것을 반영하지 못한다.

따라서 스트림릿의 실행 명령을 아래처럼 수정 해준다.

 

nohup streamlit run 파일명.py --server.port 포트번호 --server.runOnSave true &