jenkins란?
Jenkins는 중앙 빌드 및 지속적인 통합 프로세스가 가능하며, Windows, macOS 및 기타 Unix 계열 운영 체제용 패키지가 포함된 독립형 Java 기반 프로그램이다.
수백개의 플러그인을 사용할 수 있는 Jenkins는 소프트웨어 개발 프로젝트의 빌드 파이프라인 구성, Build 자동화의 확립, 배포 및 테스트 자동화 등을 지원한다.
jenkins 구축
Google Cloud에서 VM인스턴스 생성 후, 명령프롬프트에 연결(putty 사용했음)
1. jenkins 설치
다운로드 링크 : https://pkg.jenkins.io/debian-stable/
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-get update
sudo apt-get install fontconfig openjdk-17-jre
sudo apt-get install jenkins
설치확인
Active : active (running) 뜨면 설치가 된 것이다.
sudo systemctl status jenkins
2. jenkins 접속
주소 창에 '외부 ip:기본포트(8080)'를 입력하면 Jenkins 로그인 페이지가 나온다.
아래 사진의 빨간 부분을 cat 해보면 비밀번호가 나온다.
cat 빨간색 주소 → 비번에 입력
install suggested plugins 선택했다.
계정 가입
3. 파이프라인 스크립트
1. 새로운 파이프 스크립트 생성
🟠🟡🟢 주의!
파이프라인 스크립트를 작성하기 전에 Jenkins에서 sudo 권한을 가지고 있지 않으면 build가 실패된다.
PASSWD가 필요없게 설정을 해줘야 한다.
방법 1. sudo vi /etc/sudoers
말 그대로 vi 편집기로 /etc/sudoers를 편집
sudo vi /etc/sudoers
방법 2. sudo visudo
/etc/sudoers 파일을 관리를 하기위한 application
sudo visudo
둘 중 하나 들어가서
(sudo visudo로 들어가는게 편함.. )
참고 링크 https://bumday.tistory.com/47
# Allow members of group sudo to execute any command
%sudo ALL=(ALL:ALL) ALL
jenkins ALL=(ALL) NOPASSWD: ALL // ⭐이 부분 추가!
2. 파이프 스크립트 입력
#1 Git 링크
#2 Trigger
Trigger란?
테이블에 대한 이벤트에 반응해 자동으로 실행 되는 작업을 의미
테이블에 INSERT 나 UPDATE 또는 DELETE 작업이 발생되면 자동으로 실행되는 코드
Git push를 하면 아래에 있는 파이프라인 스크립트 Trigger가 실행된다.
참고 링크 : https://hanhyx.tistory.com/20
# 2-1 Jenkins에서 GitHub hook 체크
# 2-2 GitHub에서 Weghook 세팅
setting → webhook → add WebHook 에서 설정하면 되고, 파이프라인 있는 쪽 메뉴에서 깃허브 주소 쓰는거랑 웹훅 체크박스 체크 하면된다.
Webhook 이란?
Web Callback 또는 HTTP PUSH API라고도 불린다.
웹 서비스 간에 실시간 데이터를 공유하기 위한 메커니즘.
한 웹 서비스에서 다른 웹 서비스로 데이터를 전송하거나 특정 이벤트가 발생할 때,
원격 서버로 알림을 보내는 데 사용.
Payload URL → 'http://외부ip:8080/github-webhook/'
#3 파이프라인 스크립트
스크립트에 git clone이 있기 때문에, git 설치 되어 있어야 함..
sudo apt install git
// 파이프라인 스크립트
pipeline {
agent any
stages {
stage('cloning') {
steps {
git url:'https://github.com/sesam-me/linuxClass2.git',
branch: "master"
}
}
stage('Build') {
steps {
sh ('chmod 744 gradlew')
sh "./gradlew build"
}
}
stage('mv') {
steps{
sh 'sudo mv build/libs/*T.jar /usr/share/app.jar'
}
}
stage('stage') {
steps{
sh 'sudo sh /usr/share/start.sh'
}
}
}
}
참고 링크
'공부 > Infra' 카테고리의 다른 글
docker 명령어(-d, -itd) (0) | 2025.02.04 |
---|---|
docker ./gradlew: not found (0) | 2025.02.03 |
[Docker] Docker Hub Image 활용(Nginx, MySQL) (1) | 2023.10.11 |
[CI/CD] CI/CD란 (0) | 2023.10.10 |
[linux] 프로그램 설치(git, node, java, mysql) (0) | 2023.10.06 |