我已经使用Bitbucket插件将Jenkins与Bitbucket集成在一起。根据插件的Wiki,如果在作业的SCM中设置了存储库,则将触发给定的作业。如您所知,如果在Jenkins工作中设置SCM,则会在预构建阶段将其克隆。

到目前为止,一切都很好。但是,我要设置的工作的主要目的与存储库的内容无关;相反,我只希望作业处理Bitbucket发送的有效负载。可以说,克隆存储库在存储方面并不是什么大问题,尽管您确实不需要它。我不这么认为,增加不必要的步骤,浪费时间和资源不是一个好习惯。

所以,问题是:有谁知道如何在詹金斯工作中设置SCM,但却阻止了它克隆存储库?

评论

听起来您正在尝试将Jenkins用作微服务,这超出了Jenkins的范围:)。如果您能正常工作,请回发,因为它很有趣。

我没有将Jenkins用作微服务。为什么这么说实际上,所有这些都可以解决:我正在使用许多存储库中常见的管道作业。 Jenkinsfile在另一个存储库中。因此,我无法使用Bitbucket插件直接触发管道,因为它只是不会触发它,所以我决定为每个回购创建一个“代理作业”,并将信息作为下游作业发送到管道。在这种“代理作业”中,我不需要克隆存储库,但它必须位于SCM中。

很难理解,您写的是关于不可能完成的事情,而不是实际要实现的事情,也许您可​​以添加更多有关您实际想要实现的内容以及代理工作如何适应其中的详细信息?

我猜你在说我上面的评论。这只是第一个评论的答案。请参考主要问题,没有其他要补充的内容。我想要您实现的目标非常明确:“防止Jenkins在构建过程中克隆存储库”。

@HéctorValverdePareja当然可以,但是您的措辞似乎在A /提供足够的细节之间犹豫不决,以便每个人都可以检查您是否处于XY问题情况下和B /只是专注于要实现的精确目标。我认为(观点)您可以通过足够详细地描述您的原始问题和您尝试实现的解决方案来消除这种犹豫。但是既然有人写了答案,这可能就不再那么重要了。

#1 楼

当然是。我一直都这样做。您可以为管道指定配置选项,其中一个是skipDefaultCheckout,这将导致管道跳过默认的“声明性:签出SCM”阶段。 Jenkinsfile显示如何使用它:

pipeline {
  agent { label 'docker' }
  options {
    skipDefaultCheckout true
  }
  stages {
    stage('commit_stage') {
      steps {
        echo 'sweet stuff here'
      }
    }
  }
}


评论


你怎么样在一个阶段中手动克隆存储库?

–Oz123
17年10月10日在5:11

您可以运行checkout scm来手动克隆所需的位置。请参阅devops.stackexchange.com/a/1916/2450。

– Burnettk
17年9月11日在2:29

#2 楼

如果您不使用声明式管道,则可以通过以下方法避免从SCM中检出:

node {
        skipDefaultCheckout()
        //...
}


评论


您能否添加文档链接并解释有关skipDefaultCheckout()的更多信息?

– 030
17-10-6在11:36

与现有答案相比,我看不到任何附加值,这只是“尝试一下”,没有任何解释,也不是一个好的答案。

–滕西拜
17-10-6在12:05

此答案可以很好地补充已接受的答案-并非每个人都将使用声明性Pipeline插件,因此,此方法适用于使用过程性插件的人。

– RichVel
17年11月23日在13:53

#3 楼

我认为您想要实现的是在Jenkins作业中处理Webhook负载。

我坚信这个stackoverflow答案可以为您提供帮助。

评论


请在链接的答案中附上相关的报价...

– Pierre.Vriens♦
17年4月28日在21:43

欢迎来到DevOps!尽管从理论上讲这可以回答问题,但最好在此处包括答案的基本部分,并提供链接以供参考。

–Richard Slater
17年4月28日在22:22

@RichardSlater我不确定DevOps上的政策,但其他站点的网络内链接除外。

–小鸡
17年4月29日在0:06

@chicks甚至StackOverflow链接也会受到链接腐烂的影响,通过总结问题,它可以清楚地表明答案者认为该链接已回答问题的其他原因。

–Richard Slater
17年4月29日在0:10