병훈's Blog

Jenkins Setting 본문

Computer/Cloud

Jenkins Setting

thdqudgns 2023. 9. 27. 01:59

Jenkins

맨 처음 java --version 를 입력하면, 아직 jdk가 없기에

Command 'java' not found, but can be installed with:

sudo apt install openjdk-11-jre-headless  # version 11.0.19+7~us1-0ubuntu1~20.04.1, or
sudo apt install default-jre              # version 2:1.11-72
sudo apt install openjdk-16-jre-headless  # version 16.0.1+9-1~20.04
sudo apt install openjdk-17-jre-headless  # version 17.0.7+7~us1-0ubuntu1~20.04
sudo apt install openjdk-8-jre-headless   # version 8u372-ga~us1-0ubuntu1~20.04
sudo apt install openjdk-13-jre-headless  # version 13.0.7+5-0ubuntu1~20.04

이렇게 설치하는 방법을 알려준다. jdk를 설치하는 이유는, jenkins를 실행시키기 위해 필요하기 때문이다. jenkins의 Java 버전은 2.357 버전 이후로 Java 11 또는 17만 지원한다. 그러므로 JDK 11 또는 17을 설치하면 된다. 다른 프로그램들은 도커에서 실행할 것이기에 다른 프로그램과 상관없이 설치하면 된다.

  1. 설치 및 업그레이드를 자동화하는 Jenkins의 데비안 패키지 저장소를 추가하기 위해 시스템에 키를 추가참고링크: Jenkins 공식문서
  2. curl -fsSL https://pkg.jenkins.io/debian-stable/jenkins.io-2023.key | sudo tee \ /usr/share/keyrings/jenkins-keyring.asc > /dev/null
  3. 그런 다음 Jenkins apt 저장소 항목을 추가
  4. echo deb [signed-by=/usr/share/keyrings/jenkins-keyring.asc] \ https://pkg.jenkins.io/debian-stable binary/ | sudo tee \ /etc/apt/sources.list.d/jenkins.list > /dev/null
  5. 인스턴스 기본 update
  6. $ sudo apt-get update
  7. JDK 설치 (openjdk-17)Y/n을 물어본다면, Enter를 누르면 된다.
    설치 후 버전을 확인해보면 제대로 설치된 것을 알 수 있다.
  8. $ java --version openjdk 17.0.8 2023-07-18 OpenJDK Runtime Environment (build 17.0.8+7-Ubuntu-120.04.2) OpenJDK 64-Bit Server VM (build 17.0.8+7-Ubuntu-120.04.2, mixed mode, sharing) $ javac --version javac 17.0.8
  9. $ sudo apt install openjdk-17-jdk openjdk-17-jre
  10. 젠킨스 설치Y/n을 물어보면, Enter를 누른다. 자동으로 대문자로 응답한다.
    여기까지 한다면?
    • Jenkins를 시작할 때 실행되는 데몬으로 설정한다. 자세한 내용은 /etc/init.d/jenkins를 참조.
    • 이 서비스를 실행할 'jenkins' 사용자를 만든다.
    • /var/log/jenkins/jenkins.log 에 로그를 출력한다.
    • /etc/default/jenkins시작을 위한 구성 매개변수로 채운다 . 예:JENKINS_HOME
    • Jenkins가 포트 8080에서 수신하도록 설정한다.
  11. $ sudo apt-get install jenkins
  12. Jenkins 포트번호 변경하기
  13. 참고링크: EC2에 Jenkins 설치
  • 톰캣 기본포트가 8080포트이기때문에 포트번호가 겹친다. Jenkins포트를 9090포트로 변경하자.입력 후, 편집하기 위해 i 를 누른다. vi모드가 INSERT 모드로 변경된다.
    편집 후에는 쓴 것을 저장하고 나간다는 의미로 esc를 누르고 :wq를 입력한다. (write and quit)
  • ... # set the umask to control permission bits of files that Jenkins creates. # 027 makes files read-only for group and inaccessible for others, which some security sensitive users # might consider benefitial, especially if Jenkins runs in a box that's used for multiple purposes. # Beware that 027 permission would interfere with sudo scripts that run on the master (JENKINS-25065.) # # Note also that the particularly sensitive part of $JENKINS_HOME (such as credentials) are always # written without 'others' access. So the umask values only affect job configuration, build records, # that sort of things. # # If commented out, the value from the OS is inherited, which is normally 022 (as of Ubuntu 12.04, # by default umask comes from pam_umask(8) and /etc/login.defs # UMASK=027 # port for HTTP connector (default 8080; disable with -1) HTTP_PORT=9090
  • $ sudo vi /etc/default/jenkins
# servlet context, important if you want to use apache proxying
PREFIX=/$NAME
...
```
  1. Jenkins 실행
  2. $ sudo systemctl start jenkins
  3. Jenkins 서비스 상태 확인
     jenkins.service - Jenkins Continuous Integration Server
         Loaded: loaded (/lib/systemd/system/jenkins.service; enabled; vendor preset: enabled)
         Active: active (running) since Wed 2023-08-16 07:35:28 UTC; 14min ago
     Main PID: 18037 (java)
         Tasks: 38 (limit: 1141)
         Memory: 290.0M
         CGroup: /system.slice/jenkins.service
                 └─18037 /usr/bin/java -Djava.awt.headless=true -jar /usr/share/java/jenkins.war --webroot=/var/cache/jenkins/war --httpPort=8080
    
     Aug 16 07:34:58 ip-172-31-37-100 jenkins[18037]: [Jenkins 초기 password]
     Aug 16 07:34:58 ip-172-31-37-100 jenkins[18037]: This may also be found at: /var/lib/jenkins/secrets/initialAdminPassword
     Aug 16 07:34:58 ip-172-31-37-100 jenkins[18037]: *************************************************************
     Aug 16 07:34:58 ip-172-31-37-100 jenkins[18037]: *************************************************************
     Aug 16 07:34:58 ip-172-31-37-100 jenkins[18037]: *************************************************************
     Aug 16 07:35:28 ip-172-31-37-100 jenkins[18037]: 2023-08-16 07:35:28.735+0000 [id=30]        INFO        jenkins.InitReactorRunner$1#onAttained: Completed initialization
     Aug 16 07:35:28 ip-172-31-37-100 jenkins[18037]: 2023-08-16 07:35:28.756+0000 [id=24]        INFO        hudson.lifecycle.Lifecycle#onReady: Jenkins is fully up and running
     Aug 16 07:35:28 ip-172-31-37-100 systemd[1]: Started Jenkins Continuous Integration Server.
     Aug 16 07:35:29 ip-172-31-37-100 jenkins[18037]: 2023-08-16 07:35:29.704+0000 [id=46]        INFO        h.m.DownloadService$Downloadable#load: Obtained the updated data file for hudson.tasks.Maven.MavenInstaller
     Aug 16 07:35:29 ip-172-31-37-100 jenkins[18037]: 2023-08-16 07:35:29.705+0000 [id=46]        INFO        hudson.util.Retrier#start: Performed the action check updates server successfully at the attempt #1
  4. $ sudo systemctl status jenkins
  5. 젠킨스 재시작 및 종료지금 젠킨스 status를 보면 port가 8080이다. 9090으로 변경되지 않았다. 이럴 때는
     # Port to listen on for HTTP requests. Set to -1 to disable.
     # To be able to listen on privileged ports (port numbers less than 1024),
     # add the CAP_NET_BIND_SERVICE capability to the AmbientCapabilities
     # directive below.
     Environment="JENKINS_PORT=9090"
    그리고 demon을 재시작 해야 한다.
     ● jenkins.service - Jenkins Continuous Integration Server
      Loaded: loaded (/lib/systemd/system/jenkins.service; enabled; vendor preset: enabled)
      Active: active (running) since Wed 2023-08-16 08:16:56 UTC; 19s ago
     Main PID: 19860 (java)
         Tasks: 45 (limit: 1141)
         Memory: 205.3M
         CGroup: /system.slice/jenkins.service
                 └─19860 /usr/bin/java -Djava.awt.headless=true -jar /usr/share/java/jenkins.war --webroot=/var/cache/jenkins/war --httpPort=9090
    
     Aug 16 08:16:40 ip-172-31-37-100 jenkins[19860]: Jenkins initial setup is required. An admin user has been created and a password generated.
     Aug 16 08:16:40 ip-172-31-37-100 jenkins[19860]: Please use the following password to proceed to installation:
     Aug 16 08:16:40 ip-172-31-37-100 jenkins[19860]: [Jenkins 초기 password]
     Aug 16 08:16:40 ip-172-31-37-100 jenkins[19860]: This may also be found at: /var/lib/jenkins/secrets/initialAdminPassword
     Aug 16 08:16:40 ip-172-31-37-100 jenkins[19860]: *************************************************************
     Aug 16 08:16:40 ip-172-31-37-100 jenkins[19860]: *************************************************************
     Aug 16 08:16:40 ip-172-31-37-100 jenkins[19860]: *************************************************************
     Aug 16 08:16:56 ip-172-31-37-100 jenkins[19860]: 2023-08-16 08:16:56.390+0000 [id=31]        INFO        jenkins.InitReactorRunner$1#onAttained: Completed initialization
     Aug 16 08:16:56 ip-172-31-37-100 jenkins[19860]: 2023-08-16 08:16:56.411+0000 [id=24]        INFO        hudson.lifecycle.Lifecycle#onReady: Jenkins is fully up and running
     Aug 16 08:16:56 ip-172-31-37-100 systemd[1]: Started Jenkins Continuous Integration Server.
  6. $ sudo systemctl daemon-reload $ sudo systemctl stop jenkins $ sudo systemctl start jenkins $ sudo systemctl status jenkins
  7. $ sudo vi /usr/lib/systemd/system/jenkins.service 에서 변경해야 한다.
  8. $ sudo systemctl restart jenkins
    $ sudo systemctl stop jenkins

jenkins 초기 화면

  1. Jenkins 초기 password 입력
    CLI에서 나오는 [Jenkins 초기 password]를 입력하면 된다.
  2. Customize Jenkins
    Customize Jenkins에서 Install suggested plugins를 클릭하여 기본적인 플러그인을 추가한다.
    그 후 계정 정보를 입력하고 로그인하면 된다.
  3. 필요한 플러그인들을 다운받는다.
    "Dashboard" > "Jenkins 관리" > "Plugins" > "Available plugins"
    • Generic Webhook Trigger
    • Gitlab
    • Gitlab API
    • Gitlab Authentication
    • Mattermost Notification
    • Docker pipeline
  4. 추후 작업
    • Jenkins 추가 설정 (Plugins)
    • Credentials 설정
    • Pipeline 만들기
728x90
728x90

'Computer > Cloud' 카테고리의 다른 글

데이터 센터  (1) 2023.11.11
클라우드 컴퓨팅 인프라  (0) 2023.11.10
웹 프로젝트 포팅 메뉴얼 총정리  (1) 2023.10.13
Docker, Docker-Compose Setting  (0) 2023.09.27
Server Setting  (0) 2023.09.27