[Github Action] Github Action을 통한 자동 배포 적용하기 (React + NGINX)
프로젝트 중 React를 통해 구현된 프로젝트가 있고, 해당 프로젝트는 NGINX를 통하여 배포가 되고 있다. React 소스코드가 수정되면 새로운 버전을 서버에 반영하기 위해서는 아래의 과정을 거쳐야
obeyjy.tistory.com
이전 글에서 Github action을 통해서 Push 이벤트가 발생되었을 경우 자동으로 서버에 배포할 수 있도록 설정을 진행했다.
위 과정에서 한 가지 문제가 있었다. 기본적으로 원격 서버에 접속해서 기존 저장소의 내용을 Pull 할 때, 권한 인증을 수행해야 한다. 인증 부분을 수행하지 않으면 workflow가 실행될 때 Pull을 수행하는 부분에서 문제가 발생하기 때문에 의도한 대로 동작하지 않게 된다.
보통 인증은 시스템 전역에 인증 관련된 것을 세팅하거나, CLI 단에서 추가적인 옵션을 지정하여 처리하거나, Credential Helper를 통하여 진행할 수 있는데 이번에는 CLI 단에서 추가적으로 정보를 지정하여 처리하도록 했다.
name: Deploy to AWS EC2
on:
push:
branches:
- master
jobs:
deploy:
runs-on: ubuntu-latest
steps:
- name: Checkout code
uses: actions/checkout@v2
- name: Install SSH key
uses: webfactory/ssh-agent@v0.5.3
with:
ssh-private-key: ${{ secrets.SSH_PRIVATE_KEY }}
- name: Deploy to EC2
run: |
ssh -o StrictHostKeyChecking=no ${{ secrets.EC2_USER }}@${{ secrets.EC2_HOST }} <<EOF
cd ${{ secrets.PROJECT_PATH }}
if [ $? -ne 0 ]; then
echo "Directory change failed"
exit 1
fi
git pull https://${{ secrets.GIT_USERNAME }}:${{ secrets.GIT_PASSWORD }}@github.com/repo.git
if [ $? -ne 0 ]; then
echo "Git pull failed"
exit 1
fi
npm install
if [ $? -ne 0 ]; then
echo "NPM install failed"
exit 1
fi
npm run build
if [ $? -ne 0 ]; then
echo "Build failed"
exit 1
fi
sudo service nginx restart
if [ $? -ne 0 ]; then
echo "Nginx restart failed"
exit 1
fi
EOF
위 부분에서 이전과 달라진 것은 secrets의 GIT_USERNAME과 GIT_PASSWORD가 추가된 것이다. 해당 부분을 추가하면 Pull 명령을 수행할 때 인증에 대한 부분은 처리된 것으로 입력을 요구하지 않게 된다.

'Development > Git' 카테고리의 다른 글
[Github Action] Github Action을 통한 자동 배포 적용하기 (React + NGINX) (0) | 2024.02.23 |
---|