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를 눌러보자
이전에 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만 하면 알아서 자동 배포가 완료되게 되었다
'AWS > EC2' 카테고리의 다른 글
스트림릿 소스코드 수정 -> 서버 자동 수정 runOnSave (0) | 2024.05.08 |
---|---|
EC2서버 스트림릿 한글 폰트 적용법 2) 폰트 설정 및 수정 (0) | 2024.05.02 |
EC2서버 스트림릿 한글 폰트 적용법 1) 폰트 설치 (0) | 2024.05.02 |
EC2 서버 - 하나의 서버 n개의 페이지 run / --server.port 포트번호 (0) | 2024.05.02 |
EC2 업로드 과정 7) 터미널을 꺼도 서버 돌아가게 하기, 서버 닫기nohup, &, kill porcessID (1) | 2024.04.26 |