젠킨스로 배우는 CI/CD 파이프라인 구축 [보안, 파이프라인, 테스트, AWS/Docker 통합]
- 원서명CI/CD Pipeline Using Jenkins Unleashed: Solutions While Setting Up CI/CD Processes (ISBN 9781484275078)
- 지은이프라노데이 프라모드 딩가레(Pranoday Pramod Dingare)
- 옮긴이이정표
- ISBN : 9791161758244
- 33,000원
- 2024년 03월 11일 펴냄
- 페이퍼백 | 396쪽 | 188*235mm
- 시리즈 : 소프트웨어 테스팅
책 소개
소스 코드 파일은 여기에서 내려 받으실 수 있습니다.
https://github.com/AcornPublishing/cicd-pipeline-jenkins
요약
젠킨스를 사용해 프로젝트의 시작부터 최종 단계까지 CI/CD를 구현하는 방법을 설명하고, 엔드투엔드 파이프라인을 직접 만들어 봄으로써 데브옵스 실무에 적응할 수 있는 안내자 역할을 하는 책이다. 젠킨스에 대한 소개부터 시작해서 CI/CD에서의 아키텍처와 역할을 설명하고, 플러그인 설치, 보안 조치, 프로젝트 및 작업 구성, (분산) 파이프라인 구성 등을 다룬다. 또한, TestNG를 사용한 단위 테스트와 셀레늄(Selenium) 파이썬을 사용한 종단간(E-E, End-to-End) 테스트도 살펴본다. 그 외 다양한 운영체제 및 도커 환경, AWS 등의 클라우드 환경에서 젠킨스를 통합하는 방법과 재사용 라이브러리를 생성하고, 젠킨스 CLI 및 REST API를 사용해 젠킨스 서버를 제어하는 방법을 배운다.
이 책에서 다루는 내용
◆ 젠킨스를 사용한 종단간(E-E, End-to-End) 파이프라인 생성
◆ 젠킨스와 아마존 웹 서비스(AWS, Amazon Web Services), 도커, 깃 등 주요 도구와의 통합
◆ 셀레늄을 사용한 E-E 테스트 자동화
◆ 분산 파이프라인 생성
이 책의 대상 독자
CI/CD 파이프라인을 구축하는 개발자, 테스트 자동화 엔지니어, 데브옵스 전문가를 꿈꾸는 중급 운영자에게 도움이 된다.
지은이의 말
젠킨스를 사용해 지속적 통합(CI, Continuous Integration), 지속적 제공, 지속적 배포(CD, Continuous Deployment)를 이해하려는 독자를 위해 이 책을 집필했다. 지속적 통합과 배포(CI/CD) 프로세스를 구축하면 사용자와 관리자는 소프트웨어 개발 과정에서 발생하는 문제를 즉각 파악할 수 있게 된다.
젠킨스에 대한 소개로 시작해 CI/CD에서의 젠킨스 아키텍처와 역할을 다룬다. 그리고 젠킨스 설치 방법 및 환경 설정 같은 기본 사항도 살펴보며, 도구 구성 및 플러그인은 물론 자격 증명과 같은 보안 조치도 설명한다. 또한 유형, 섹션 등을 포함해 젠킨스의 작업에 대해 자세히 배우고, 자바(Java) API 프로젝트의 작업과 구성도 알아본다. 책의 후반부터는 파이프라인(pipeline)의 생성 방법과 웹 애플리케이션(web application) 관리에서의 역할 및 분산 파이프라인을 다룬다. 깃(Git)이라는 분산 버전 제어 시스템의 작동을 배우고, SSH 같은 다양한 인증 기술을 사용해 접속하는 방법에 대한 예제와 시나리오도 알아볼 것이다. 테스트와 관련해서는 TestNG를 사용한 단위 테스트와 셀레늄(Selenium) 도구를 사용한 종단간(E-E, End-to-End) 테스트 수행 절차를 배운다. 또한 아마존 웹 서비스(AWS, Amazon Web Services)와 같은 클라우드 환경과 젠킨스의 통합에 대해서도 설명한다. 젠킨스 파이프라인에서 사용할 재사용 가능한 라이브러리를 만드는 방법과 젠킨스 명령행 인터페이스(CLI, Command Line Interface) 및 REST API를 사용해 서버를 제어하는 방법도 다룬다.
이 책을 학습하면 처음 프로젝트를 시작할 때부터 젠킨스를 사용해 CI/CD를 구현하는 방법과 데브옵스를 준비할 때 도움을 받을 수 있다.
목차
목차
- 1장. 지속적 통합/배포의 이해
- 개발 워크플로
- 로컬에서 단위 테스트 실행
- 중앙 리포지터리로 코드 푸시 및 병합
- 병합 후 코드 컴파일
- 컴파일된 코드에서 테스트 실행
- 아티팩트 배포
- 지속적 제공/지속적 배포
- CI/CD 워크플로 예제
- 최신 코드 가져오기
- 단위 테스트 구현과 실행
- 코드 개발
- 단위 테스트 케이스 재실행
- 코드 푸시와 병합
- 코드 병합 후 컴파일
- 병합된 코드에서 테스트 실행
- 아티팩트 배포
- 배포 애플리케이션의 E-E 테스트 실행
- 요약
- 개발 워크플로
- 2장. 젠킨스 소개
- 젠킨스란?
- 젠킨스의 역사
- 젠킨스를 이용한 CI/CD 구현
- 젠킨스 아키텍처
- 요약
- 젠킨스란?
- 3장. 젠킨스 설치
- 윈도우에 젠킨스 설치
- 하드웨어/소프트웨어 요구 사항
- 다양한 젠킨스 설치 방법
- 젠킨스의 구성 파일 및 디렉터리 구조 이해
- jenkins.xml 의 주요 설정값 이해
- 요약
- 윈도우에 젠킨스 설치
- 4장. 젠킨스 구성
- 전역 설정 및 경로의 구성
- 젠킨스 로그인
- 시스템 구성 옵션 이해
- 사용자 이름과 비밀번호 재설정
- 신규 사용자 추가
- 요약
- 전역 설정 및 경로의 구성
- 5장. 젠킨스 플러그인 관리
- 플러그인이란
- 많이 사용되는 플러그인
- 플러그인 설치
- 플러그인 매니저 이해
- 설치 문제 해결법
- 문제 1
- 문제 2
- 요약
- 플러그인이란
- 6장. 전역 도구 구성의 이해
- 전역 도구 구성 설정
- 전역 도구 구성의 이해
- 요약
- 전역 도구 구성 설정
- 7장. 젠킨스의 보안 관리
- 젠킨스의 전역 보안 구성
- 젠킨스 LDAP 구성
- 젠킨스 LDAP 필요성
- 젠킨스 LDAP 구성
- 요약
- 젠킨스의 전역 보안 구성
- 8장. 자격 증명 관리
- 젠킨스의 자격 증명 이해
- 자격 증명 항목 생성
- 범위 및 도메인 이해
- 젠킨스에서 자격 증명 항목 생성
- 전역 범위와 전역 도메인(기본값)에서 자격 증명 항목 생성
- 자격 증명 항목 업데이트
- 특정 도메인에서 자격 증명 항목 생성
- 자격 증명 공급자 구성
- 요약
- 9장. 사용자 관리
- 젠킨스 사용자 생성
- 젠킨스 사용자에게 역할 할당
- 역할-기반 전략 플러그인 설치
- 역할-기반 전략 플러그인 활성화
- 젠킨스에서 역할 생성
- 사용자에게 역할 할당
- 역할 할당 확인
- 프로젝트-기반 역할 생성
- 프로젝트-기반 역할 할당
- 프로젝트-기반 역할 검증
- 매트릭스-기반 보안 이해
- 프로젝트-기반 매트릭스 권한 부여 전략 이해
- 요약
- 10장. 젠킨스 작업의 이해
- 젠킨스의 작업
- 젠킨스의 빌드
- 프리스타일 작업
- 젠킨스의 작업 생성
- 젠킨스의 작업 구성
- 매개변수형 프로젝트
- 프로젝트 비활성화
- 동시 빌드 실행
- 대기 시간
- 재시도 회수
- 업스트림 프로젝트가 빌드 중일 때 빌드 차단
- 다운스트림 프로젝트가 빌드 중일 때 빌드 차단
- 커스텀 워크스페이스 사용
- 표시 이름 지정
- 의존성 빌드 로그 유지
- 소스 코드 관리
- 빌드 브랜치
- 빌드 트리거
- 빌드 스텝
- 포스트-빌드 액션
- 작업 실행 및 결과 확인
- 작업 수정
- 워크스페이스 보기
- 워크스페이스 비우기
- 작업 삭제
- 요약
- 11장. 메이븐으로 자바 API 프로젝트 준비
- 메이븐 빌드 도구의 이해
- 자바 API 프로젝트 개발 과정
- 개발자 지원 빌드 도구 사용법
- 자바 API 프로젝트 빌드
- 메이븐 프로젝트 디렉터리 구조
- 자바 API 프로젝트 코드 파일
- 자바 API 프로젝트의 pom.xml 파일
- CLI에서 메이븐 사용
- 메이븐의 settings.xml 파일
- 요약
- 메이븐 빌드 도구의 이해
- 12장. 메이븐과 넥서스 통합 및 자바 API 릴리스용 프리스타일 작업 생성
- 깃의 이해
- 깃 설치
- 깃허브와 깃랩
- 깃 프로세스 이해
- 1단계: 로컬 리포지터리 생성
- 2단계: 깃랩에 중앙 리포지터리 생성
- 3단계: 로컬 리포지터리로 커밋
- 4단계: 로컬 리포지터리의 코드를 깃랩으로 푸시
- 5단계: 깃랩의 리포지터리에 마스터 브랜치 생성
- 넥서스 리포지터리의 이해
- 아티팩트
- 넥서스 리포지터리
- 넥서스 리포지터리 설치
- 넥서스 리포지터리 시작
- 넥서스 설치: 윈도우 서비스
- 넥서스 리포지터리 매니저 접속
- 호스티드 리포지터리 생성
- 메이븐과 넥서스 리포지터리 통합
- 넥서스 리포지터리에서 CalculatorAPI.jar 파일 릴리스
- 넥서스 리포지터리에서 CalculatorAPI.jar를 릴리스하는 젠킨스 프리스타일 작업 생성
- 1단계: 젠킨스에서 메이븐 설정
- 2단계: 깃 리포지터리 자격 증명 추가
- 3단계: 젠킨스 대시보드에서 프리스타일 작업 생성
- 4단계: API 프로젝트에 뺄셈 함수와 단위 테스트 케이스 추가
- 5단계: 로컬 리포지터리에서 커밋과 푸시 실행
- 6단계: SubtractionFunction 브랜치를 깃랩 중앙 리포지터리의 Master 브랜치와 병합
- 넥서스 리포지터리에서 CalculatorAPI.jar를 릴리스하는 젠킨스 프리스타일 작업 실행
- 요약
- 13장. 자바 API 릴리스를 관리하는 자동 실행 프리스타일 작업 생성
- 비공개 깃랩 리포지터리에 컨트리뷰터 추가
- 코드 리포지터리에 팀원 초대
- SSH 인증 이해
- SSH 인증 필요성
- 깃랩의 SSH 인증 동작 방식
- 자바 API 코드 리포지터리에 SSH 인증 적용
- 1단계: 공개 키와 개인 키를 생성
- 2단계: JenkinsBookCalculatorAPI 깃랩 리포지터리에 공개 키 추가
- SSH를 이용한 리포지터리 접속과 함수 추가
- 1단계: JenkinsBookCalculatorAPI 리포지터리 복제
- 2단계: Calculator 클래스에 Multiplication 함수 추가
- 3단계: Multiplication 함수의 테스트 케이스 추가
- 4단계: pom.xml에서 버전을 3.0으로 변경
- 5단계: 단위 테스트 및 신규 기능의 회귀 테스트
- 6단계: 로컬 브랜치에 기능 변경 사항 커밋
- 7단계: 로컬 브랜치를 원격 리포지터리로 푸시
- 8단계: 새로 추가된 브랜치의 병합 요청
- 이메일 알림 기능을 갖는 자동 실행 젠킨스 작업 생성
- 1단계: 프리스타일 작업 생성
- 젠킨스에서 이메일 알림 설정
- 새 젠킨스 작업 시작
- SCM이 설정된 작업 실행
- 빌드 실패 이메일 알림 확인
- 요약
- 비공개 깃랩 리포지터리에 컨트리뷰터 추가
- 14장. 젠킨스 파이프라인의 이해
- 젠킨스 파이프라인
- 파이프라인의 장점
- 파이프라인 용어 이해
- 파이프라인 구문
- 선언형 파이프라인 기초
- 스크립트형 파이프라인 기초
- 젠킨스에서 파이프라인 정의
- 파이프라인 속도/내구성 오버라이드
- java.lang.IllegalArgumentException:
- Unsupported Class File Major Version Error 해결
- 젠킨스 파이프라인의 문자열 보간 이해
- 문자열 보간 예제
- 자바 API를 릴리스하는 파이프라인 작업 생성
- 파이프라인 작업 실행 및 Calculator API 릴리스
- 요약
- 15장. 웹 애플리케이션 프로젝트를 관리하는 젠킨스 작업 생성
- 계산기 웹 애플리케이션의 소스 코드
- 계산기 웹 애플리케이션 구현
- 계산기 웹 애플리케이션 배포
- 계산기 웹 애플리케이션 접속
- 셀레늄을 이용한 E-E 테스트 이해
- UI 자동화 테스트
- UI 자동화 도구의 동작 방식
- 셀레늄 웹드라이버
- 파이썬으로 작성된 셀레늄 테스트 이해
- 테스트 케이스 실행에 필요한 소프트웨어 설정
- 셀레늄 파이썬 테스트 실행
- 웹 애플리케이션 및 자동화 테스트 프로젝트를 깃허브 리포지터리로 푸시
- 1단계: 깃허브 가입
- 2단계: 새 리포지터리 생성
- 3단계: 깃허브 리포지터리용 SSH 키 쌍 생성
- 4단계: $(user.name)\.ssh\config 파일에 SSH 개인 키 파일 경로 넣기
- 5단계: 깃허브 리포지터리에 SSH 공개 키 추가
- 6단계: 계산기 웹 애플리케이션을 로컬 리포지터리의 마스터 브랜치에 커밋
- 7단계: 마스터 브랜치를 원격 리포지터리로 푸시
- 셀레늄 파이썬 자동 프로젝트를 깃허브로 푸시
- 매개변수형 자동 실행 프리스타일 젠킨스 작업 생성
- 1단계: Parameterized Trigger 플러그인 설치
- 2단계: BuildAndDeployCalculatorWebApplication 작업 생성
- 3단계: TestCalculatorWebApplication 작업 생성
- 확장 이메일 알림 기능 구성
- 1단계: 이메일 확장 플러그인 설치
- 2단계: 확장 이메일 설정
- 3단계: TestCalculatorWebApplication 작업의 .
- Post-Build 섹션에서 Email Notification 스텝 추가
- 매개변수형 프리스타일 작업 수동 실행
- 매개변수형 프리스타일 작업 자동 실행
- 매개변수형 파이프라인 작업 생성
- 계산기 웹 애플리케이션 매개변수형 파이프라인 작업의 빌드 생성과 배포
- TestCalculatorWebApplication 파이프라인 작업 생성
- 매개변수형 파이프라인 작업 수동 실행
- 매개변수형 파이프라인 작업 자동 시작
- 요약
- 16장. 코드형 파이프라인 이해
- API 인증
- 깃허브 리포지터리에 API 인증 적용
- API 토큰으로 비공개 깃허브 리포지터리에 접속
- 깃랩에서 API 액세스 토큰 생성
- API 토큰으로 비공개 깃랩 리포지터리에 접속
- 젠킨스에서 API 토큰으로 깃허브/깃랩 리포지터리에 접속
- 1단계: 젠킨스에서 메이븐 설정
- 2단계: 젠킨스 대시보드에서 프리스타일 작업 생성
- 3단계: 복제된 API 프로젝트의 pom.xml 버전 변경
- 4단계: 로컬 리포지터리에서 변경 사항을 커밋하고 깃랩 중앙 리포지터리로 푸시
- API 토큰으로 깃랩 리포지터리에 접속하는 프리스타일 작업 실행
- 코드형 파이프라인 이해
- Jenkinsfile에서 파이프라인 작성
- 깃허브 웹훅으로 시작하는 파이프라인 작업 생성
- 깃허브 웹훅을 사용해 파이프라인 작업 시작
- 요약
- 17장. 젠킨스 분산 빌드
- 젠킨스의 분산 아키텍처
- 컨트롤러와 에이전트의 연결
- SSH로 컨트롤러에서 에이전트로의 연결
- 1단계: SSH Build Agents 플러그인 설치
- 2단계: 에이전트에 자바 설치
- 3단계: SSH 공개 키-개인 키 쌍 생성
- 4단계: 개인 키가 포함된 자격 증명 항목을 컨트롤러 기기에 추가
- 5단계: 젠킨스 컨트롤러에 노드 추가
- 6단계: 에이전트의 authorized_keys 파일에 공개 키 추가
- 7단계: 에이전트의 authorized_keys 파일 권한 변경
- 8단계: sshd 서비스 재시작
- 9단계: 컨트롤러에서 에이전트로의 연결 확인
- 10단계: 컨트롤러에서 새 노드 시작
- Node1 에이전트에서 실행할 프리스타일 작업 생성
- Node1 에이전트에서 새로운 프리스타일 작업 실행
- JNLP를 사용해 에이전트와 컨트롤러를 연결하는 구성 이해
- 1단계: JNLP 에이전트의 연결 요청을 수신하도록 젠킨스 컨트롤러 구성
- 2단계: 젠킨스 URL 설정
- 3단계: 에이전트 기기에서 새 노드 추가
- JNLP 노드에서 실행할 작업 생성
- 요약
- 18장. AWS와 젠킨스 통합
- AWS의 EC2 인스턴스 이해
- AWS에서 EC2 인스턴스 생성
- 1단계: AWS 가입
- 2단계: AWS 로그인
- 3단계: EC2 인스턴스 생성
- 4단계: EC2 인스턴스 시작
- 계산기 웹 애플리케이션 배포용 EC2 인스턴스 구성
- 1단계: IIS 웹 서버 설치
- 2단계: IIS 웹 서버 구성
- 3단계: 로컬 컴퓨터와 EC2 인스턴스 간의 SSH 연결 구성
- Calculator.html 파일을 EC2 인스턴스에 복사
- 로컬 컴퓨터에서 EC2 인스턴스의 Calculator.html 접속
- EC2 인스턴스에 계산기 웹 애플리케이션을 배포하는 젠킨스 작업 생성
- 셀레늄 프레임워크에서 계산기 애플리케이션 URL 변경
- BuildAndDeployCalculatorWebApplicationOnEC2Instance 작업 실행
- 요약
- 19장. 기타 주제 - 1부
- 젠킨스 CLI 이해
- 젠킨스 CLI 파일 다운로드
- 젠킨스 CLI로 작업 생성
- 기본 인증을 이용한 사용자 인증
- CLI 명령으로 SSH를 이용한 사용자 인증
- 방화벽에서 인바운드 규칙 구성
- SSH 인증을 사용해 젠킨스 CLI로 작업 빌드
- 작업 내보내기
- 작업 가져오기
- 요약
- 20장. 기타 주제 - 2부
- 젠킨스의 원격 액세스 API 이해
- 젠킨스 원격 액세스 API 사용
- 젠킨스 원격 API로 기존 젠킨스 작업 구성 입수
- 젠킨스 원격 API로 새 젠킨스 작업 생성
- 젠킨스 원격 API로 매개변수형 젠킨스 작업 시작
- 젠킨스 원격 API로 일반 젠킨스 작업 시작
- Python-Jenkins로 젠킨스 서버 작업
- Python-Jenkins 패키지 라이브러리 사용
- 젠킨스 파이프라인에서 공유 라이브러리 사용
- 1단계: .groovy 파일에 공유 라이브러리 생성
- 2단계: 생성된 공유 라이브러리 파일을 깃랩 리포지터리로 푸시
- 3단계: 젠킨스에서 공유 라이브러리 구성
- 4단계: 공유 라이브러리 사용 파이프라인 작업 생성
- 5단계: 파이프라인 작업 실행하기
- 요약