Jenkins如何投票scm没有踢了一个工作

ffscu2ro  于 2023-04-29  发布在  Jenkins
关注(0)|答案(1)|浏览(173)

这是第一次使用Jenkins DSL拉取作业。我所有的作业都是通过CasC加载的。我想并希望有一个设置,每15分钟轮询一次scm,以保持gitlab repo中的作业最新。我的十几个作业中的大部分都是手动触发的,大约有三个是预定运行的,比如说每天上午10点。
但我所经历的是,每次我提交到开发分支,所有的工作都被沉没和执行。
在我的CasC Jenkins文件中:

jobs:
  - script: >
      folder('App/scheduled')
  - file: /var/jenkins_home/pipelines/pull_app_server_deploy_m23_dev_devops_daily

拉取作业pull_app_server_deploy_m23_dev_devops_daily

pipelineJob("App/scheduled/M23 dev_devops daily deploy") {
  disabled(false)
  definition {
    cpsScm {
      scm {
        git {
          remote {
            url("https://gitlab.domain.com/Common/tools/jenkins.git")
            credentials("*******************************")
          }
          branch('develop')
        }
      }
      scriptPath("jobs/app_server_deploy_m23_dev_devops_daily")
    }
  }
  triggers {
    scm('H/15 * * * *')
  }
}

然后在我的实际管道工作中,我有这样的东西:

env.agentName = ""

pipeline {
    agent any

    triggers {
        cron('0 15 * * 1-5')
    }

    stages {

        stage ('Decide which agent') {
            steps {
                script {
                    env.agentName = "co-dev-deploy01"
                    echo "Will execute on ${env.agentName}"
                }
            }
        }

        stage ('App Deploy') {
            options {
                timeout(time: 3600, unit: 'SECONDS')
            }

            steps {
                node ( agentName as String ) {
                    dir("/opt/home/p4/tools/ansible/ML/2023/deploy_conf") {
                        ansiblePlaybook([
                            credentialsId: 'co-ssh',
                            inventory: "inventory/dev_devops",
                            playbook: 'deploy_app_server.yml',
                            vaultCredentialsId: "vault_dev_devops_passwd",
                            colorized   : true,
                            extraVars   : [
                                deploy_env: "dev_devops",
                                cl_to_deploy: "latest",
                                build_type: "debug-opt",
                                deploy_cluster: "all",
                                restart_wait_time: "1",
                                restart_mysql_schema_clear: "None",
                                individual_schemas: "",
                                mysql_soft_fail_enable: false,
                                redis_restart: true,
                                redis_hard_stop: true,
                                clean_build: false,
                                branch: "DL"
                            ]
                        ])
                    }
                }

            }

        }

    }

}

我错过什么了吗?我是否还缺少另一个参数来告诉它在同步后不要执行?在GUI中,当查看作业配置时,我确实看到上面的代码转换为:
构建触发器:周期性地构建(0 1 - 5 * * 1-5)〈--这是所期望的。轮询SCM(H/15****)〈--我希望轮询但不触发。
我只设置了两个分支,分别是developmain,没有其他分支。也许我需要重组我的回购?
非常感谢您的帮助。

30byixjq

30byixjq1#

解决方案是删除此:

triggers {
    scm('H/15 * * * *')
  }

它是多余的,并导致文件执行。我做了一个假设,上面的那块将控制SCM轮询,但这是分开的。因此,删除该部分,因为拉作业将自行轮询。

相关问题