회사 스터디로 Jenkins 공부를 하게 되었다...
🚀 Jenkins
- 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/ 접속
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
'Develop > etc' 카테고리의 다른 글
[Jenkins] Git과 연동하기 (2) | 2021.02.24 |
---|---|
[Eclipse] The project contains another dependency with the same archive name (0) | 2021.02.18 |
초보 개발자를 위한 도구 (0) | 2021.02.16 |
[GIT] 로컬 프로젝트를 GitHub에 올리기 (0) | 2021.02.15 |
[eclipse] mustache 이용하기 (2) | 2021.01.19 |