[Jenkins] Jenkins 기본 설정 (On Local)

2023. 5. 26. 16:41·⚙️ Ops/CI & CD

Jenkins 설정 (On Local)

Jenkins Version : 2.387.3


Jenkins 설치

$ wget -q -O - https://pkg.jenkins.io/debian-stable/jenkins.io.key | sudo apt-key add -

$ curl -fsSL https://pkg.jenkins.io/debian-stable/jenkins.io-2023.key | sudo tee \
  /usr/share/keyrings/jenkins-keyring.asc > /dev/null

$ 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

$ sudo apt update

$ sudo apt install jenkins

Jenkins 시작

$ systemctl start jenkins

$ systemctl status jenkins

Open Port

Firewalld를 사용할 경우

$ firewall-cmd --permanent --add-port=8080/tcp && firewall-cmd --reload

# Github Webhook IP 등록을 해야 자동 빌드가 됨
$ firewall-cmd --permanent --remove-rich-rule='rule family="ipv4" source address=192.30.252.0/22 port port="22" protocol="tcp" accept' && firewall-cmd --permanent --remove-rich-rule='rule family="ipv4" source address=185.199.108.0/22 port port="22" protocol="tcp" accept' && firewall-cmd --permanent --remove-rich-rule='rule family="ipv4" source address=140.82.112.0/20 port port="22" protocol="tcp" accept' && firewall-cmd --permanent --remove-rich-rule='rule family="ipv4" source address=143.55.64.0/20 port port="22" protocol="tcp" accept' && firewall-cmd --permanent --remove-rich-rule='rule family="ipv6" source address=2a0a:a440::/29 port port="22" protocol="tcp" accept' && firewall-cmd --permanent --remove-rich-rule='rule family="ipv6" source address=2606:50c0::/32 port port="22" protocol="tcp" accept'

ufw를 사용할 경우

$ ufw allow 8080 && ufw allow OpenSSH && ufw enable && ufw status

Setting Jenkins

http://{your-ip}:8080 접속

초기 비밀번호 확인

$ cat /var/lib/jenkins/secrets/initialAdminPassword

접속 후, Install Suggested Plubins 클릭해서 플러그인 자동 다운로드

그리고 나온 회원가입 화면에서 Admin 유저를 생성하고 Instance Configuration 칸이 나온다.

http://{your-ip}:8080 입력


Jenkins 비밀번호 분실 시

$ docker exec -it -u root jenkins /bin/bash
$ sudo vi /var/lib/jenkins/config.xml   # 파일 편집 진입

<useSecurity> true </useSecurity> 부분을 false로 하고 컨테이너 재시작

$ docker restart jenkins

웹 접속을 다시 하면 비밀번호가 초기화 되고 docker logs jenkins로 다시 확인 후 접속


Jenkins 포트 변경

vi /usr/lib/systemd/system/jenkins.service

# 편집 진입 후, 아래 부분 변경
Environment="JENKINS_PORT=18080"

:wq

# Jenkins Restart
$ systemctl daemon-reload && systemctl restart jenkins

SSH Key 등록

AWS LightSail 인스턴스에서 진행

$ cd .ssh && ssh-keygen -t rsa
$ cat id_rsa.pub # 키값 복사하기

Github 계정 설정 - SSH and GPG Keys에 Public Key 값 등록


Docker Hub Credentials 등록

Docker Hub Token을 등록해줘야 Jenkins를 통해 Docker Push 시 Docker Hub 로그인 과정에서 권한에러가 안뜬다.

먼저 Docker Hub Token을 발급한다.

  • Docker Hub 로그인
  • Account Settings
  • Security
  • New Access Tokens
  • Access Token Description (원하는 이름으로 입력)
  • Generate
  • Token 복사 (창이 닫히면 다시 확인이 불가능 하므로 따로 저장해두자.)

다시 Jenkins 관리로 돌아와서

  • Credentials 진입
  • Add Credentials 선택
  • Kind : username with password
  • Username : Docker Hub 아이디 입력
  • Password : Docker Hub 토큰 입력
  • ID : 빈칸으로 냅두자
  • Create 눌러서 등록

Github Credentials 등록

Jenkins 관리 -> Security -> Credentials 진입

  • (global) 드랍박스 옆에 Add Credentials 클릭
  • Github 계정 정보 입력
  • kind : SSH Username with Private Key 선택
  • id : 젠킨스에서 식별하는 고유값으로 입력하지 않아도 됨
  • username : 깃허브 닉네임
  • private key 밑에 Enter directly 체크
  • Jenkins Server의 SSH Private Key 값 넣어줌

Github Webhook 연동

  • Github 계정 - Settings - Developer Settings - Token 생성
  • 토큰 권한 : repo, admin, admin:repo_hook
  • 연결하고 싶은 Github Repository - Settings - Webhooks 진입
  • Payload URL 입력하고 Add Hook 클릭
    (Payload URL = http://{jenkins-IP:Port}/github-webhook 형식으로 지정)

다시 Jenkins 관리 - 시스템 설정 - Add Github Server 진입

  • Name : 임의로 지정
  • API URL : 그대로 두기
  • Credentials 부분에 Add 클릭
  • kind : Secret Text
  • Secret : Github에서 발급한 토큰값 입력
  • Add

만든 Credential 선택 - 오른쪽 Test Connection 클릭해서 연결 확인 - Apply 클릭


Gradle Settings

  • Jenkins 관리 - Global Tool Configuration 진입
  • Gradle Add
  • name: 알아볼 수 있게 알아서
  • Install automatically 체크 -> Gradle 7.2 선택

JDK Settings

Jenkins 관리 Global Tool Configuration 진입

  • 인스턴스 내부에서 echo $JAVA_HOME
  • 확인 후 경로를 Jenkins의 JAVA_HOME에 입력
저작자표시 (새창열림)

'⚙️ Ops > CI & CD' 카테고리의 다른 글

[Jenkins] EC2 생성 후 Setting Script 작성  (0) 2023.05.30
[Jenkins] Dockerfile & Shell Script 작성  (0) 2023.05.30
[Jenkins] Item (프로젝트) 설정  (0) 2023.05.26
[Jenkins] Jenkins 기본 설정 (On Container)  (0) 2023.05.26
[Jenkins] AWS LightSail 설정  (0) 2023.05.26
'⚙️ Ops/CI & CD' 카테고리의 다른 글
  • [Jenkins] EC2 생성 후 Setting Script 작성
  • [Jenkins] Dockerfile & Shell Script 작성
  • [Jenkins] Item (프로젝트) 설정
  • [Jenkins] Jenkins 기본 설정 (On Container)
신건우
신건우
조용한 개발자
  • 신건우
    우주먼지
    신건우
  • 전체
    오늘
    어제
    • 분류 전체보기 (422)
      • 📘 Frontend (71)
        • Markup (1)
        • Style Sheet (2)
        • Dart (8)
        • Javascript (12)
        • TypeScript (1)
        • Vue (36)
        • React (2)
        • Flutter (9)
      • 📘 Backend (143)
        • Java (34)
        • Concurrency (19)
        • Reflection (1)
        • Kotlin (29)
        • Python (1)
        • Spring (42)
        • Spring Cloud (5)
        • Message Broker (5)
        • Streaming (2)
        • 기능 개발 (5)
      • 💻 Server (6)
        • Linux (6)
      • ❌ Error Handling (11)
      • 📦 Database (62)
        • SQL (31)
        • NoSQL (2)
        • JPQL (9)
        • QueryDSL (12)
        • Basic (4)
        • Firebase (4)
      • ⚙️ Ops (57)
        • CS (6)
        • AWS (9)
        • Docker (8)
        • Kubernetes (13)
        • MSA (1)
        • CI & CD (20)
      • 📚 Data Architect (48)
        • Data Structure (10)
        • Algorithm (8)
        • Programmers (17)
        • BaekJoon (5)
        • CodeUp (4)
        • Design Pattern (4)
        • AI (0)
      • ⚒️ Management & Tool (8)
        • Git (7)
        • IntelliJ (1)
      • 📄 Document (10)
        • Project 설계 (6)
        • Server Migration (3)
      • 📄 책읽기 (2)
        • 시작하세요! 도커 & 쿠버네티스 (2)
      • 🎮 Game (4)
        • Stardew Vally (1)
        • Path of Exile (3)
  • 블로그 메뉴

    • 링크

      • Github
    • 공지사항

    • 인기 글

    • 태그

      GStreamer #Pipeline
      Lock #Thread #Concurrency
      React #Markdown
    • 최근 댓글

    • 최근 글

    • hELLO· Designed By정상우.v4.10.0
    신건우
    [Jenkins] Jenkins 기본 설정 (On Local)
    상단으로

    티스토리툴바