2020. 7. 13. 11:49ㆍCentOS 7/Jenkins
Jenkins?
소스 repository에 대한 지속적인 통합(CI, Continuous Integration) 서비스를 제공해주는 무료 툴로 Build나 Deloy, Test 프로세스를 상시적으로 실시하는 자동화 서비스입니다.
Java 언어로 만들어진 애플리케이션으로 Jenkins WAR를 단독 또는 Tomcat에 올려 실행할 수 있습니다.
젠킨스를 이용하여 소스를 자동 빌드시키고 실서버에 배포해봅시다.
- jdk 설치 및 JAVA_HOME 환경변수 추가
- Maven 설치
- Git 설치
- Jenkins 설치
4-1) jenkins 패키지 설치
4-2) jenkins 구성파일
4-3) jenkins 시작
4-4) 방화벽 개방 - 사용자 추가
1. jdk 설치 및 JAVA_HOME 환경변수 추가
jenkins는 java로 작성된 프로그램으로 jdk8 또는 jdk11를 이용하여 동작합니다.
jdk8 이나 jdk11이 설치되어있지 않다면 jdk를 설치해야 합니다.
yum list 명령어를 이용하여 설치가능한 jdk8 목록을 출력합니다.
sudo yum list "java-1.8.0-openjdk-devel*"
Loaded plugins: fastestmirror, langpacks Repodata is over 2 weeks old. Install yum-cron? Or run: yum makecache fast Loading mirror speeds from cached hostfile * base: ftp.iij.ad.jp * epel: ftp.iij.ad.jp * epel-debuginfo: ftp.iij.ad.jp * epel-source: ftp.iij.ad.jp * extras: ftp.iij.ad.jp * updates: ftp.iij.ad.jp Available Packages java-1.8.0-openjdk-devel.i686 1:1.8.0.282.b08-1.el7_9 ol7_latest java-1.8.0-openjdk-devel.x86_64 1:1.8.0.282.b08-1.el7_9 ol7_latest java-1.8.0-openjdk-devel-debug.i686 1:1.8.0.262.b10-1.el7 ol7_optional_latestjava-1.8.0-openjdk-devel-debug.x86_64 1:1.8.0.262.b10-1.el7 ol7_optional_latest
jdk1.8 64bit용으로 설치합니다.
sudo yum install java-1.8.0-openjdk-devel.x86_64
javac 심볼릭링크의 실제 주소를 readlink 명령어로 읽어들여서,
which javac
/usr/bin/javac
readlink -f /usr/bin/javac
/usr/lib/jvm/java-1.8.0-openjdk-1.8.0.252.b09-2.el7_8.x86_64/bin/javac
javac가 위치한 bin 디렉터리를 환경변수 PATH에 추가해줍니다.
전체 시스템 사용자들에게 공통적으로 적용하기 위해 /etc/profile
에 환경변수 추가합니다.
sudo vim /etc/profile
export JAVA_HOME=/usr/lib/jvm/java-1.8.0-openjdk-1.8.0.252.b09-2.el7_8.x86_64 PATH=$PATH:$JAVA_HOME/bin export PATH
/etc/profile
의 맨 하단에 위와같은 정보를 추가한 후, source 명령어를 이용하여 변경사항을 적용합니다.
source /etc/profile
echo명령어로 방금전에 추가한 $JAVA_HOME 환경변수를 조회해봅니다.
echo $JAVA_HOME
/usr/lib/jvm/java-1.8.0-openjdk-1.8.0.252.b09-2.el7_8.x86_64
2. Maven 설치
https://maven.apache.org/download.cgi
에서 maven 링크를 복사합니다.
wget http://mirror.navercorp.com/apache/maven/maven-3/3.6.3/binaries/apache-maven-3.6.3-bin.tar.gz tar xvzf apache-maven-3.6.3-bin.tar.gz
설치하고자 하는 경로에 압축파일을 다운 받아 압축을 해제한 후, 해당 폴더가 위치한 곳을 MAVEN_HOME으로 설정하면 됩니다.
sudo vim /etc/profile
export MAVEN_HOME=/usr/local/apple/Tools/apache-maven-3.6.3 PATH=$PATH:$JAVA_HOME/bin:$MAVEN_HOME/bin export PATH
source /etc/profile
JAVA_HOME과 마찬가지로 profile의 맨 하단에 MAVEN_HOME 환경변수를 추가한 후, maven관련 명령어 실행을 위해 PATH에 bin폴더를 추가합니다.
:wq!
로 변경정보를 저장 한후 source 명령어로 변경사항을 적용합니다.
echo $MAVEN_HOME /usr/local/apple/Tools/apache-maven-3.6.3
echo명령어로 $MAVEN_HOME 환경변수를 조회된다면 환경변수가 정상적으로 등록된 것입니다.
만일 wget 명령어를 실행할 때 아래와 같은 에러메시지를 출력한다면 wget 명령어를 설치하면 됩니다.
bash: wget: command not found
sudo dnf search wget sudo dnf install wget
3. Git 설치
sudo yum install git
4. Jenkins 설치
4-1) jenkins 패키지 설치
sudo wget -O /etc/yum.repos.d/jenkins.repo https://pkg.jenkins.io/redhat-stable/jenkins.repo sudo rpm --import https://pkg.jenkins.io/redhat-stable/jenkins.io.key
yum repository 사용을 위해 public key를 등록합니다.
sudo yum install jenkins
jenkins 패키지를 설치합니다.
4-2) jenkins 구성파일
설치를 완료했습니다.
바로 jenkins를 실행해도 되지만, jenkins의 기본 포트인 8080을 이미 다른 앱에서 사용하고 있기때문에 기본 포트를 바꾼 후 시작하고자 합니다.
jenkins에 대한 configuration 파일에서 JENKINS_PORT를 수정합니다.
sudo vim /etc/sysconfig/jenkins
# JENKINS_PORT="8080" JENKINS_PORT="9090"
저의 경우 포트를 9090 으로 바꿨습니다.
/etc/sysconfig/jenkins
에는 port 이외에 JENKINS_HOME 이나 JENKINS_USER와 같은 다양한 Jenkins 관련 설정을 할 수 있습니다.
JENKINS_HOME="/var/lib/jenkins" JENKINS_USER="jenkins"
젠킨스를 실행시키고 웹을 통해 jenkins 웹 페이지에 접속했을 때 행해지는 모든 작업들은 JENKINS_USER인 jenkins
가 실행하며, 작업물들은 JENKINS_HOME에 생성됩니다.
또, jenkins를 설치한 후, /etc/passwd
에 jenkins 사용자가 생성된 것을 확인할 수 있습니다.
jenkins:x:993:990:Jenkins Automation Server:/var/lib/jenkins:/bin/false
마찬가지로 jenkins 사용자의 홈디렉터리가 /var/lib/jenkins
로 설정되어 있네요.
그런데 jenkins 사용자의 경우, 맨 뒤에 /bin/false
라고 쓰여져 있는데, 이 것은 쉘권한이 없는 사용자로 젠킨스 웹 사이트에서 이뤄지는 행위로 생성되는 파일 및 폴더들을 jenkins 권한으로 생성되도록 하기 위함입니다.
jenkins 사용자는 쉘 권한이 없기 때문에 terminal이나 command로 로그인을 할 수 없습니다. 오로지 jenkins 웹을 통한 작업만 가능합니다.
4-3) jenkins 시작
포트를 변경했으니 이제 jenkins를 시작해봅시다.
sudo systemctl start jenkins
jenkins는 서비스로 등록되어있기 때문에 systemctl
명령어로 시작할 수 있습니다.
(재시작을 원한다면 sudo systemctl restart jenkins
)
그리고, http://호스트주소:포트
로 들어가면 jenkins 웹페이지에 접속할 수 있습니다.
최초 접근시엔 초기 비밀번호를 입력하라는 창이 뜹니다.
위의 설명대로 /var/lib/jenkins/secrets/initialAdminPassword
파일로부터 초기비밀번호를 읽어서 입력합시다.
sudo cat /var/lib/jenkins/secrets/initialAdminPassword
그리고 필요한 플러그인도 설치합니다.
Jenkins 설치가 완료되었습니다!
4-4) 방화벽 개방
만일, jenkins 웹페이지가 열리지 않는다면 젠킨스에 설정한 포트가 방화벽에 설정되어있는지 확인해보시길 바랍니다.
sudo firewall-cmd --list-all apple (active) target: default icmp-block-inversion: no interfaces: eth0 sources: services: ssh dhcpv6-client mysql http ports: 8989/tcp protocols: masquerade: no forward-ports: source-ports: icmp-blocks: rich rules:
9090포트가 열려있지 않네요.
sudo firewall-cmd --permanent --service=jenkins --add-port=9090/tcp sudo firewall-cmd --permanent --add-service=jenkins sudo firewall-cmd --reload
jenkins 서비스에 대한 포트를 영구적으로 설정한 후, jenkins 서비스에 대한 방화벽을 영구적으로 개방한 후 reload 합니다.
firewall-cmd --list-all apple (active) target: default icmp-block-inversion: no interfaces: eth0 sources: services: dhcpv6-client http jenkins mysql ssh ports: 8989/tcp protocols: masquerade: no forward-ports: source-ports: icmp-blocks: rich rules:
9090/tcp 포트가 정상적으로 추가되었습니다.
4. 사용자 추가
jenkins에 로그인할 사용자 계정을 만듭니다.
Jenkins 관리 메뉴에서 Manage Users 를 누릅니다.
계정을 생성합니다.
이제부터 새로 생성한 계정으로 로그인을 합니다.
'CentOS 7 > Jenkins' 카테고리의 다른 글
[Jenkins] 4. Build 성공 후 앱 자동 배포하기 (0) | 2020.08.19 |
---|---|
[Jenkins] 3. GitHub hook을 이용한 Spring Boot 웹애플리케이션 빌드 자동화 (0) | 2020.07.14 |
[Jenkins] 2. Jenkins에 환경변수(Global Tool Configuration) 설정하기 (0) | 2020.07.13 |
[Jenkins] swap file 설정을 통한 메모리 누수문제 해결 (0) | 2019.08.27 |
Jenkins '역방향 프록시 설정이 잘못된 것으로 파악되었습니다.' 에러 해결 (0) | 2019.08.10 |