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. 초록색 : 클론완료후 생성된 클래스
'Install > API Install' 카테고리의 다른 글
74. [JAVA] Spring Boot JPA 사용 설정 및 IntelliJ 설정 가이드 (0) | 2025.01.14 |
---|---|
70. [ JAVA ] IntelliJ 작업 후 AWS와 GitHub에서 자동 클론 (0) | 2025.01.13 |
68. [JAVA] 공공데이터 포털 API 이용 방법 : 영화 박스오피스순위 (0) | 2025.01.13 |
62. [ JAVA ] Spring Boot를 이용한 API 통신 : 유튜브 API 세팅 (0) | 2025.01.12 |
51. [ JAVA ] Spring Boot를 이용한 API 통신 : Naver API 세팅 (1) | 2025.01.10 |