gpt4 book ai didi

jenkins - 这个 Jenkinsfile 中的 pollSCM 触发器指的是什么?

转载 作者:行者123 更新时间:2023-12-04 20:27:13 26 4
gpt4 key购买 nike

考虑使用 Jenkins 2.176.1 进行以下设置:

  • 一个名为 Foobar 的新管道项目
  • Poll SCM作为(仅)构建触发器,使用:H/5 * * * * ...假设这是指在下一步中配置的 SCM
  • Pipeline script from SCM带单片机 Git和一个可用的 Git 存储库 URL
  • 取消勾选 Lightweight checkout因为 JENKINS-42971JENKINS-48431 (我在实际项目中使用构建变量和 Jenkinsfile ;这也可能会影响 pollSCM 的工作方式,所以我在这里包括这一步)
  • 所述存储库包含一个简单的 Jenkinsfile
  • Jenkinsfile看起来大概是这样的:
    #!groovy
    pipeline {
    agent any
    triggers { pollSCM 'H/5 * * * *' }
    stages {
    stage('Source checkout') {
    steps {
    checkout(
    [
    $class: 'GitSCM',
    branches: [],
    browser: [],
    doGenerateSubmoduleConfigurations: false,
    extensions: [],
    submoduleCfg: [],
    userRemoteConfigs: [
    [
    url: 'git://server/project.git'
    ]
    ]
    ]
    )
    stash 'source'
    }
    }
    stage('OS-specific binaries') {
    parallel {
    stage('Linux') {
    agent { label 'gcc && linux' }
    steps {
    unstash 'source'
    echo 'Pretending to do a build here'
    }
    }
    stage('Windows') {
    agent { label 'windows' }
    steps {
    unstash 'source'
    echo 'Pretending to do a build here'
    }
    }
    }
    }
    }
    }

    到目前为止,我的理解是:
  • Jenkinsfile 的更改(不是整个 repo)在任何注册代理上触发管道(或在管道项目中配置)。
  • 所述代理(随机)使用 pollSCMJenkinsfile 中触发触发流水线阶段。
  • 但是pollSCM在哪里?触发轮询(什么 SCM repo )?如果它是一个随机代理,那么它如何合理地检测轮询运行中的变化?
  • 然后这些阶段正在按照分配的方式在代理上执行...

  • 现在我很困惑什么指的是什么。所以在这里我的问题(所有相互关联,这就是为什么我把它放在一个问题中):
  • 管道项目仅针对 Jenkinsfile 轮询 SCM或者有什么变化?在我的情况下,存储库是相同的(对于 Jenkinsfile 和用于构建二进制文件的源文件)。
  • 如果(项目级)轮询在任何更改而不是更改 Jenkinsfile 时触发
  • 是否pollSCMJenkinsfile 中触发不知何故自动引用 checkout步?
  • 然后......会发生什么,我会有多个 checkout不同设置的步骤?
  • 什么决定了哪个存储库(以及其中的哪些内容)被轮询?
  • ... 或者这类似于 checkout scm速记和 pollSCM实际上是指管道项目中配置的SCM,因此我可以缩短checkout()checkout scmsteps ?

  • 不幸的是,用户手册没有回答任何这些问题和 pollSCM在整个手册的一个页面上总共出现了四次。

    最佳答案

    我来看看这个:

    The pipeline project polls the SCM just for the Jenkinsfile or for anychanges? The repository in my case is the same (for Jenkinsfile andsource files to build binaries from).


    管道项目将轮询 repo 以查找任何文件更改,而不仅仅是 Jenkinsfile。源代码库中的 Jenkinsfile 是常见做法。

    If the (project-level) polling triggers at any change rather thanchanges to the Jenkinsfile Does the pollSCM trigger in the Jenkinsfilesomehow automagically refer to the checkout step?


    当看到对 repo 的更改时,将执行您的管道,并按照它们在 Jenkinsfile 中出现的顺序运行这些步骤。

    Then ... what would happen, would I have multiple checkout steps withdiffering settings?


    如果您使用 checkout 步骤定义了多个 repos(使用多个 checkout SCM 调用),那么将轮询主管道项目 repo 是否有任何更改,并且您在管道中定义的 repos 将被 check out ,无论它们是否更改。

    What determines what repository (and what contents inside of that)gets polled? ... or is this akin to the checkout scm shorthand andpollSCM actually refers to the SCM configured in the pipeline projectand so I can shorten the checkout() to checkout scm in the steps?

    pollSCM指管道项目的 repo 。除非项目另有配置(浅克隆、轻量级 check out 等),否则整个 repo 都会被克隆。

    关于jenkins - 这个 Jenkinsfile 中的 pollSCM 触发器指的是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56789174/

    26 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com