안녕하세요 :)
제가 그토록 바라던 바라던 제 개인 프로젝트 개발을 진행중입니다 !
큰 틀은 공공데이터 포털에 반려동물 구조 관련 프로젝트를 만들거고요
기본적인 로그인/회원가입, 공공데이터 포털 api 받기, 커뮤니티, 캘린더, 결제 (후원), sns 회원 로그인 등
해보고싶은게 많아서 차근차근 해야겠죠?
그런데 매번 서버에 배포할때마다 war 파일 받아서 ftp 파일질라로 접근해서 배포하는 과정이
귀찮아서
git action 을 이용해서 자동 배포가 되도도록 만들었습니다!
구현 환경
개인 프로젝트 backend 소스 자동 배포 가능하도록 목적!
개인 서버 - 리눅스 우분투
깃허브 ( public -> private 변경하고 이슈 발생했음 )
깃허브 레파지토리 들어가서 Action 탭으로 들어갑니다
저는 제 스스로 작성하기 희망해서 "set up a workflow yourself" 버튼 클릭했습니다!
이런식으로 깃허브 안에서 소스 작성해서 커밋까지 할수있습니다:)
사진은 예시로 다른 레파지토리이니깐 참고만 해주시고용
자 깃허브에서 커밋 하게 되면
프로젝트 폴더중에 위에 사진에 해당하는 경로에 조금전에 작성한 yml 파일이 생성이 됩니다!
name: BackEnd_study
on:
push:
branches: [master]
pull_request:
branches: [master]
jobs:
deploy:
runs-on: ubuntu-latest
steps:
# 1. GitHub Actions에서 리포지토리 코드 가져오기
- name: Checkout code
uses: actions/checkout@v3
# 2. SSH를 통해 원격 서버에서 작업 실행
- name: Deploy to Tomcat
uses: appleboy/ssh-action@v0.1.5
with:
host: ${{ secrets.HOST }}
username: ${{ secrets.USERNAME }}
password: ${{ secrets.PASSWORD }}
port: ${{ secrets.PORT }}
script: |
# 프로젝트 디렉토리로 이동
cd /home/project/danchu_back
# 최신 코드 가져오기
echo "https://${{ secrets.GITNAME }}:${{ secrets.TOKEN }}@github.com" > ~/.git-credentials
git config --global credential.helper store
git pull origin master
# 프로젝트 빌드 (예: Gradle)
./gradlew build
# Tomcat 중지
cd /home/tomcat/apache-tomcat-10.1.25/bin
sudo ./shutdown.sh
# 빌드된 WAR 파일을 Tomcat의 webapps 디렉토리로 복사
cp /home/project/danchu_back/build/libs/danchu_back.war /home/tomcat/apache-tomcat-10.1.25/webapps/
# Tomcat 시작
sudo ./startup.sh
저는 간단하게 yml 배포 스크립트를 짜봤습니다.
스크립트에 보시면 secret.HOST/ servcet.USERNAME 동적인 ${} 표기가 보이시죠 ?
레파지토리 Setting -> Secret and variables > action 탭으로 들어가서
각자 스크립트에 사용해야하는 항목들을 입력해줍니다! ( 초록색 버튼 누르면 입력하는 창 뜹니다 ~ )
주의사항 !!!!
저는 처음에 public 으로 레파지토리 열어놔서 git pull origin master 로 해도 토큰 인증하는게 없었어요!
그래서 깃액션 배포가 잘 되다가 개인 서버 주소 올라가있어서 private 로 변경하고 나서부터 오류 발생 뚜둥...
(레파지토리 private)
그래서 깃 배포로 하지말고 제가 ssh 접근해서 git pull origin master 명령어 입력하니
깃 아이디, 비밀번호(토큰) 입력하라는 창이 나오더라고요
바보같이 비밀번호를 비밀번호 입력하고 ... ㅋㅋㅋㅋㅋㅋㅋ ssh 토큰 발행해서 그걸로 하니 잘 되더라고요 ㅎㅎㅎㅎㅎㅎ
그러면 자자 ssh 로 토큰 입력하니 깃 풀 받은거 확인했으니
이거를 스크립트로 짜야겠죠?
그래서 추가한 부분이
이 두줄을 입력했습니다 ( chat gpt 한테 물어봤어요 ㅎㅎㅎㅎㅎㅎㅎㅎ )
Git action 하다가 안되면
파일질라 들어가서 tomcat/log 들어가서 localhost~~~ / catalina 파일 다운받아서 로그 확인해보기!
그러면 무슨 이슈인지 알수있습니다.
참고로 저는 라이브러리 주소를 계속 다른곳 바라보길래 깃이 제대로 안받아졌나 ? 하고 의문이 들어서
ssh 터미널로 접근해서 로그 확인해봤습니다!
모두들 Git Action 파이팅
[ 다음에는 리액트 깃액션으로 자동 배포 해야지...... ]