LoginSignup
1
2

More than 5 years have passed since last update.

jenkins docker上でdocker buildしてdocker hubにupload

Posted at

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
    }   
}

CI

サーバ公開してないためwebhook使えないのでgitへ1分ごとにポーリングする設定にした。

versionファイルを変更してみる

$ vi version # v1.0 -> v1.1に変更
$ git add -A
$ git commit -m "v1.1"
$ git push

1分後勝手にCIがスタート(#24です)
Screen Shot 2018-07-26 at 22.12.20.png

できた!!

screencapture-192-168-11-2-8080-job-test-pipeline-24-console-2018-07-26-22_17_05.png

自動でuploadまでされる感じたまらないですね。

1
2
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
2