Трубопровод Дженкинса с Git-опросом не работает - PullRequest
3 голосов
/ 14 марта 2019

У меня есть задание Jenkins с параметром ветвления, настроенным на опрос SCM каждые 5 минут, и запускаю сценарий конвейера из SCM:

General and build triggers configuration

Pipeline configuration

Первое, что делает скрипт, это удаляет предыдущее рабочее пространство и получает свежую копию исходного кода:

#!/usr/bin/env groovy
node {
    try {
        stage('Get Source') {
            // Clear the workspace
            deleteDir()

            // Get the source code
            checkout scm
        }

        // Stages for building and running unit tests...
    }
}

Согласно опросу Gitжурнал, он проверяет хранилище каждые 5 минут, но не находит никаких изменений:

Started on Mar 13, 2019 4:29:34 PM
Using strategy: Default
[poll] Last Built Revision: Revision 47251333f2d6c740275f24dd667255e66f7b5665 (refs/remotes/origin/master)
using credential **********
 > git --version # timeout=10
using GIT_SSH to set credentials Jenkins SSH Authentication Key
 > git ls-remote -h git@bitbucket.org:myuser/myrepo.git # timeout=10
Found 1 remote heads on git@bitbucket.org:myuser/myrepo.git
Using strategy: Default
[poll] Last Built Revision: Revision 47251333f2d6c740275f24dd667255e66f7b5665 (refs/remotes/origin/master)
using credential **********
 > git --version # timeout=10
using GIT_SSH to set credentials Jenkins SSH Authentication Key
 > git ls-remote -h git@bitbucket.org:myuser/myrepo.git # timeout=10
Found 1 remote heads on git@bitbucket.org:myuser/myrepo.git
Done. Took 1.8 sec
No changes

Однако после 47251333f2d6c740275f24dd667255e66f7b5665 есть несколько дополнительных коммитов, которые были переданы в удаленную главную ветвь.

Я прочитал здесь , что задание необходимо запустить вручную один раз, прежде чем начнет работать опрос SCM, но я запускал его вручную несколько раз.Что я делаю не так?

Ответы [ 2 ]

2 голосов
/ 14 марта 2019

Кажется, я понял проблему.Поскольку спецификатор ветви в моей конфигурации сценария конвейера */${BRANCH}, я должен был указать это на этапе проверки:

#!/usr/bin/env groovy
node {
    try {
        def repo = 'dice-seeker-android'
        def branch = params.Branch
        def credentialsID = params.CredentialsID

        stage('Get Source') {
            // Clear the workspace
            deleteDir()

            // Get the source code
            checkout([
                $class: 'GitSCM',
                branches: [[
                    name: '*/' + branch
                ]],
                extensions: [[
                    $class: 'RelativeTargetDirectory',
                    relativeTargetDir: repo
                ]],
                userRemoteConfigs: [[
                    credentialsId: credentialsID,
                    url: 'git@bitbucket.org:myuser/' + repo + '.git'
                ]]
            ])
        }

        // Stages for building and running unit tests...
    }
}

Это означает, что мне также пришлось включить параметр credentials, который использует мой ключ SSH.

Наконец мне пришлось один раз запустить задание вручную.Теперь кажется, что он собирает изменения.

Если у кого-то есть лучшее решение, которое требует меньше кода, мне все равно было бы интересно узнать об этом.

0 голосов
/ 14 марта 2019

первый шаг в вашем скрипте - удалить рабочее пространство и получить более новое (со всеми новыми коммитами), так что, я думаю, оно уже обновлено.вот почему он не обнаруживает ваши коммиты.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...