허원철의 개발 블로그

CI - 젠킨스 빌드하기 본문

server

CI - 젠킨스 빌드하기

허원철 2017. 6. 28. 16:03
이번 글은 Github Repository에 올려놓은 프로젝트를 이용하여 젠킨스를 이용해보는 예제 글입니다.
  
 
새로운 Item 생성하기
 
- item 이름을 정해주고, Freestyle project 선택합니다.
 

 

 

소스 코드 관리
 
- Git을 선택하고, 해당 Repository URL을 기입합니다.
 

 

- Credentials → Add : 로그인 계정을 기입합니다.
  

 
- Branches to Build : master로는 다른 작업을 위해 다른 Branch를 이용하도록 하겠습니다.
 
 
Build
 
- 설치한 Gradle을 이용한다면 Invoke Gradle을 이용합니다.
- 이번 포스팅은 Spring Boot + Gradle Wrapper를 이용합니다.
① [ Make gradlew executable ] 체크
② Wrapper location : jenkins에서 제공해주는 환경변수가 있는데, ${workspace}는 해당 item 경로입니다.
③ Tasks : Gradle Task 명령어를 기입합니다.
 

 
  
Add Build step
 
- Linux는 shell script를 이용하여 Spring Boot를 실행할 것입니다.
- [ Execute shell ] 선택
 
1) shell script
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
#!/bin/bash
# bash Call
# sudo bash {PATH}/deploy.sh 8080 spring-boot-jenkins
 
# Field
 
# Server Port
# Ex) 8080
SERVER_PORT=$1
# Service Name
# Ex) spring-boot-jenkins
PROJECT_NAME=$2
 
PROJECT_PATH=/var/lib/jenkins/workspace/$PROJECT_NAME/build/libs
JAR_FILE=$PROJECT_PATH/$PROJECT_NAME-0.0.1-SNAPSHOT.jar
TMP_PATH_NAME=/tmp/$PROJECT_NAME-pid
 
# Function
function stop(){
    sudo echo " "
    sudo echo "Stoping process on port: $SERVER_PORT"
    sudo fuser -n tcp -k $SERVER_PORT # tcp $serverPort에 해당하는 port를 Kill함.
 
    if [ -f $TMP_PATH_NAME ]; then
        sudo rm $TMP_PATH_NAME
    fi
 
    sudo echo " "
}
 
function start(){
    sudo echo " "
    sudo nohup java -jar -Dserver.port=$SERVER_PORT $JAR_FILE /tmp 2>> /dev/null >> /dev/null &
    sudo echo "java -jar -Dserver.port=$SERVER_PORT $JAR_FILE /tmp 2>> /dev/null >> /dev/null &"
 
    sudo echo $! > $TMP_PATH_NAME
    sudo echo " "
}
 
# Function Call
stop
 
start
cs
 
※ sudo를 사용하게 된다면, 
 
sudo: no tty present and no askpass program specified
 
라는 에러가 발생할 수 있습니다. 해결 방법으로는 root로 접속하여 jenkins에 sudo 권한을 줍니다.
 
① user를 root로 변경 
 
1
sudo su -
cs
 
② /etc/sudoers 파일 수정
 
1
visudo
cs
 
③ jenkins 추가
 
1
2
3
4
5
...
 
jenkins     ALL=(ALL)     NOPASSWD=(ALL)
 
...
cs
 
2) Execute shell
 
- Command
 
1
bash ${WORKSPACE}/deploy.sh 8080 ${JOB_NAME}
cs
 
 
빌드 Now 

  

- webhooks를 이용하여 commit/push시, 자동 빌드를 해보기 전에 수동으로 하는 방법을 해보도록 하겠습니다.

- Build Now를 누르게 되면 수동으로 빌드가 가능합니다. 

 

 

 

콘솔 확인

 

- Clone, Test, Build, Deploy되는 과정을 볼 수 있습니다. 

  


 

참고 

 

- spring-boot-jenkins 

 

'server' 카테고리의 다른 글

CI - 젠킨스 원격지 배포하기(SSH)  (412) 2017.08.28
CI - 젠킨스 업그레이드  (401) 2017.08.24
CI - 젠킨스 시작하기  (412) 2017.06.27
Docker - 시작하기  (401) 2017.05.11
ELK Stack 개념 정리  (430) 2017.02.23
Comments