Jenkins의 작업을 소스 코드로 버전 관리하고 싶습니다.

살펴보면 과거의 선인들의 기사가 몇 가지 나오지만, 내가 하고 싶은 일과는 조금씩 달랐기 때문에, 이것저것 해 보았던 일을 정리해 보았습니다.

하고 싶은 일


  • Jenkins 작업 설정 (및 파이프 라인 코드) 만 버전 관리하고 싶습니다.
  • $JENKINS_HOME/jobs/{job-name}/config.xml

  • 그렇지 않으면 버전 관리하지 않음
  • 직업 기록
  • 작업 작업 공간
  • 자격 증명
  • 사용자 정보
  • etc...

  • Jenkins의 운영 환경 구축 절차도 코딩하고 싶습니다

  • 할 수있는 것



    움직이는 것이 여기 ↓에 있습니다.
  • htps : // 기주 b. 코 m / 메 g도 g도 g1965 /

  • 운영 환경:
    → 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
    

    브라우저에서 액세스합니다.
  • http://localhost:8080

  • 호스트 시스템의 ./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
    

    좋은 웹페이지 즐겨찾기