Как мне запустить сборку jenkis за каждые 2 часа через файл jenkins - PullRequest
0 голосов
/ 31 января 2020

Ниже мой файл Дженкинса:

#!groovy


node('EJ2Release') {
    try {
        deleteDir()

        stage('Import') {
            git url: 'https://gitlab.syncfusion.com/essential-studio/ej2-groovy-scripts.git', branch: 'master', credentialsId: env.JENKINS_CREDENTIAL_ID
            shared = load 'src/shared.groovy'
        }

        stage('Checkout') {
            checkout scm
            shared.getProjectDetails()
            shared.gitlabCommitStatus('running')
        }

        if(shared.checkCommitMessage()) {
            stage('Install'){
                shared.install()
            }

            stage('Build') {
                sh 'npm run build'
            }
        
            stage('Publish') {
                shared.publish()
            }
            if(shared.isProtectedBranch()) {
                stage('SampleBrowser') {
                    shared.triggerSampleBrowserBuild()
                } 
            }
        }

        shared.gitlabCommitStatus('success')
        deleteDir()
    }
    catch(Exception e) {
        println(e)        
        shared.gitlabCommitStatus('failed')
        deleteDir()
        error('Build Failed')
    }
}

Ниже мой groovy скрипт - https://github.com/kumaresan-subramani/jenkins-build/blob/master/groovy

Я хочу вызвать мой Дженкинс Построить каждые 2 часа, я пробовал так много вариантов, но мне не повезло. Может кто-нибудь есть какие-либо предложения для решения этой проблемы.

Я пытался, как показано ниже в файле Дженкинса:

#!groovy


node('EJ2Release') {
    try {
        deleteDir()
        triggers {
          pollSCM 'H/10 * * * *'
        }
        stage('Import') {
            git url: 'https://gitlab.syncfusion.com/essential-studio/ej2-groovy-scripts.git', branch: 'master', credentialsId: env.JENKINS_CREDENTIAL_ID
            shared = load 'src/shared.groovy'
        }
 ----------------etc----------
}

Ответы [ 2 ]

2 голосов
/ 31 января 2020

pollSCM -триггер просто запускает вашу сборку, если от вашей SCM есть какой-либо коммит, который нужно построить.

Если вы хотите запускать каждые 2 часа, также если нет фиксации, у вас есть использовать cron -триггер:

triggers {
    cron('0 */2 * * *')
}
1 голос
/ 01 февраля 2020

Здесь две проблемы, первая, как пишет RNoB в своем ответе, вы должны использовать cron вместо pollSCM. Во-вторых, вы путаете декларативный и скриптовый конвейер ( см. Мой ответ здесь для получения дополнительной информации ).

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

properties([
    pipelineTriggers([
        cron('H H/2 * * *')
    ])
])

node('EJ2Release') {
    try {
        deleteDir()
        stage('Import') {
            git url: 'https://gitlab.syncfusion.com/essential-studio/ej2-groovy-scripts.git', branch: 'master', credentialsId: env.JENKINS_CREDENTIAL_ID
            shared = load 'src/shared.groovy'
        }
 ----------------etc----------
}

Обратите внимание, что я поместил шаг свойств вне выделения узла это означает, что шаг выполняется как можно скорее после запуска задания, и снова это будет работать только в сценарии с конвейером.

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