본문 바로가기

AWS

AWS EC2 에서 Github actions를 이용한 CI/CD(지속적 통합 및 배포)

윈도우 streamlit 에서 코드를 수정하면 바로 내가 배포한 EC2 리눅스 서버에 자동으로 배포해주도록 설정할 것이다.

 

1. EC2에 접속할 pem 파일을 준비한다.

먼저 윈도우창에 putty gen 을 치고 실행시킨다.

그다음 Load를 클릭하면 파일 선택창이 뜨는데 putty 실행시키기 위해 다운받았던 스트림키를 넣어주면 된다.

그러면 이러한 창이 뜨는데 Conversions 를 눌러준다

그러면 Export Open SSH key (첫번째 꺼)가 보이는데 그것을 클릭 해주고

파일 명.pem으로 저장해주면 된다. 그다음 창을 그냥 닫아주자(나중에 사용한다)

2.깃허브 들어가서 Settings에 들어가면 아래 화면처럼 뜨는데 Secrets and variables 를 누르면 Actions가 뜬다.

그것을 클릭해주자.

3.New repository secret이 있다. 그것을 눌러주고 3개의 레파지토리를 만들어줘야 한다.

ec2 들어갈 때 streamlit 키,ec2 아이디, IP주소가 필요했던 것처럼 여기에도 3개가 필요한 것이다.

New repository secret을 누르면 이렇게 뜰텐데 HOST로 제목을 짓고 Secret에는 ec2에 들어갈 때 썼던 ip주소를 쓰면된다.

SSH_PRIVATE_KEY 는 우리가 아까 만들었던 .pem 파일을 메모장으로 열어 전부 복붙해주면 되고,

USER 는 우리다 ec2로그인할 때 쓰던 아이디를 적어주면 된다.

4.이제 Actions로 들어가서 set up a workflow yourself를 눌러준다

들어가면 빈 화면이 뜰텐데 아래와 같은 코드를 작성 하면된다.(아래에 복붙 가능한 코드 있으니 그거 복붙하자)

주의할 점은 script: 부분에서 경로와 파일명이 나와 다를테니 각자 경로를 알아서 수정해주면 된다.(파란색 밑줄부분)

    name: deploy

# Controls when the workflow will run
    on:
    # Triggers the workflow on push or pull request events but only for the main branch
    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 Github/streamlit_car_price/                  
                git pull

그 다음 오른쪽 상단에 Commit Changes가 있을 텐데 클릭해주자

그리고 깃 허브데스크탑에 들어가 git pull을 해주고 VSC에 들어가주자

그럼 이렇게 main.yml이 만들어 졌을 것이다 

그다음 아무거나 수정하고 commit 하고 push하면 자동으로 리눅스에도 수정된 것이 배포 될 것이다