Создание приложения Go с каталогом vendor в Jenkins с помощью Docker
Я пытаюсь настроить конвейер Jenkins для создания и развертывания моего первого проекта Go с использованием Jenkinsfile
а также docker.image().inside
, Я не могу понять, как получить, чтобы забрать зависимости в vendor/
каталог.
Когда я запускаю сборку, я получаю кучу ошибок:
+ тест goapp./... src/dao/demo_dao.go:8:2: не может найти пакет "github.com/dgrijalva/jwt-go" ни в одном из: /usr/lib/go_appengine/goroot/src/github.com/dgrijalva/jwt-go (из $GOROOT) /usr/lib/go_appengine/gopath/src/github.com/dgrijalva/jwt-go (из $ GOPATH) /workspace/src/github.com/dgrijalva/jwt-go
... почему он не собирает каталог Vendor?
Когда я добавляю некоторые журналы, кажется, что после запуска sh "cd /workspace/src/bitbucket.org/nalbion/go-demo"
следующий sh
команда все еще в оригинале ${WORKSPACE}
каталог. Мне действительно нравится идея файла Дженкинса, но я не могу найти достойную документацию для него.
(Изменить - здесь есть достойная документация, но dir("/workspace/src/bitbucket.org/nalbion/go-demo") {}
не похоже на работу внутри docker.image().inside)
Мой файл Docker напоминает:
ОТ Голанга:1.6.2 # Google 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:/ бен ENV GOPATH /usr/lib/go_appengine/gopath # Добавить пользователя Jenkins 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") {/ / Отладка 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 ./..." } этап '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') {входное сообщение:'Approve deploy?', 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" // отправить уведомления throw err } }
1 ответ
Мне удалось заставить его работать, включая cd
В то же самое sh
заявление:
docker.image ('nalbion / ая-веб-сборка: последние') .inside("-v ${env.WORKSPACE}:/workspace/src/bitbucket.org/nalbion/go-demo " + "-e GOPATH=/usr/lib/go_appengine/gopath:/workspace") { ш "" " cd /workspace/src/bitbucket.org/nalbion/go-demo пойти ветеринар. / SRC /... тест goapp./... """ }