Jenkins + Github 연동
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 를 하면 자동 배포 완료