jenkins docker에서 docker build하여 docker hub에 업로드

4899 단어 Jenkins
jenkins 컨테이너에서 docker build 한 이야기. "jenkins 컨테이너에서 docker 사용 - Qiita "의 계속.

jenkins docker에서 docker build는별로하지 않을까. 역시 jenkins 환경도 dockerfile로 코드로 관리하고 싶다는 생각은 이상한 일이 아니라고 생각하지만. 별로 기사를 찾을 수 없습니다. CI를 체험하고 싶었기 때문에 우선 놀아 보았다.

jenkins pipeline의 정의



흐름으로는
gitをポーリング、変更があったらPipelineがトリガーされる
↓
checkout: gitからdockerfile checkout
↓
build: docker build
↓
push: docker hubへpush

라는 심플한 흐름.

아래 pipeline 정의 파일. version이라는 파일에 version을 쓰는 것으로 docker 이미지의 version을 지정할 수 있도록 했다.
// 前提
// - ホストでdocker hubにpushするためにdocker loginを済ませている
// - Scripted pipelineという非推奨の書き方らしい

node {
    stage('Checkout') {
        checkout([$class: 'GitSCM', 
        branches: [[name: '*/master']], 
        doGenerateSubmoduleConfigurations: false, 
        extensions: [], submoduleCfg: [], 
        userRemoteConfigs: [[url: 'https://github.com/paper2/jenkins']]])
    }

    // versionの読み込み
    def version = readFile('version').trim()
    def imageName = "paper2/jenkins:" + version
    print imageName

    stage('Build') {
        sh "docker build -t " + imageName + " ."
    }

    stage ('Push') {
        // jenkinsに登録した認証情報を利用する
        withCredentials([[$class: 'UsernamePasswordMultiBinding', 
                        credentialsId: 'docker-hub-paper2',
                        usernameVariable: 'USERNAME', passwordVariable: 'PASSWORD']]) {
            sh 'docker login -u $USERNAME -p $PASSWORD'
        }
        sh "docker push " + imageName
    }   
}



서버 공개하고 있지 않기 때문에 webhook 사용할 수 없기 때문에 git에 1분마다 폴링하는 설정으로 했다.

버전 파일을 변경해 봅니다.
$ vi version # v1.0 -> v1.1に変更
$ git add -A
$ git commit -m "v1.1"
$ git push

1분 후 마음대로 CI가 스타트(#24입니다)


할 수 있었다! !



자동으로 upload까지 되는 느낌 견딜 수 없네요.

좋은 웹페이지 즐겨찾기