DevOps/Github

Github Actions(깃허브 액션즈)로 서버 자동 배포 하기

567Rabbit 2024. 5. 20. 12:28

CI/CD

- Continuous Integration (CI) - ex) github에서 직접 pull하여서 수정사항이 완료되면 수동으로 서버에 연동

- Continuous Delivery/Deployment (CD) ex) github actions자동으로 수정사항을 서버에 반영한다.

 

 

애자일 방식

일단 아이디어 개발단계까지의 시간은 축소시키고, 배포한 후에 수정, 개선사항을 바로바로 반영하는 것으로,

CD방식을 사용하면 애자일 방식을 더욱 간편하게 추구할 수 있다.

 

 

 

깃허브 액션즈할 repository를 선택하고,

 

Settings를 클릭

 

 

 

왼쪽 메뉴창에서 Secrets and variables -> Actions로 이동한다.

 

 

 

 

New repository secret 버튼을 누른다.

 

 

 

 

 

 

(1) Name을 HOST로 입력,

 

 

 

 

Secret 부분에는 IPv4 주소를 복사해서 입력하면 된다.

 

 

 

 

 

 

EC2 서버를 여는 방법은 아래를 참조

 

https://codebunny99.tistory.com/58

 

Streamlit) EC2로 여러 개의 웹페이지 실행하기, Potty(푸티) 용어 정리

일반 웹페이지 생성은https://hope91.tistory.com/20?category=1197140 [AWS] AWS(아마존 서버)에 앱 배포하기(1) / EC2 인스턴스 생성하는 방법AWS에 앱을 배포해보자AWS에 앱을 배포하려면 몇가지 단계를 거쳐야

codebunny99.tistory.com

 

 

 

 

 

 

 

(2) Name을 SSH_PRIVATE_KEY로 입력,

 

 

 

Secret 부분에는 PuTTy(마찬가지로 위의 글 Streamlit) EC2로 여러 개의 웹페이지 실행하기, Potty(푸티) 용어 정리 참고)

를 설정하면 key.ppk 하나가 나오게 되는데, key.ppk -> key.pem으로 변환해야 한다.

 

 

 

 

PuTTy를 설치하면 자동으로 PuTTYgen도 함께 설치되는데, PuTTYgen을 통해 .ppk를 .pem으로 변환 가능하다. 

 

 

 

 

 

Load를 눌러서 key.ppk를 선택하고,

 

 

 

 

Conversions에서 Export OpenSSH key를 선택하고,

 

 

 

 

 

예(Y)를 누르고

 

 

 

 

 

 

.pem으로 하여 저장한다

 

 

 

 

 

 

 

다시 Actions로 돌아와서, Secret 부분에 key.pem 파일을 끌어다가 놓으면

 

 

 

 

 

 

새로운 웹페이지에 코드가 열리는데, 컨트롤+a 하여 모두 복사하여 Secret부분에 붙여넣으면 된다.

 

 

 

 

 

 

 

 

(3) Name을 USER로 입력,

 

 

putty에서 ec2-user을 치고 로그인하므로, USER의 Secret은 ec2-user라고 작성해준다.

 

 

 

 

 

 

(4) Actions New workflow 만들기

 

 

Actions -> New workflow 버튼을 클릭한다.

 

 

 

 

 

set up a workflow yourself 를 클릭한다.

 

 

 

 

다음과 같이 작성한다.

 

** 중요 **

Script에는 자신의 Github파일이 있는 올바른 경로로 지정해주면 된다.

나는 Github에 commit한 내용이 내 문서/Github/project310/ 폴더에 있었기 때문에, 경로를 이 곳으로 지정하였다.

 

 

 

 

코드는 아래 txt에서 다운받아서 사용하면 된다.

 

github_actions_workflow.txt
0.00MB

 

 

 

 

 

자동으로 반영되었는지 현황은 Github Actions 메인화면에서 확인하면 된다.

 

 

 

 

이 과정을 거치면

기존에는 PuTTy에서 git pull하여 새로 서버를 구동하는 작업을 거쳐야했지만,

 

그 과정을 거치지 않고도 Github Desktop에서 git pull 버튼을 누르는 것만으로도

구동중인 서버의 수정사항을 실시간으로 서버에 반영할 수 있다.