Jenkins 설정 (On Container)
Jenkins Version : 2.387.3
Container 설정
로컬과 마운트를 위한 도커 볼륨 생성
$ docker volume create jenkins
Jenkins Container 생성 & 실행 & 볼륨 마운트 & 포트포워딩
$ docker run -d --name --privileged jenkins -v jenkins:/var/jenkins_home -p 18080:8080 -p 50000:50000 --restart=on-failure jenkins/jenkins:lts-jdk11
방화벽 포트 오픈
$ firewall-cmd --permanent --add-port=18080/tcp && firewall-cmd --permanent --add-port=50000/tcp && firewalll-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'
Jenkins 초기 Password 확인
$ docker logs jenkins
Jenkins 웹 접속
- http://{light-sail-public-ip}:18080/ 접속
- Install Suggested Plugins 클릭 -> 플러그인 자동 다운로드
- 접속 잘 되는거 확인 후 Jenkins 관리자 회원가입
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로 다시 확인 후 접속
SSH Key 등록
Jenkins 컨테이너 내부 진입후 SSH 키 생성
$ cd && mkdir .ssh && 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] Jenkins 기본 설정 (On Local) (0) | 2023.05.26 |
---|---|
[Jenkins] Item (프로젝트) 설정 (0) | 2023.05.26 |
[Jenkins] AWS LightSail 설정 (0) | 2023.05.26 |
Github Actions Self-Hosted-Runner (3) | 2023.05.24 |
Work flow Commit Message Filter (0) | 2023.05.24 |