Триггерный конвейер после нажатия на битбакет-сервер - PullRequest
0 голосов
/ 07 мая 2019

Я создаю эту новую работу на основе конвейера на Дженкинса. Я хочу, чтобы мой jenkinsfile был в репозитории Bitbucket: допустим, мой конфигурационный файл находится на bitbucket.org/config.git

Задача - очистить установку проекта bitbucket.org/myProject.git

Как я могу настроить конвейер так, чтобы он запускался, если в bitbucket.org/myProject.git был сделан какой-либо толчок и следуя шагам, определенным в bitbucket.org/config.git?

Я не хочу создавать многоотраслевой конвейер и не хочу, чтобы мой файл jenkins находился в том же хранилище, что и мой проект для компиляции.

Моя текущая конфигурация:

pipeline {
    agent any
    parameters {
        string(defaultValue: '', description: 'URL', name: 'GIT_URL')
        string(defaultValue: '', description: 'Credential', name: 'CREDENTIAL_ID')
    }

    stages {
        stage ('Initialize') {
            steps {
                git branch: 'develop', credentialsId: "${params.CREDENTIAL_ID}", url:                     "${params.GIT_URL}"
            }
        }

        stage ('Build') {
            steps {
                sh 'mvn clean install '
                echo 'build'
        }
    }
}

Ответы [ 2 ]

0 голосов
/ 08 мая 2019

На самом деле, мне удалось заставить его работать. В моем конвейере jenkins я активировал «Build, когда изменение помещено в BitBucket».

    node {
    checkout([$class: 'GitSCM', 
    branches: [[name: 'feature/test-b']], 
    doGenerateSubmoduleConfigurations: false, 
    extensions: [[$class: 'SubmoduleOption', disableSubmodules: false, 
    parentCredentials: false, recursiveSubmodules: true, reference: '', 
    trackingSubmodules: false]], submoduleCfg: [], 
    userRemoteConfigs: [[credentialsId: 'admin', 
    url: 'http://localhost:7990/scm/bout/boutique-a.git']]])
    }

Когда в бутике-a вносятся изменения в ветке «feature / test-b», моя работа запускается, что круто.

Теперь у меня есть другая проблема, как я могу сработать, когда внесены изменения в функция / * Похоже, я не могу получить доступ к env.BRANCH_NAME, когда я не в многоотраслевом конвейере

0 голосов
/ 08 мая 2019

Вы можете использовать общие библиотеки в Jenkins.вам все равно понадобится Jenkinsfile в вашем коде, но он не будет содержать никакой логики.Он будет просто ссылаться на разделяемую библиотеку и передавать любые параметры, такие как путь к репозиторию git.

Для получения дополнительной информации о разделяемых библиотеках, пожалуйста, перейдите по этой ссылке https://jenkins.io/doc/book/pipeline/shared-libraries/.

Для запуска сборки вы можете определитьтриггер в вашем конвейере.Пример:

triggers {
      pollSCM('H/5 * * * *')
} 

или используйте webhooks, если вы не хотите опрашивать.

...