서론
소프트웨어 개발에서 CI/CD는 이제 필수가 되었다. 그 중심에 있는 도구 중 하나가 바로 Jenkins가 있다. 이 글에서는 Jenkins를 활용한 CI/CD 구현을 시작하기 위한 기본적인 정보를 다루고, 설치 및 구성 방법을 알아가보자.
젠킨스 소개
Jenkins는 오픈 소스 CI/CD 도구로, 개발, 빌드, 테스트, 배포의 자동화를 지원한다. 다양한 플러그인을 통해 기능을 확장할 수 있으며, 거의 모든 프로그래밍 언어와 빌드 도구를 지원한다. Jenkins의 주요 장점은 다음과 같다.
- 자동화: 반복적인 작업을 자동화하여 시간과 비용을 절약
- 확장성: 1,800개 이상의 플러그인을 통해 다양한 요구를 충족
- 플랫폼 독립성: Windows, macOS, Linux 등 다양한 운영 체제에서 실행 가능
젠킨스 아키텍처
Jenkins는 마스터-슬레이브 아키텍처를 기반으로 동작한다. 이를 통해 높은 확장성과 안정성을 제공한다.
- Jenkins Master
- 메인 서버로서 사용자의 요청을 처리하고, 작업(Job)을 관리한다.
- 슬레이브(에이전트)와의 통신을 통해 작업을 분배한다.
- Jenkins Slave (Agent)
- 빌드와 테스트 작업을 수행하는 실행 환경이다.
- 슬레이브는 특정 플랫폼 또는 요구 사항에 따라 설정할 수 있다.
- 플러그인 시스템
- Jenkins의 기능 확장은 플러그인에 의해 이루어진다.
- 소스 코드 관리(Git), 빌드 도구(Maven, Gradle), 배포 플랫폼(Docker, Kubernetes) 등 다양한 플러그인을 제공한다.
이 구조를 통해 Jenkins는 대규모 프로젝트에서도 유연하고 안정적으로 작업을 관리할 수 있다.
젠킨스 설치
- Java 설치
- Jenkins는 Java 기반 도구이다. 설치 전 Java가 설치되어 있어야 한다.
- Java 다운로드 링크에서 JDK를 설치하고, 환경 변수를 설정한다.
- Jenkins 다운로드
- Jenkins 설치
- 다운로드한 .msi 파일을 실행하여 설치를 진행한다.
- 설치 중 서비스 계정을 선택할 때 기본 설정을 유지한다.
- 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를 효율적으로 관리하고 문제를 해결하는 데 도움이 된다.
- 주요 디렉터리 구조
- jobs/: 각 작업(Job)의 설정 파일과 실행 결과를 저장한다.
- plugins/: 설치된 플러그인 파일이 위치한다.
- workspace/: 빌드가 실행되는 작업 공간이다.
- config.xml: Jenkins 서버의 기본 설정 파일이다.
- 설정 파일 관리
- 모든 설정은 XML 파일로 저장되므로 수동 편집이 가능하다.
- 설정 변경 후 Jenkins를 재시작하면 반영된다.
- 백업 및 복원
- 주요 디렉터리와 설정 파일을 정기적으로 백업해 두는 것이 중요하다.
- 시스템 오류 시, 백업 파일로 복원할 수 있다.
반응형
'VCS > CICD' 카테고리의 다른 글
젠킨스 작업의 이해 (0) | 2024.12.29 |
---|---|
젠킨스 자격 증명 관리와 사용자 관리 (0) | 2024.12.29 |
젠킨스 플러그인 관리와 보안 관리 (0) | 2024.12.29 |
젠킨스 구성과 전역 도구 구성 (0) | 2024.12.28 |
CI/CD의 필요성 (1) | 2024.12.21 |
댓글