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 passwordUsername
: 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 TextSecret
: 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 |