본문 바로가기
Develop/etc

[Jenkins] Jenkins 개념부터 설치, 연동까지

by 연로그 2021. 2. 17.
반응형

회사 스터디로 Jenkins 공부를 하게 되었다...

 

🚀 Jenkins

: www.jenkins.io/

 

Jenkins

Jenkins – an open source automation server which enables developers around the world to reliably build, test, and deploy their software

www.jenkins.io

  • Continuous Integration Tools의 일종
  • 무료 오픈소스 자동화 서버
  • 빌드, 배포 자동화를 지원하는 수백개의 플러그인 제공
  • 빌드: 코드를 실행할 수 있는 상태로 만드는 일.
  • 배포: 사용자 접근이 가능하도록 배치시키는 일.

 

CI Tools; Continous Integration Tools

  • Continuous Integration: 지속적인 통합
  • 애플리케이션 개발 단계를 자동화하여 보다 짧은 주기로 고객에게 제공하는 방법
  • 추가/변경된 코드를 자동으로 빌드한 후 테스트 -> 테스트 통과하면 공유 레포지토리에 병합
  • ex: Travis CI, CircleCI, Buddy, Jenkins, ...
  Travis CI Jenkins TeamCity
가격  기본 월 69$ (일반적으로 129$)  무료  1999$ ~
기능  젠킨스에 비해 자유도 ↓  다양, 풍부.  
관리  트레비스 자체에서 호스팅
 -> 관리 편리한 편
 설치형
 -> 관리가 하나의 일
 설치형
 -> 관리가 하나의 일
기타    AWS에 독립적인 전용 EC2 필요  AWS에 독립적인 전용 EC2 필요
  • 그 외 다른 CI Tools 더보기 ▼
더보기

Top CI Tools in 2020

1. Jenkins

  • 간단하고 쉬운 인터페이스
  • 무료 라이센스
  • 자세한 사항은 본문에서 다루니 생략함

 

2. Circle CI

  • 컨테이너 또는 가상 머신을 사용한 빌드
  • 간단한 디버깅과 빠른 테스트
  • 오픈 소스 프로젝트에는 3개 무료 컨테이너 추가
  • circleci.com/

 

3. Bamboo

  • 소프트웨어 어플리케이션 릴리즈 관리를 자동화해 파이프 라인을 생성하는 지속적 통합 서버
  • 필요에 따라 환경에 배포 할 수 있는 환경 별 권한
  • www.atlassian.com/software/bamboo

 

4. TeamCity

  • 프로젝트 개발, 배포를 돕는 지속적 통합 도구 (CI Tool)
  • 히스토리 작성, 테스트 히스토리 보고서 보기, 즐겨찾기 추가 등
  • 사용자 정의, 상호 작용 및 서버 확장이 쉬움
  • www.jetbrains.com/teamcity/

 

5. GitLab

  • 문제 모니터링, 보고, 위키 같은 기능을 갖춘 웹 중점의 Git 저장소 관리자
  • 커밋, 푸시를 통해 빌드를 트리거하고 테스트 실행 및 코드 배포 가능
  • 무료 라이센스
  • about.gitlab.com/

 

6. Travis CI

  • 프로젝트 구성 및 테스트에 사용되는 CI 서비스
  • 오픈 소스 프로젝트 한정 무료
  • travis-ci.com

 

7. Buddy

  • GitHub, Bitbucket, GitLab에서 코드로 웹 사이트 및 애플리케이션을 빌드, 테스트, 배포하기 위한 CI/CD tool
  • 무료 라이센스
  • buddy.works/

 

📑 Jenkins 기능

  • 빌드 자동화
  • 테스트 자동화
  • 코드 표준 준수 여부 검사 (정적 코드 분석)
  • Build Pipeline 구성 :프로젝트에 2개 이상 모듈이 있을 경우 참조 관계에 따라 순차적 빌드 가능
  • 다양한 인증 기반과 결합한 인증, 권한 관리 기능
  • 자동화된 배포 관리
  • ...

 

👨‍💻 Installing Jenkins

최소 조건

  • RAM 256 MB
  • Drive 1GB (Jenkins를 Docker로 실행하는 경우 최소 10GB 권장)
  • 2.54 버전 이상: Java 8 지원
  • 2.164  버전 이상: Java 8, 11 지원

 

Windows 설치 과정 ▼

더보기

Windows 10 환경에 설치.

1. www.jenkins.io/download/ 접속

 

Jenkins download and deployment

Jenkins – an open source automation server which enables developers around the world to reliably build, test, and deploy their software

www.jenkins.io

 

2. 원하는 버전을 선택

 

 

3. 설치 파일 실행

 

4. 설치 경로 지정

 

5. Account, Password 입력 후 Test Credentials

Logon Type 차이: stackoverflow.com/questions/63537185/what-are-the-differences-on-the-logon-types-choices-on-jenkins

 

 5-1. this account either does not have the privilege to logon as a service 에러

Windows 관리 도구 - 로컬 보안 정책 - 로컬 정책- 사용자 권한 할당 - 서비스로 로그온 - 사용자 또는 그룹 추가 에서 사용자 추가하면 인증이 가능해진다.

 

 5-2. 0x8007052e - Error logging on ~~~ 에러

올바르지 않은 account나 password를 입력했을 때 발생하는 오류.

 

5-3. Run service as local or domain user는 필수가 아닌 선택이다.

LocalSystem의 권한으로 수행하느냐, Jenkins 접근용 local/domin user를 생성하느냐의 차이인데, LocalSystem은 루트 같이 권한이 많은 편이다. Jenkins의 해킹/버그가 시스템 전체에 영향이 갈 수도 있으므로 not recommended 가 뜨는 것 같다. 기본적으로 작업 수행은 꼭 필요한 최소한의 권한으로 프로그램을 실행해야 보안적으로 좋다.

( -> 정확한 설명은 참고 링크를 확인할 것 )

참고1: issues.jenkins.io/browse/JENKINS-63477

참고2: docs.microsoft.com/en-us/windows/win32/ad/the-localsystem-account

 

6. port 번호 지정

 

7. jdk 지정 (8 또는 11만 가능)

 

8. 다른 서비스도 선택해서 함께 설치 가능

 

9. 설치

 

10. localhost:8080 접속

자신의 화면에 나온 경로에 들어가 initialAdminPassword를 확인하고 입력

 

11. 계정 생성

 

Linux 설치 과정 ▼

더보기

Ubuntu 19.10 환경에 설치

1. 자바 버전 확인 (8버전 없을 경우 설치)

$ java -version  //버전 확인
$ sudo apt-get install openjdk-8-jdk  //java8 설치

 

2. repository key 및 repository 추가

$ wget -q -O - https://pkg.jenkins.io/debian/jenkins-ci.org.key | sudo apt-key add -
$ echo deb https://pkg.jenkins.io/debian-stable binary/ | sudo tee /etc/apt/sources.list.d/jenkins.list

 

3. apt-get 업데이트

$ sudo apt-get update

 

3-1. GPG error: https://pkg.jenkins.io/debian-stable binary/ Release: The following signatures couldn't be verified because the public key is not available: NO_PUBKEY 대문자+숫자조합 에러

$ sudo apt-key adv --keyserver keyserver.ubuntu.com --recv-keys 대문자+숫자조합

 

4. Jenkins 설치

$ sudo apt-get install jenkins

 

5. Jenkins 실행 후 localhost:8080 접속

$ sudo systemctl start jenkins //Jenkins 실행

페이지의 /var/lib ... 경로에 들어가 패스워드 확인 후 입력

$ sudo vi 경로

 

6. 설치 및 계정 생성

 

🤔 Jenkins Pipeline

파이프라인; Pipeline; P

  • Jenkins에 CD pipeline의 구현, 통합을 지원하는 플러그인들의 모음
  • CD Pipeline (Continuous Delivery Pipeline): 버전 관리에서 소프트웨어를 사용자에게 전달하기 위한 프로세스의 자동화 된 표현
  • 소프트웨어에 대한 모든 변경은 release 되는 과정에서 복잡한 프로세스를 거친다. 이 프로세스에는 신뢰성 있고 반복 가능한 방식의 소프트웨어 구축하는 과정과 테스트 및 배포의 여러 단계를 통해 구축된 소프트웨어를 진행하는 과정이 포함된다.

 

😆 Jenkins 연동

Git과 연동하기: yeonyeon.tistory.com/58

SVN과 연동하기: yeonyeon.tistory.com/59

Pipeline 이용해서 연동하기: https://yeonyeon.tistory.com/86

 

 

😵 port 변경하기

더보기

1. Jenkins 설치 폴더로 이동

(따로 설정하지 않았다면 C:/Program File(x86)/Jenkins에 존재)

 

2. Jenkins.xml 파일 오픈

아래 코드에서 포트 번호 변경

<arguments>-Xrs -Xmx256m -Dhudson.lifecycle=hudson.lifecycle.WindowsServiceLifecycle 
-jar "C:\Jenkins\jenkins.war" --httpPort=8081 --webroot="%LocalAppData%\Jenkins\war"</arguments>

 

3. Jenkins 재시작

서비스 - Jenkins - 서비스 다시 시작


출처

Jenkins 설명: www.jenkins.io/doc/

CI Tool 비교: elfinlas.github.io/2019/08/14/ci-tool/

this account ... 에러: stackoverflow.com/questions/63410442/jenkins-installation-windows-10-service-logon-credentials

GPG 에러: hbot.tistory.com/40

Failed to connect to repository 에러: m.blog.naver.com/PostView.nhn?blogId=baekmg1988&logNo=221658364543&categoryNo=72&proxyReferer=https:%2F%2Fwww.google.com%2F

git연동-webhook 설정: withhamit.tistory.com/38

 CI Tools 더보기: medium.com/devops-dudes/top-7-best-ci-cd-tools-you-should-get-your-hands-on-in-2020-832c29db936a 

 

 

반응형