Install/API Install

73. [JAVA] GitHub Repository 생성 방법

천재단미 2025. 1. 14. 10:52
728x90
반응형

 

 

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 파일 작성 

ec2_deploy.yml
0.00MB

 

-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. 초록색 : 클론완료후 생성된 클래스 

 

 

 

 

728x90
반응형
home top bottom
}