System/Cloud Infra

Jenkins + Github 연동

Master.jun 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 를 하면 자동 배포 완료