当前位置: 首页 > 面试题库 >

多个项目共享一个jenkinsfile

晏经武
2023-03-14
问题内容

我有多个具有相似构建步骤的项目,并且我正在研究在这些项目中重用Jenkinsfile管道。我很难找到有关如何实现这样的标准(我认为)设置的文档。

这是我的要求:

1)Jenkinsfile存储在回购中,在多个项目之间共享

2)每个项目都有其自己的参数:项目在仓库中的位置。

3)至少从用户角度来看,每个项目在Jenkins中都应独立,这意味着,例如,执行和日志可在Jenkins中的每个项目条目中找到

我该如何实现?基于管道参数和jenkinsGUI参数如何协同工作?我知道我可以使用自由式作业,但是使用此选项不能直接使用日志。还建议我在每个独立的作业中使用Jenkinsfile,但我认为这听起来像是不必要的配置。

我最初考虑过复制管道作业(意思是复制作业,包括参数定义,存储库和凭证以及jenkinfile位置定义),我的想法是每次运行作业时,管道都会擦除参数默认值

例如projectSvnPath,在Jenkinsfile中定义默认值为NO
的属性将删除我projectSvnPath在Jenkins中的工作参数值。因此,我无法使用此选项。

properties([
  parameters([
    string(name: 'projectSvnPath',      description: '*', )
   ])
])

问题答案:

Jenkins具有共享库的概念,以允许多个构建在不复制代码的情况下共享通用管道指令。有关详细信息,请参见https://jenkins.io/doc/book/pipeline/shared-
libraries/

在这一点上,尚不清楚的是如何在每次重新加载Jenkinsfile时保留参数覆盖。似乎是一个奇怪的设计选择。

更新07/13/17我的所有参数都在管道中定义,以避免出现参数问题。我更喜欢在代码存储库中定义参数,但是可以预见这种情况不切实际的情况。

更新04/18我放弃使用共享库-
原因是无法测试。它不会在开发环境(例如您的PC)上运行,因此基本上任何开发都需要推送到您的存储库中才能执行任何测试。对于任何类型的软件开发,这都不是可持续的方法。目前,我的jenkinsfiles已复制,因为我没有找到使用jenkins的解决方法。



 类似资料:
  • 标题中的问题。这里提出了一个类似的问题,当时唯一的解决办法是将项目发布到本地Maven存储库中。 这个问题在Android Studio 0.5中修复了吗(正如一些人所声称的)?在其发行说明中有一条声明说“支持模块内容根目录之外的源文件夹”。这是否意味着我们最终可以从项目文件夹外部导入库? 我试过文件- 编辑2:查看最新解决方案的接受答案(截至0.8。) 编辑: 我的项目目录结构只有一个模块,如下

  • 我有一个python项目,有很多其他项目。py文件,它从它的子文件夹和txt文件导入,以及我想分享这个项目,但只有作为一个可执行文件,这样没有人可以看到代码或文本文件等。。。如果没有,有什么方法可以这样做吗?我怎样才能在不让任何人检查项目代码的情况下共享项目。py文件

  • 问题内容: 我有两个共享大量代码的JSF项目-Java类,xhtml文件,标记库,css和javascript文件等。我的开发环境/平台主要包括Eclipse,Ant,Perforce和Tomcat。 有没有人找到一种创建和组织共享代码的方法,以便公用代码可以保留在一组文件夹中? Eclipse使添加Java源的外部文件夹变得容易,但是在其他文件类型上却不足。我将不胜感激。 问题答案: 在Ecli

  • 我们有两个网站有多种产品。我们决定在这些网站之间只共享一个目录,其中包含所有产品,没有任何重复。 到目前为止,我可以在两个网站上看到所有的产品,但是我们有一些产品应该只在一个网站上显示。 有什么解决办法吗?我们使用的是Hybris 5.2 到目前为止,我们的想法是: 使用类别组织(站点A的类别,站点B的类别,共享产品的类别 在我们的情况下,哪种解决方案是最好的,还有其他解决方案吗?

  • 我有一个运行在400个TaskManager上的flink应用程序。在1小时的窗口时间内,我会更频繁地获得相同的密钥,比如说,在1500个唯一密钥中,有50个密钥会更频繁地出现。这使得很少有任务管理者单独处理的数量比其他人多。如果390个TaskManager每分钟处理50MB,那么其他10个TaskManager每分钟处理10GB。这使得系统速度非常慢。如果负载很高,我们可以与多个TaskMan