구축/Jenkins

[jenkins] jenkins 수동 설치 및 서비스 등록

KidAnt 2024. 1. 29. 16:46

  • jenkins(젠킨스)란?
    • CI/CD(지속적인 통합/배포)를 위한 도구로 소프트웨어 개발 프로세스의 빌드, 테스트, 배포 등을 자동화 해주는 도구이다.
    • Git과 연동하여 다양한 플로그인 사용이 가능하다 
    • (디폴트 기준)8080port로 대시보드에 접속하며 50000port의 파이프라인을 통해 슬레이브들에게 배포된다.
  • History
    • Api의 효율적인 배포를 위해 jenkins를 통한 CI/CD 배포 환경이 필요하게 되었는데 현재 사내 공인아이피를 대부분 사용하고 있어서 추가적으로 요청을 하던지 해서 얻어야하지만 젠킨스 하나만 사용하겠다고 추가 인스턴스에 공인 IP를 할당 받는건 비효율적이라 생각해 기존의 OpenVpn용으로 생성했던 인스턴스에 볼륨만 추가해 jenkins 서비스를 설치할 생각이다.
    • 이러한 사항 때문에  패키지 형태의 설치보다 war파일 및 java -jar 함수를 이용한 수동설치가 적합하다 판단하고 진행하게 되었다.
  • war파일을 이용해서 특정 디렉토리에 설치를 종속시키는 것과 젠킨스 서비스 파일을 구성해서 수동으로 서비스 등록을 검색으로는 방법이 나오지 않던 부분 이라 구축시간보다 검색하고 검색내용을 바탕으로 조립한 다음 실험해보는 시간이 더 길었던거 같다.
  • openstack VM 환경이라 ufw 방화벽 설정이 따로 필요없고 openstack 방화벽만 신경써주면 된다.

환경

OS: Ubuntu 22.04
CPU: 2v CPU
Ram: 8GB
Disk: 30GB(OS) + 80GB(추가 볼륨)
ETC: Openstack VM


진행

  • 젠킨스 설치(war 파일 형태로 진행)
wget https://get.jenkins.io/war-stable/2.426.3/jenkins.war
#수동 설치를 해야하므로 war 받기

echo 'export JENKINS_HOME=/hdd_add/kit/jenkins/.jenkins' >> ~/.bashrc
#echo 'export JENKINS_HOME=[젠킨스 홈디렉토리]' >> ~/.bashrc
#젠킨스 설치위치 환경변수 설정

nohup java -jar /hdd_add/kit/jenkins.war >> /hdd_add/kit/jenkins/jenkins_$(date +\%m\%d).log 2>&1 &
[1] 48719 #UUID
#젠킨스 실행 및 로그 남기기 위한 명령어

ps -ef | grep jenkins
root       48719   48713  9 14:09 pts/1    00:00:40 java -jar /hdd_add/kit/jenkins.war
root       48800   48713  0 14:16 pts/1    00:00:00 grep --color=auto jenkins
#작동 확인
  • 서버 재부팅시에도 실행시키기 위해 시스템 설정 및 등록
vi /etc/systemd/system/jenkins.service
[Unit]
Description=Jenkins Daemon
After=syslog.target network-online.target
Wants=network-online.target

[Service]
Type=simple
ExecStart=/usr/bin/java -jar /hdd_add/kit/jenkins/jenkins.war --webroot=/hdd_add/kit/jenkins/.jenkins/war
Environment="JENKINS_HOME=/hdd_add/kit/jenkins/.jenkins"
User=jenkins

[Install]
WantedBy=multi-user.target
#시스템 파일 생성

systemctl daemon-reload
#system파일 재로드

systemctl enable jenkins.service
Synchronizing state of jenkins.service with SysV service script with /lib/systemd/systemd-sysv-install.
Executing: /lib/systemd/systemd-sysv-install enable jenkins
Created symlink /etc/systemd/system/multi-user.target.wants/jenkins.service → /etc/systemd/system/jenkins.service.
#시스템 파일 활성화

systemctl start jenkins.service
#실행

root@ubuntu:/etc/systemd/system# systemctl status jenkins.service
● jenkins.service - Jenkins Daemon
     Loaded: loaded (/etc/systemd/system/jenkins.service; enabled; vendor preset: enabled)
     Active: active (running) since Mon 2024-01-29 16:24:18 KST; 3s ago
   Main PID: 56356 (java)
      Tasks: 40 (limit: 9478)
     Memory: 169.2M
        CPU: 5.935s
     CGroup: /system.slice/jenkins.service
             └─56356 /usr/bin/java -jar /hdd_add/kit/jenkins/jenkins.war --webroot=/hdd_add/kit/jenkins/.jenkins/war

Jan 29 16:24:20 ubuntu java[56356]:         at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:77)
Jan 29 16:24:20 ubuntu java[56356]:         at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
Jan 29 16:24:20 ubuntu java[56356]:         at java.base/java.lang.reflect.Method.invoke(Method.java:568)
Jan 29 16:24:20 ubuntu java[56356]:         at executable.Main.main(Main.java:351)
Jan 29 16:24:20 ubuntu java[56356]: 2024-01-29 07:24:20.952+0000 [id=1]        INFO        o.e.j.s.handler.ContextHandler#doStart: Started w.@35293c05{Jenkins v2.426.3,/,file:///hdd_add/kit/jenkins/.jenkins/war/,AVAIL>
Jan 29 16:24:20 ubuntu java[56356]: 2024-01-29 07:24:20.977+0000 [id=1]        INFO        o.e.j.server.AbstractConnector#doStart: Started ServerConnector@2bbaf4f0{HTTP/1.1, (http/1.1)}{0.0.0.0:8080}
Jan 29 16:24:20 ubuntu java[56356]: 2024-01-29 07:24:20.997+0000 [id=1]        INFO        org.eclipse.jetty.server.Server#doStart: Started Server@4450d156{STARTING}[10.0.18,sto=0] @2010ms
Jan 29 16:24:21 ubuntu java[56356]: 2024-01-29 07:24:21.000+0000 [id=25]        INFO        winstone.Logger#logInternal: Winstone Servlet Engine running: controlPort=disabled
Jan 29 16:24:21 ubuntu java[56356]: 2024-01-29 07:24:21.287+0000 [id=32]        INFO        jenkins.InitReactorRunner$1#onAttained: Started initialization
Jan 29 16:24:21 ubuntu java[56356]: 2024-01-29 07:24:21.424+0000 [id=30]        INFO        jenkins.InitReactorRunner$1#onAttained: Listed all plugins
#정상작동 확인
  • 플러그인 설치 진행

  • 완료