ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • Jenkins + Github 연동
    System/Cloud Infra 2021. 11. 25. 22:53

    Jenkins 와 Github 연동

     

    Step 1. GitHub Token 접속 Token 생성

     

    - 오른쪽 상단에 프로필 에서 Settngs 선택

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

    - 왼쪽 메뉴 중에 Developer Settings 선택

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

    -  Personal Access Tokens 선택

     

     

     

     

     

     

    - Generate New Token 선택

     

     

     

     

     

     

     

     

     

    - Token 명 설정

    - 만료 날짜 설정

    - Select Scopes 에서 token scope 설정

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

    - 완료가 되면 하단에 가려진 부분 쪽에 Token 생성

    - 해당 Token 을 사용해서 연동

     

     

     

     

     

     

     

     

     

     

     

    Step 2. Jenkins 에 GitHub Credential 입력

     

    - 왼쪽 메뉴 Manage Jenkins 선택

    - Manage Jenkins 메뉴에서 Configure System 선택

     

    - 하단 설정 중에 Github 메뉴에서 Add Github Server 선택

     

    - Credential 등록 하기 위해서 Credentials 에서 Add 선택

    - Credential 팝업 아래 내용대로 작성

    - Domain : Global Credentials 

    - Kind : Secret Text

    - Secret : Github Token 입력

    - ID : Github ID 입력

     

    - Credential 입력한 내용 선택

    - Name 에 이름 입력

    - Test Connection 으로 접속 테스트 확인

     

    Step 3. Jenkisn Item 생성

     

    - 왼쪽 목록에 New Item 선택

    - Project 이름 생성

    - Freestyle Project 선택

    - Source Code Management 에 Git 선택

    - credentials 에서 Add 추가

    '

    - Domain :  Global Credentials

    - Kide : Username with password

    - Scope : Global

    - Username : Github id

    - Password : Github password

    - ID : Credential id(사용자 임의)

    - Repository URL 입력

    - Credentials 에 생성한 username/password 선택

     

    Step 4. Gradle 배포

     

    - Build Section에서 Add build step 클릭하여 Invoke Gradle script 생성

    - Use Gradle Wrapper 선택

    - Tasks 에 clean build 명령어를 넣어 build

    Step 4. SSH key 생성

     

    - EC2 접근 하기 위해서 pem key 등록

    - 이전에 진행하였듯이 Global credentials 에서 등록

    - key : SSH Username with private key

    - Scope : Global

    - ID : 임의 이름

    - Username : 접속 username

    - priavet key : Enter directly

    - 하단에 pem key 내용을 복사 붙여넣기 함

    Step 5. SSH 등록

    - Jenkins Management -> Configure System

    - Publish over SSH 에서 ssh server 등록

    - Hostname : 접속할 주소

    - username : server 이름

    - check connection 을 통해서 접속 되는지 확인하고 저장

    Step 6. 빌드 후 조치

    - 빌드 후 빌드 파일을 서버에 전달하여 배포를 진행해야함

    - item 의 configure 로 들어가서 Post Build Action Section에서 Add action 선택

    - send build artifacts over SSH 선택

    - 등록했던 SSH 서버 선택

    - source files :  전달할 파일 (기본적으로  /var/lib/jenkins/workspace/프로젝트 안에 있음)

    - remote directory : reomote server 에 저장할 위치

    - Exec command : 전달 후 실행할 command

    Step 7. deploy.sh 생성

     

    - 배포할 서버에 위에 설정한 위치에 맞게 생성

    vi deploy.sh
    
    
    #!/bin/bash
    
    PROJECT_NAME=demo
    PROJECT_PATH=/home/ec2-user/deploy/build/libs/
    
    
    
    # Function
    function stop(){
       echo "> Running Application pid"
    
       CURRENT_PID=$(pgrep -f ${PROJECT_NAME}*.jar)
    
       echo "Running Application pid: $CURRENT_PID"
    
       if [ -z "$CURRENT_PID" ]; then
          echo "> Not exist Running Application"
       else
          echo "> kill -15 $CURRENT_PID"
          kill -15 $CURRENT_PID
          sleep 5
       fi
    
       sudo echo " "
    }
    
    function start(){
       echo "> Delploy New Application"
       JAR_NAME=$(ls -tr $PROJECT_PATH | grep jar | tail -n 1)
       echo "> JAR Name: $JAR_NAME"
       nohup java -jar $PROJECT_PATH/$JAR_NAME > /dev/null &
       echo " "
    }
    
    # Function Call
    stop
    start

     

    Step 8. 이제 Jenkins 프로젝트에서 build 를 하면 자동 배포 완료

    댓글

Designed by Tistory.