Jenkins 빌드 작업을 docker 컨테이너에서 수행

3352 단어 Jenkins도커

동기



Jenkins가 더러워지는 것을 볼 수 없습니다.



Jenkins에서 java뿐만 아니라 python, nodejs, ruby를 빌드하는 경우 각 환경을 설치해야하며 Jenkins의 내용이 더러워집니다.

특히 Jenkins를 컨테이너로 운영하는 경우 변경 사항을 이미지로 커밋해야합니다.

Jenkins에서 컨테이너 빌드가 번거롭다고 생각했지만,



Jenkinsfile도 별로 침투하지 않는 경우도 있고, wercker처럼 docker 이미지를 선택하고 yaml을 쓰면 자동으로 해주는 이미지가 없었습니다.

하지만 아래 사이트를 열람하고 Jenkinsfile로 편하게 할 수 있다는 것을 알았습니다.

참고



최초의 Jenkins와 Declarative Pipeline
htps : // 코 m / p 로페 / ms / 77060 c98b9034f69 b

Jenkins 작업 (빌드 ~ 테스트)을 Docker 컨테이너에서 실행 ~ Docker Pipeline Plugin을 사용해보십시오 ~
ㅡㅜㅜㅜㅜ 하테나 bぉg. 코m/엔트리/2017/06/13/003123

Jenkins 환경 구축



docker 컨테이너로 Jenkins를 시작합니다.
OS는 Amazon Linux를 사용했습니다.

Jenkins의 공식 사이트를 확인한 결과, BlueOcean 컨테이너를 추천했으므로, 이쪽을 사용해 보겠습니다.
htps : ///지킨킨 s. 이오/도 c/보오 k/인 s 흠 g/
docker run \
  -u root \
  --rm \  
  -d \ 
  -p 8080:8080 \ 
  -p 50000:50000 \ 
  -v jenkins-data:/var/jenkins_home \ 
  -v /var/run/docker.sock:/var/run/docker.sock \ 
  jenkinsci/blueocean 

루트 사용자로 시작하고 docker는 호스트와 공유하는 설정 인 것 같습니다.
--rm은 실제로 이용하는 경우는 지워야 합니다.

기동 후, 초기 설정을 실시합니다. (초기 설정은 생략합니다)

오픈 블루 오션



메인 화면에 "Open Blue Ocean"이라는 탭이 추가되어 있기 때문에 클릭하면 지금의 UI로 날아갑니다.



꽤 멋지다.
설정 버튼을 누르면 지금까지 Jenkins의 설정 화면이 나오는 것은 사랑입니다.

Jenkins의 뒷면으로는 pipeline 작업에서 리포지토리를 설정하고 있으므로 pipeline 작업과 같은 사용법을하면 OK입니다.

Jenkinsfile로 docker 컨테이너로 빌드



Jenkinsfile을 작성합니다.
이것을 리포지토리의 최상위 디렉토리에 배포하면 자동으로 Jenkins가 읽습니다.
pipeline {
    agent { docker 'python:3.6' }
    stages {
        stage('setup') {
            steps {
                sh 'pip install -r requirements.txt'
            }
        }
        stage('build') {
            steps {
                sh 'python manage.py test'
                junit 'TEST-*.xml'
            }
        }
    }
}

간이 agent 부분이고 docker 이미지를 지정하면,

빌드 컨테이너 시작

빌드 컨테이너의 현재 디렉토리에 리포지토리 가져 오기

잘 가겠습니다.





circleci와 wercker 같은 지금의 플랫 디자인 UI입니다.

결론



Jenkins로 컨테이너 빌드를 쉽게 할 수있었습니다.
이것으로 wercker등의 CI툴의 간편함으로, 컨테이너내를 더럽히는 일 없이 빌드를 할 수 있을 것 같네요.

유일한 난점이라고 할까 괜찮지 않은 점이 Jenkinsfile이 groovy라는 것이군요.
다른 CI 툴과 같이 yaml로 쓸 수 있게 되면 기쁩니다만, 플러그인이 Java인 관계이지요.

좋은 웹페이지 즐겨찾기