이전 글에서 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 |
---|