我试图建立一个詹金斯管道来构建和部署我的第一个Go项目使用Jenkinsfile
和docker.image().inside
。我不知道如何去拿起vendor/
目录中的依赖项。
当我运行构建时,我得到一堆错误:
<>之前+ goapp test ./…src/刀/demo_dao。Go:8:2:无法在以下任何地方找到"github.com/dgrijalva/jwt-go"包:/usr/lib/go_appengine/goroot/src/github.com/dgrijalva/jwt-go/usr/lib/go_appengine/gopath/src/github.com/dgrijalva/jwt-go/workspace/src/github.com/dgrijalva/jwt-go之前…为什么它没有选择供应商目录?
当我加入一些日志记录时,似乎在运行sh "cd /workspace/src/bitbucket.org/nalbion/go-demo"
之后,下一个sh
命令仍然在原始的${WORKSPACE}
目录中。我真的很喜欢Jenkins文件的想法,但是我找不到任何合适的文档。
(编辑-这里有像样的文档,但dir("/workspace/src/bitbucket.org/nalbion/go-demo") {}
似乎不工作在docker.image().inside)
我的Docker文件类似:
<>之前从golang: 1.6.2# Google的App Engine Go SDK运行wget https://storage.googleapis.com/appengine-sdks/featured/go_appengine_sdk_linux_amd64-1.9.40.zip -q -O go_appengine_sdk.zip && 解压-q go_appengine_sdk.zip -d/usr/lib/&& rm go_appengine_sdk.zipENV PATH/usr/lib/go_appengine:/go/bin:/usr/local/go/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/usr/bin:/sbin:/usr/bin:/sbin:/binENV GOPATH/usr/lib/go_appengine/GOPATH添加Jenkins用户执行命令groupadd -g 132 jenkins && useradd -d "/var/jenkins_home" -u 122 -g 132 -m -s/bin/bash jenkins之前和我的Jenkinsfile:
<>之前节点("码头工人"){currentBuild。result = "SUCCESS"尝试{"结帐"阶段检出供应链管理"构建和测试"阶段env。WORKSPACE = pwd()docker.image (nalbion/go-web-build:最新的).inside ("-v ${env.WORKSPACE}:/workspace/src/bitbucket.org/nalbion/go-demo "-e GOPATH=/usr/lib/go_appengine/GOPATH:/workspace") {//调试sh 'echo GOPATH: $GOPATH'命令:ls -al/workspace/src/bitbucket.org/nalbion/go-democd/workspace/src/bitbucket.org/nalbion/go-demosh " pwd "go vet ./src/…"goapp test ./…"}阶段"部署到DEV"docker.image("nalbion/go-web-build")。{内Sh "goapp deploy——application go-demo——version v${v} app.yaml"}timeout(time:5, unit:'DAYS') {输入消息:"批准部署?"’,提交者:‘qa’}阶段"部署到PROD"docker.image("nalbion/go-web-build")。{内Sh "goapp deploy——application go-demo——version v${v} app.yaml"}} catch (err) {currentBuild。result = "FAILURE"//发送通知把犯错}}我设法通过在相同的sh
语句中包含cd
来使其工作: