73. [JAVA] GitHub Repository 생성 방법
GitHub를 이용하여 Repository를 생성하고 자동 클론을 설정하는 방법을 단계별로 정리하였습니다. 아래의 과정을 따라 Repository 생성부터 GitHub Actions를 활용한 자동화까지 구현해 보겠습니다.
GitHub Repository 생성하기
1. GitHub 계정 로그인
: GitHub에 로그인합니다.
2. 새 Repository 생성
- 오른쪽 상단의 + 버튼 클릭 → "New repository" 선택.
- Repository 이름을 입력하고, 공개/비공개 여부를 설정한 뒤 "Create repository"를 클릭합니다.
3. GitHub Actions를 위한 Repository Secrets 설정
GitHub Actions는 CI/CD를 수행하기 위해 Secrets를 사용하여 민감한 정보를 보호합니다.
4. Secrets 설정 페이지 이동
Repository 페이지 → Settings → Secrets and variables → Actions → New repository secret 클릭.
5. Secrets 추가
필요한 정보를 입력합니다.
5-1. EC2_HOST: EC2 인스턴스의 IP 주소.
5-2. EC2_USERNAME: EC2 사용자 이름
5-3. EC2_SSH_KEY: PEM 파일의 내용
참고
EC2에서 PEM 파일 준비 및 배포
PEM 파일 준비:
EC2 연결 시 PEM 파일 필요.
기존 ppk 파일이 있다면 puttygen을 이용해 pem 파일로 변환.
PEM 파일을 IntelliJ 프로젝트에 업로드하되, 보안을 위해 민감 정보는 깃에서 제외하세요.
배포 과정 실행:
GitHub Actions가 푸시 이벤트를 감지하여 자동으로 빌드, 배포를 실행합니다.
5-4. 생성확인
6. yml 파일로 GitHub Actions Workflow 설정
GitHub Actions를 통해 자동으로 Repository를 클론하고 배포하는 과정을 설정합니다.
6-1. Workflow 파일 작성
-java
name: Deploy to EC2
on: //on( 시작하세요)
push: //누군가가 push 할때마다
branches: [ main ] //[ main ] 에 누군가에 수정을 하면
jobs:
deploy:
runs-on: ubuntu-latest
env:
ACTIONS_STEP_DEBUG: true
// 새로운 CRUD를 할수 있는 공간 생성
steps: uses: // actions/checkout@v2 를 실행
- uses: actions/checkout@v2
- name: Set up JDK 17
uses: actions/setup-java@v3
with:
java-version: '17' // java-version: '17' 버전으로
distribution: 'adopt'
- name: Build with Maven
run: mvn clean package -DskipTests // 테스트 없이 바로 생성 진행
- name: Copy JAR to EC2 // EC2 에 JAR 파일을 Copy 해라
env: // 생성한 아래 내용을 호출
PRIVATE_KEY: ${{ secrets.EC2_SSH_KEY }}
HOST: ${{ secrets.EC2_HOST }}
USER: ${{ secrets.EC2_USERNAME }}
run: |
echo "$PRIVATE_KEY" > private_key && chmod 600 private_key
scp -o StrictHostKeyChecking=no -i private_key target/*.jar ${USER}@${HOST}:~/app.jar
// jar파일을 private_key와 ${USER}@${HOST}을 이용하여 scp(복사)
- name: ssh to ec2
uses: appleboy/ssh-action@master
with:
key: ${{ secrets.EC2_SSH_KEY }}
host: ${{ secrets.EC2_HOST }}
username: ${{ secrets.EC2_USERNAME }}
script: |
PIDS=$(pgrep -f "java -jar -Dspring.profiles.active=prod app.jar")
if [ $(echo "$PIDS" | wc -l) -gt 1 ]; then // 기존에 진행된 서버의 경우
kill $(echo "$PIDS" | head -n 1) || true // 기존 서버는 강제종료(kill)진행
fi
sudo nohup java -jar -Dspring.profiles.active=prod app.jar > app.log 2>&1 &
// sudo(슈퍼유저)로 jar파일을 nohup( 실행)
6-2. Workflow 파일 생성
6-3. Workflow 파일 생성 확인
7. 클론 작업 자동화
GitHub Actions를 통해 EC2로 클론된 프로젝트는 항상 최신 상태를 유지합니다. IntelliJ와 EC2 간 동기화된 환경에서 작업을 진행할 수 있어 생산성이 증가합니다
완료!
위와 같이 클론 이 잘 진행되는것을 확인 할수 있습니다.
intelliJ
참고
1. 흰색 : 클론완료된 클래스
2. 파란색 : 클론완료후 수정된 클래스
3. 초록색 : 클론완료후 생성된 클래스