이전 글에서 Code Deploy를 사용하여 CI/CD 구축을 위한 설정 방법을 포스팅 했었는데, 구축하고 나서 생각을 했을 때 굳이 사용할 필요가 없을 것 같다.
현재 배포 방식은 EC2 ssh 환경에서 pm2로 무중단 배포를 적용했고, 변경 사항이 생길 때 마다 ssh 환경에 접속하여 아래의 작업을 수행해줘야 하는 번거로움이 있다.
cd <project directory>
git pull <branch>
npm run build
pm2 restart
이 작업을 자동화 해보도록 하자
github Action workflow 작성하기
github repository에서 Actions를 클릭하고 set up workflow yourself를 클릭해서 작성해보자
그럼 이러한 화면이 뜨는데, 저기에 내 환경에 맞는 Workflow를 작성해주면 된다.
name: deploy
on:
push:
branches:
- [배포할 branch]
jobs:
AUTO_DEPLOY:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v2
- name: Run scripts in server
uses: appleboy/ssh-action@master
with:
password: ${{ secrets.PASSWORD }}
host: ${{ secrets.HOST }}
username: ${{ secrets.USERNAME }}
port: ${{ secrets.PORT }}
script: ${{ secrets.SCRIPT }}
EC2의 ssh 환경과 연결을 위해 appleboy/ssh-action@master workflow를 사용하였다. 여기에서 공식 docs를 확인할 수 있다.
❗️ Workflow 작성시 syntax를 유의하여 작성해야 한다. 공식문서를 읽어보고 참고하여 작성하도록 하자
Workflow가 실행될 때 필요한 정보들 중 외부에 노출되면 안되는 정보들을 github secret에 적용해야 한다.
Settings > Security > Secrets and variables > Actions에 등록해주면 된다.
cd <project directory>
git pull <branch>
npm run build
pm2 restart
정상적으로 적용되었는지 확인
느낀점
너무 간단한 CI/CD 환경 구축이라 아직 해봐야 할게 산더미다. 추후에는 PR시 Test 적용과 Docker를 사용한 무중단 배포환경의 CI/CD를 적용해보도록 하자.
참고 문서 : https://github.com/appleboy/ssh-action
https://docs.github.com/ko/actions/using-workflows/workflow-syntax-for-github-actions
https://rakeshwrites.medium.com/how-to-enable-password-authentication-in-aws-ec2-instances-26fbdddd74b0