2016-08-17 9 views
1

Jenkinsfiledocker.image().insideを使用して、最初のGoプロジェクトをビルドしてデプロイするためにJenkinsパイプラインを設定しようとしています。私はvendor/ディレクトリの依存関係を拾う方法を理解できません。Dockerを使ってJenkinsのベンダーディレクトリに移動する

私はビルドを実行すると、私はエラーの束を得る:

 
+ goapp test ./... 
src/dao/demo_dao.go:8:2: cannot find package "github.com/dgrijalva/jwt-go" in any of: 
    /usr/lib/go_appengine/goroot/src/github.com/dgrijalva/jwt-go (from $GOROOT) 
    /usr/lib/go_appengine/gopath/src/github.com/dgrijalva/jwt-go (from $GOPATH) 
    /workspace/src/github.com/dgrijalva/jwt-go 

...なぜそれがベンダーのディレクトリを拾っていませんか?私はいくつかのログを投げるとき

sh "cd /workspace/src/bitbucket.org/nalbion/go-demo"を実行した後、次のshコマンドは、元の${WORKSPACE}ディレクトリにまだあるようです。私はJenkinsファイルのアイディアが本当に好きですが、それについてはまともな文書が見つかりません。

は(編集 - まともなドキュメントhereがあるが、私のドッカーファイルが似ているdocker.image().inside)

内で動作するようにdir("/workspace/src/bitbucket.org/nalbion/go-demo") {}いないようです:

 
FROM golang:1.6.2 
# Google's App Engine Go SDK 
RUN wget https://storage.googleapis.com/appengine-sdks/featured/go_appengine_sdk_linux_amd64-1.9.40.zip -q -O go_appengine_sdk.zip && \ 
    unzip -q go_appengine_sdk.zip -d /usr/lib/ && \ 
    rm go_appengine_sdk.zip 
ENV PATH /usr/lib/go_appengine:/go/bin:/usr/local/go/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin 
ENV GOPATH /usr/lib/go_appengine/gopath 
# Add Jenkins user 
RUN groupadd -g 132 jenkins && useradd -d "/var/jenkins_home" -u 122 -g 132 -m -s /bin/bash jenkins 

そして、私のJenkinsfile:

 
node('docker') { 
    currentBuild.result = "SUCCESS" 

    try { 
     stage 'Checkout' 
     checkout scm 

     stage 'Build and Test' 
     env.WORKSPACE = pwd() 
     docker.image('nalbion/go-web-build:latest').inside(
       "-v ${env.WORKSPACE}:/workspace/src/bitbucket.org/nalbion/go-demo " + 
       "-e GOPATH=/usr/lib/go_appengine/gopath:/workspace") { 

      // Debugging 
      sh 'echo GOPATH: $GOPATH' 
      sh "ls -al /workspace/src/bitbucket.org/nalbion/go-demo" 
      sh "cd /workspace/src/bitbucket.org/nalbion/go-demo" 
      sh "pwd" 

      sh "go vet ./src/..." 
      sh "goapp test ./..." 
     } 

     stage 'Deploy to DEV' 
     docker.image('nalbion/go-web-build').inside { 
      sh "goapp deploy --application go-demo --version v${v} app.yaml" 
     } 

     timeout(time:5, unit:'DAYS') { 
      input message:'Approve deployment?', submitter: 'qa' 
     } 

     stage 'Deploy to PROD' 
     docker.image('nalbion/go-web-build').inside { 
      sh "goapp deploy --application go-demo --version v${v} app.yaml" 
     } 
    } catch (err) { 
     currentBuild.result = "FAILURE" 
     // send notifications 
     throw err 
    } 
} 

答えて

0

I同じにcdを含めることでそれを有効にすることができましたステートメント:

 
docker.image('nalbion/go-web-build:latest') 
     .inside("-v ${env.WORKSPACE}:/workspace/src/bitbucket.org/nalbion/go-demo " + 
       "-e GOPATH=/usr/lib/go_appengine/gopath:/workspace") { 
    sh """ 
     cd /workspace/src/bitbucket.org/nalbion/go-demo 
     go vet ./src/... 
     goapp test ./... 
     """ 
} 
関連する問題