Создание приложения 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./...
      """
}
Другие вопросы по тегам