Jenkins의 작업을 소스 코드로 버전 관리하고 싶습니다.
하고 싶은 일
$JENKINS_HOME/jobs/{job-name}/config.xml
할 수있는 것
움직이는 것이 여기 ↓에 있습니다.
운영 환경:
→ Linux계 OS, docker: 17.09.0-ce, docker-compose: 1.16.1
이동하는 방법
github에서 코드를 clone합니다.
$ git clone https://github.com/megmogmog1965/version-controlled-jenkins
컨테이너를 시작합니다. (빌드도 마음대로 됩니다)
$ cd /path/to/version-controlled-jenkins/
$ docker-compose up -d
브라우저에서 액세스합니다.
호스트 시스템의
./jenkins_home/secrets/initialAdminPassword
에 관리자 암호가 있습니다.시작할 때 이미 "Build docker image"작업이 있습니다.
내용은 Jenkins Pipeline 직업입니다. docker/labs.git을 clone하여 Image를 빌드합니다.
node {
stage('Clone git repository') {
git url: 'https://github.com/docker/labs.git', branch: params['branch']
}
stage('Build docker image') {
sh "cd beginner/flask-app/ && docker build -t ${params.image_name}:${params.image_tag} ."
}
}
물론 새로 추가할 수도 있습니다.
추가한 작업 설정은
git add .
에서 버전 관리할 수 있습니다. 그 외의 설정・데이터의 종류는 무시됩니다.$ git add .
$ git status
On branch master
Your branch is up-to-date with 'origin/master'.
Changes to be committed:
new file: jenkins_home/jobs/new_job/config.xml
구조
Dockerfile/docker-compose.yml에서 Jenkins 운영 환경을 코딩합니다
$JENKINS_HOME
를 git으로 버전 관리합니다. 단 .gitignore
에서 $JENKINS_HOME/jobs/{job-name}/config.xml
이외를 모두 관리 대상에서 제외합니다 .
├── .gitignore
├── Dockerfile
├── docker-compose.yml
└── jenkins_home
└── jobs
└── {ジョブ名}
└── config.xml
Dockerfile
Jenkins 공식 이미지을 바탕으로 사용자 지정하고 만듭니다.
작업이 필요로 하는 환경 (docker 커멘드라든지, java, mvn, npm, etc...)의 구축은 여기에서 소스 코드화합니다.
FROM jenkins:2.60.3-alpine
# using root.
USER root
# setup local environment.
RUN apk upgrade --update && \
apk add --no-cache --update docker curl
docker-compose.yml
컨테이너를 시작하는 방법을 소스 코드화합니다.
./jenkins_home
디렉터리를 컨테이너의 $JENKINS_HOME
에 탑재합니다. Jenkins 데이터는 호스트 시스템에서 영구화됩니다 ./jenkins_home
은 작업 설정 config.xml
만 git 버전 관리됩니다 version: '3.1'
services:
jenkins:
build: .
ports:
- "8080:8080"
- "50000:50000"
volumes:
- ./jenkins_home:/var/jenkins_home
- /var/run/docker.sock:/var/run/docker.sock
/var/run/docker.sock:/var/run/docker.sock
를 마운트하는 것은 Jenkins 작업이 docker 명령을 사용할 수 있도록 docker in docker 때문입니다. 이것 때문에 Windows에서 움직이지 않기 때문에, 없어도 좋습니다..gitignore
호스트 시스템의
./jenkins_home
디렉토리에 대한 git 관리 대상 제외 설정입니다.작업 설정
$JENKINS_HOME/jobs/{job-name}/config.xml
만 버전 관리 대상입니다.# manage: "jenkins_home/jobs/{job-name}/config.xml"
!jenkins_home/
jenkins_home/*
!jenkins_home/jobs/
jenkins_home/jobs/*
!jenkins_home/jobs/*/
jenkins_home/jobs/*/*
!jenkins_home/jobs/*/config.xml
Reference
이 문제에 관하여(Jenkins의 작업을 소스 코드로 버전 관리하고 싶습니다.), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/megmogmog1965/items/9f2fb16dfe9d3db97946텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)