본문 바로가기
VCS/CICD

JenKins로 CI/CD 시작하기

by Jinger 2024. 12. 27.

서론

   소프트웨어 개발에서 CI/CD는 이제 필수가 되었다. 그 중심에 있는 도구 중 하나가 바로 Jenkins가 있다. 이 글에서는 Jenkins를 활용한 CI/CD 구현을 시작하기 위한 기본적인 정보를 다루고, 설치 및 구성 방법을 알아가보자.


젠킨스 소개

   Jenkins는 오픈 소스 CI/CD 도구로, 개발, 빌드, 테스트, 배포의 자동화를 지원한다. 다양한 플러그인을 통해 기능을 확장할 수 있으며, 거의 모든 프로그래밍 언어와 빌드 도구를 지원한다. Jenkins의 주요 장점은 다음과 같다.

  • 자동화: 반복적인 작업을 자동화하여 시간과 비용을 절약
  • 확장성: 1,800개 이상의 플러그인을 통해 다양한 요구를 충족
  • 플랫폼 독립성: Windows, macOS, Linux 등 다양한 운영 체제에서 실행 가능

젠킨스 아키텍처

   Jenkins는 마스터-슬레이브 아키텍처를 기반으로 동작한다. 이를 통해 높은 확장성과 안정성을 제공한다.

  1. Jenkins Master
    • 메인 서버로서 사용자의 요청을 처리하고, 작업(Job)을 관리한다.
    • 슬레이브(에이전트)와의 통신을 통해 작업을 분배한다.
  2. Jenkins Slave (Agent)
    • 빌드와 테스트 작업을 수행하는 실행 환경이다.
    • 슬레이브는 특정 플랫폼 또는 요구 사항에 따라 설정할 수 있다.
  3. 플러그인 시스템
    • Jenkins의 기능 확장은 플러그인에 의해 이루어진다.
    • 소스 코드 관리(Git), 빌드 도구(Maven, Gradle), 배포 플랫폼(Docker, Kubernetes) 등 다양한 플러그인을 제공한다.

   이 구조를 통해 Jenkins는 대규모 프로젝트에서도 유연하고 안정적으로 작업을 관리할 수 있다.


젠킨스 설치 

  1. Java 설치
    • Jenkins는 Java 기반 도구이다. 설치 전 Java가 설치되어 있어야 한다.
    • Java 다운로드 링크에서 JDK를 설치하고, 환경 변수를 설정한다.
  2. Jenkins 다운로드
  3. Jenkins 설치
    • 다운로드한 .msi 파일을 실행하여 설치를 진행한다.
    • 설치 중 서비스 계정을 선택할 때 기본 설정을 유지한다.
  4. Jenkins 실행 및 초기 설정
    • 설치가 완료되면 브라우저에서 http://localhost:8080으로 접속한다.
    • 관리자 비밀번호를 입력하고, 추천 플러그인을 설치한다.
    • 기본 사용자 계정을 생성한다.

젠킨스 구성 파일 및 디렉터리 구조 이해

JENKINS_HOME
+- config.xml	(Jenkins root configuration file)
+- *.xml	(other site-wide configuration files)
+- identity.key	(RSA key pair that identifies an instance)
+- secret.key	(deprecated key used for some plugins secure operations)
+- secret.key.not-so-secret	(used for validating $JENKINS_HOME_ creation date)
+- userContent	(files served under your https://server/userContent/)
+- secrets	(root directory for the secret+key for credential decryption)
	+- hudson.util.Secret	(used for encrypting some Jenkins data)
	+- master.key	(used for encrypting the hudson.util.Secret key)
	+- InstanceIdentity. KEY	(used to identity this instance)
+- fingerprints	(stores fingerprint records, if any)
+- plugins	(root directory for all Jenkins plugins)
	+- [PLUGINNAME]	(sub directory for each plugin)
		+- META-INF	(subdirectory for plugin manifest + pom.xml)
        +- WEB-INF	(subdirectory for plugin jar(s) and licenses.xml)
	+- [PLUGINNAME].jpi	(.jpi or hpi file for the plugin)
+- jobs	(root directory for all Jenkins jobs)
	+- [JOBNAME]	(sub directory for each job)
		+- config.xml	(job configuration file)
		+- workspace	(working directory for the version control system)
		+- latest	(symbolic link to the last successful build)
		+- builds	(stores past build records)
			+- [BUILD_ID]	(subdirectory for each build)
				+- build.xml	(build result summary)
				+- log	(log file)
				+- changelog.xml	(change log)
	+- [FOLDERNAME]	(sub directory for each folder)
		+- config.xml	(folder configuration file)
		+- jobs	(sub directory for all nested jobs)
더보기
JENKINS_HOME
+- config.xml	(Jenkins 루트 설정 파일)
+- *.xml	(다른 사이트 전체 구성 파일)
+- identity.key	(인스턴스를 식별하는 RSA 페어키)
+- secret.key	(일부 플러그인 보안 작업에 사용되는 키)
+- secret.key.not-so-secret	($JENKINS_HOME_ 생성 날짜 검증에 사용됨)
+- userContent	(https://server/userContent/에서 제공되는 파일)
+- secrets	(자격 증명 복호화를 위한 비밀키의 루트 디렉토리)
	+- hudson.util.Secret	(일부 Jenkins 데이터 암호화에 사용됨)
	+- master.key	(hudson.util.Secret 키를 암호화하는 데 사용됨)
	+- InstanceIdentity. KEY	(이 인스턴스를 식별하는 데 사용됨)
+- fingerprints	(지문 기록 저장)
+- plugins	(모든 Jenkins 플러그인의 하위 디렉토리)
	+- [PLUGINNAME]	(각 플러그인의 하위 디렉토리)
		+- META-INF	(plugin manifest + pom.xml의 하위 디렉토리)
        +- WEB-INF	(plugin jar(s) 및 licenses.xml의 하위 디렉토리)
	+- [PLUGINNAME].jpi	(플러그인에 대한 .jpi or hpi 파일)
+- jobs	(모든 Jenkins 작업에 대한 루트 디렉토리)
	+- [JOBNAME]	(각 작업에 대한 하위 디렉토리)
		+- config.xml	(작업 구성 파일)
		+- workspace	(버전 제어 시스템(VCS)의 작업 디렉토리)
		+- latest	(마지막으로 성공적인 빌드에 대한 심볼릭 링크)
		+- builds	(과거 빌드 기록 저장)
			+- [BUILD_ID]	(각 빌드의 하위 디렉토리)
				+- build.xml	(빌드 결과 요약)
				+- log	(로그 파일)
				+- changelog.xml	(변경 로그)
	+- [FOLDERNAME]	(각 폴더의 하위 디렉토리)
		+- config.xml	(폴더 구성 파일)
		+- jobs	(모든 중첩 작업에 대한 하위 디렉토리)

   Jenkins는 설치 후 다양한 설정 파일과 디렉터리를 생성한다. 이를 이해하면 Jenkins를 효율적으로 관리하고 문제를 해결하는 데 도움이 된다.

  1. 주요 디렉터리 구조
    • jobs/: 각 작업(Job)의 설정 파일과 실행 결과를 저장한다.
    • plugins/: 설치된 플러그인 파일이 위치한다.
    • workspace/: 빌드가 실행되는 작업 공간이다.
    • config.xml: Jenkins 서버의 기본 설정 파일이다.
  2. 설정 파일 관리
    • 모든 설정은 XML 파일로 저장되므로 수동 편집이 가능하다.
    • 설정 변경 후 Jenkins를 재시작하면 반영된다.
  3. 백업 및 복원
    • 주요 디렉터리와 설정 파일을 정기적으로 백업해 두는 것이 중요하다.
    • 시스템 오류 시, 백업 파일로 복원할 수 있다.
반응형

'VCS > CICD' 카테고리의 다른 글

젠킨스 작업의 이해  (0) 2024.12.29
젠킨스 자격 증명 관리와 사용자 관리  (0) 2024.12.29
젠킨스 플러그인 관리와 보안 관리  (0) 2024.12.29
젠킨스 구성과 전역 도구 구성  (0) 2024.12.28
CI/CD의 필요성  (1) 2024.12.21

댓글