Jenkins 설치와 파이프라인

Jenkins는 소프트웨어 개발의 지속적 통합(CI)지속적 배포(CD) 를 지원하는 오픈소스 자동화 서버입니다. 코드 변경을 자동으로 빌드·테스트하고 배포까지 이어줍니다.

Docker로 설치

가장 간단한 건 Docker로 올리는 방법입니다.

docker run --name jenkins -d \
  -p 8080:8080 -p 50000:50000 \
  -v jenkins_home:/var/jenkins_home \
  jenkins/jenkins:lts

8080은 웹 UI, 50000은 에이전트 통신용 포트입니다. jenkins_home 볼륨을 붙여 설정과 빌드 기록을 보존합니다. 권한 에러가 나면 볼륨 디렉토리 소유권을 맞춰줍니다(chown -R 1000:1000 ./jenkins_home).

브라우저로 http://[IP]:8080 에 접속한 뒤 초기 관리자 비밀번호를 확인합니다.

docker exec jenkins cat /var/jenkins_home/secrets/initialAdminPassword

버전 선택: lts 태그는 안정화된 Long Term Support 릴리스입니다. Weekly(최신)는 새 기능이 빠르지만 버그 가능성이 있으니, 운영에는 LTS를 권장합니다. 특정 버전을 고정하려면 jenkins/jenkins:2.xxx 처럼 태그를 명시하세요.

파이프라인

Jenkins Pipeline은 빌드·테스트·배포 과정을 코드(워크플로우)로 정의합니다.

pipeline {
    agent any
    stages {
        stage('clone') {
            steps {
                git branch: "main", url: 'https://github.com/user/project'
            }
        }
        stage('build') {
            steps {
                sh "go build main.go"
            }
        }
        stage('execute') {
            steps {
                sh "./main"
            }
        }
    }
}
  • Agent: 파이프라인이 실행될 환경
  • Stage: 파이프라인의 단계 (이름으로 구분)
  • Step: 각 단계에서 수행하는 작업 단위

Git 저장소를 붙이려면 Jenkins 관리 → Credentials 에서 Username(Git ID)과 Password(Git Token)로 자격 증명을 추가하고 파이프라인에서 참조합니다.

쿠버네티스 연동

빌드마다 에이전트 파드를 동적으로 띄우려면 Kubernetes 플러그인을 씁니다. Jenkins 관리 → Plugins 에서 “Kubernetes”를 설치한 뒤 Clouds에 클러스터를 등록합니다.

  • Kubernetes URL: https://[마스터IP]:6443 (내부 통신이면 인증서 검사 비활성화)
  • Namespace: jenkins
  • Credentials: Secret text 종류로 서비스 어카운트 토큰 입력
  • Jenkins URL / tunnel: http://[JenkinsIP]:8080, http://[JenkinsIP]:50000

토큰은 마스터에서 서비스 어카운트를 만들어 발급합니다.

kubectl create ns jenkins
kubectl create sa jenkins-admin -n jenkins
kubectl create rolebinding -n jenkins jenkins-admin-rolebinding \
  --clusterrole=admin --serviceaccount=jenkins:jenkins-admin

이후 서비스 어카운트 토큰 Secret을 만들어(kubernetes.io/service-account-token 타입) kubectl describe secret 으로 토큰을 얻어 Credentials에 넣고, Test Connection 에서 클러스터 버전이 뜨면 성공입니다.

CI/CD는 처음 세팅이 번거롭지만, 한 번 붙여두면 “푸시하면 알아서 빌드·배포”가 되니 그 뒤로는 정말 편해집니다.