본문 바로가기
AWS/EC2

EC2 서버 자동 수정 배포 Git Actions

by 하니__ 2024. 5. 7.

CI/CD

지속적 통합 Continuous Integration

지속적 배포 Continuous Delivery/Deployment

 

오래전이야 업데이트 할 것들을 잔뜩 모아모아

관리자의 승인을 받아 한번 업데이트하고

 

또 다시 변경 요구사항을 모아모아서

또 다시 업데이트할 것들을 모아모아

관리자의 승인을 받아 한번 업데이트 하고

 

이렇게 불필요한 시간과 불필요한 업무체계가 있었지만

이걸 간소화 시키는 작업이 필요했다

 

이것을 애자일이라고 하는데

 

하나하나 업데이트 되는데로 서버에 올려 확인하고

다른 개선사항들을 또 바로바로 릴리즈 해나가는 것을 의미한다

 

시간도 단축될 뿐더러 중간중간 요구가 달라진다면 개선도 빠를 수 있다

 

 

 

그렇다면 지금의 방식에서 서버를 수정하는 방식을 생각해 보자

 

 

 

 

서버를 수정할때마다 git push 하는건 당연한거고

이렇게 귀찮게 PuTTy를 접속해서

서버인 리눅스에 반영하기 위해

그 경로의 폴더를 들어가서 git pull 받아줘야한다

 

이걸 간소화 할 순 없을까

 

당연히 가능하다

 

깃허브에 git push를 하면 알아서 서버에서 git pull까지 하게 하는 기능

 

git actions 라고 한다 일단

 

 

 

자동 배포할 깃허브 repository로 들어가 세팅으로 가보자

 

 

그러면 좌측에 security가 있고

security의 secrets and variables를 눌러

Actions를 눌러보자

 

 

 

AWS 서버 업로드 과정 2) putty, 아나콘다, 파이썬 설치 및 설정

2024.04.25 - [AWS] - AWS 서버 업로드 과정 1) EC2 인스턴스 생성  EC 인스턴스는 생성했으니 다음단계로 넘어가자  이제 Putty 를 다운로드 받고 설정을 시작하자 Putty 설정    PuTTY를 사용하여 Windows

hani08.tistory.com

 

 

이전에 PuTTy를 접속할때를 생각하면

Host name(IP주소)와

보안key가 필요하다

 

그렇다면 이것을 깃허브에게 알려주면 되겠다

 

 

 

 

그러면 하단에

리포지토리 시크릿이라는것이 있는데 이곳에

new를 눌러

 

이렇게 입력해서 add 해주자

 

 

여기서 IP주소는

PuTTy에 접속할때 적는 그 IP주소다

 

 

그리고 이번에는

 

PuTTy를 설치할때 같이 설치된

PuTTY key Generator를 실행시켜

ppk파일을 pem파일로 변환하자

 

우리의 컴퓨터는 윈도우지만

깃허브의 컴퓨터는 리눅스환경이므로

리눅스가 접속할때의 키를 사용할수 있게

pem파일로 변환할 필요가 있다

 

여기서 load를 눌러

ppk파일을 지정한뒤에

 

상단에 있는 컨버젼스 메뉴를 눌러

익스포트 오픈SSH키 를 누르면

뭘 물어보는데 고민말고 예 를 눌러주자

그리고 확장자를 pem으로 저장하자

그러면 이렇게 pem으로 저장되는것을 볼 수 있는데

이번에는 이것을 메모장으로 열어

 

이 내용을 그대로 복사하여

 

이렇게 또 붙여놓고 아까 만든 것 처럼 하나 더 추가하고

 

PuTTy를 실행한뒤에 로그인할때의 아이디도 필요하다

얘도 같이 추가하자

 

그러면 이런 모습이 된다

 

이제 

 

 

여기까지 가능하게 된거다

 

 

이번엔 상단의

 

Actions를 들어가

 

 

여기서 푸른색의 셋업으로 들어가자

 

 

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

그리고 이 텍스트를 copy&paste하자

 

그리고 아래의 내용에서 수정할것은 수정하자

 

 

 

on - 언제 작동할것인가

push - 깃 푸시 했을때

 

branches : main

이 상태가 main일때

 

jobs 어떤일 할것인지

SSH runs on ubuntu - 리눅스 PC 준비해라

key - 아까 준비한 경로 

host - 아까 준비한 경로

username - 아까 준비한 경로

 

그리고 스크립트 부분에는

파일이 수정되었을때 늘 쓰던

경로로 들어가서 git pull을 하는 그 문구를 써주자

 

 

그리고 커밋 체인지를 눌러준 뒤에

깃허브 데스크탑으로 들어가 pull을 눌러주자 새로운 파일이 생겼을 것이다

위에서 만든 파일이 생겼고

 

이제 수정을 해보고 서버에 자동 배포가 되는지 확인을 해보자

 

 

 

 

좌측이 로컬 사이트 우측이 서버 사이트

 

 

그리고 평소대로 Push를 누르면

 

 

 

 

 

 

 

이제 git push만 하면 알아서 자동 배포가 완료되게 되었다