- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我最近设法将几个手动创建的作业转换为 DSL 脚本(内联到临时的“种子”作业中),并且对它的简单程度感到惊喜。现在我想摆脱多个种子工作并尝试更干净地构建事物。
为此,我创建了一个新的 jenkins-ci
repo 并将所有 Groovy DSL 脚本提交给它。然后我创建了一个 job-generator
来自 jenkins-ci
的 Jenkins 工作repo 并且有一个 Process Job DSLs 步骤。这一步勾选了 Look on Filesystem 框,DSL Scripts 字段设置为 jobs/*.groovy
.随着全局推送通知已经到位,这或多或少按预期工作:如果我对 jenkins-ci
进行更改 repo ,job-generator
作业自动运行并重新生成所有作业——太棒了!
我不喜欢这个解决方案的地方在于它的引用局部性很差:工作的 DSL 脚本与代码位于一个完全独立的存储库中。我真正想要的是将作业 DSL 脚本保存在每个单独的代码存储库中,在 jenkins
中。子文件夹,并有一个单一的种子作业来处理它们。这样,对 CI 设置的更改可以在代码旁边进行代码审查。对我来说,这感觉就像一个理想的设置。
不幸的是,我对如何实现这一点没有明确的想法。如果我能找到一种方法让种子作业监视多个 repos,这样对其中任何一个的提交都会触发它,也许我可以在 Process Job DSLs 步骤之前注入(inject)另一个构建步骤并(以某种方式)编写我的方式胜利,但是...我什至不确定如何达到这一点。 (我当然不想在生成器作业中对每个 repo 进行完整克隆,只是为了引入 DSL 脚本!)
我怀疑我不是第一个希望他们可以将 Job DSL 脚本与代码放在一起的人,尽管也许我高估了好处。非常感谢有关此主题的任何建议-谢谢!
最佳答案
不幸的是,没有直接的方法可以解决这个问题。已经打开了几个功能请求( JENKINS-33275 , JENKINS-37220 ),但是 AFAIK 没有人在处理其中任何一个。
作为一种解决方法,您可以使用 Pipeline Multibranch Plugin并为您的每个存储库创建一个多分支项目。然后您必须添加一个简单的 Jenkinsfile
到每个 repo/branch 并使用 Jenkinsfile
执行您的 Job DSL 脚本。见 Use Job DSL in Pipeline scripts详情。这需要最少的编码,但我认为必须克隆每个 repo 才能工作,因为文件系统上必须有 Job DSL 文件。
您可以使用 Job DSL 创建多分支作业,请参阅 multibranchPipelineJob在 API 查看器中。这将是您的“根”种子工作。
如果您的存储库托管在 GitHub 上,您还可以查看 GitHub Organization Folder Plugin .使用该插件,您只能为每个组织创建一个作业,而不是多个多分支作业。
关于jenkins - 单个种子作业可以处理来自多个存储库的 DSL 吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41602602/
我希望使用 API 根据处理 Q 的大小更改运行的 Web 作业实例的数量,我知道我可以在门户中设置规则,但最短聚合时间为 60 分钟,并且我如果我们突然遇到大量工作,不希望系统在扩展之前等待 60
假设我有一个 spark 应用程序并且有两个操作导致两个 spark 作业。 //spark Application //Spark Job1 .... erro
大家好! 作为我对Java的自学的一部分,我正在尝试完成可用的Java初学者分配之一here(非常古老的东西-2001) 问题是我不知道如何应对这个挑战:(我将不胜感激任何建议,因为该解决方案不再可用
我一直在使用 HADOOP 1.2.1 服务器,并在那里执行许多 pig 作业。最近,我考虑将我的 Hadoop 服务器更改为 HADOOP 2.2.0。所以我在 HADOOP 2.2.0 中尝试了一
好的,我修复了静态错误。现在我只是想找出为什么每个对象都得到相同的条目(即相同的名字、年龄、体重等)。这是代码: package classlab3b; import classlab3B.BodyM
我的家庭作业中的一个问题需要一些帮助,我已经尝试了大约一个小时,但无法运行。 列出购买商品数量超过每位顾客平均商品数量的顾客 表格如下: Customer(Cnum, CustomerName, Ad
Kubernetes Jobs重复创建 Pod,直到指定数量的容器成功终止。作业通常与更高级别的CronJob机制一起使用,该机制会按循环计划自动启动新作业。 定期使用 Jobs 和 CronJobs
我有以下工作类(我已经删除了实际的工作代码): @On("0 0 1 * * ?") public class DailyJob extends Job { @Override pub
假设您将 cron 作业配置为每分钟运行一次以做某事。如果实际任务运行时间超过一分钟会发生什么? cron 会创建另一个作业实例/线程吗?还是 cron 会等待并确保上一次运行完成? 谢谢! 最佳答案
我们正在使用 TeamCity 7 并想知道是否可以仅在前一个步骤失败时才运行步骤?我们在构建步骤配置中的选项让您可以选择仅在所有步骤都成功时执行,即使步骤失败,或者始终运行它。 有没有办法仅在前一个
我在 oracle 中编写作业以执行存储过程,但是当时机成熟时,它不会无缘无故地发生任何事情。 是否有某种日志可以让我查看是否发生了错误或其他事情? 我使用 dbms_job 包来创建作业 恩克斯。
我正在用 Java 创建一个用于文件共享的 p2p 应用程序。每个对等节点都将在我的机器上的不同端口上运行并监听请求。但我遇到的问题是,当创建 PeerNode 实例时,我的代码会进入无限循环。以下是
我正在尝试创建一个队列,但当我运行 php artisanqueue:work 时它不起作用,我在终端中得到的只是 [2017-11-30 19:56:27] Processing: App\Jobs
我正在使用PHP库phpseclib0.2.2将SSH自动化到我的一台服务器中。我将其设置为每5分钟运行一次的cron任务。 在设置完它并确保其运行等情况下注销后,我看到了以下内容: $ logout
有没有办法获取多分支管道作业扫描收集到的所有分支的名称? 我想设置一个依赖于现有构建作业的夜间构建,因此需要检查多分支作业是否包含某些特定分支。另一种方法是检查现有作业。 最佳答案 我通过使用 Jen
我在编程方面还很陌生,我不太确定如何完成分配给我的学校作业。 Write a function void print_min(unsigned char a, short b,int c),which
我的作业有问题,需要帮助! 问题 1: 完成下面的 Java 方法,以便 raiseToPower(x,n) 将数字 x 提高到整数 n 次方(即计算值 xn )。请记住 x-n = 1/xn,x0
我正在做一项家庭作业,该作业有四个文本字段和一个文本区域,以及一个将文本字段和文本区域保存到文本文件的按钮,每行一个元素。然后,应出现一个对话框通知用户文件已保存。当对话框关闭时,它应该清空文本字段和
我需要运行一个名为ArrayHolder的java程序,它将运行两个线程。 ArrayHolder 将有一个 Array。 ThreadSeven 会用 7 覆盖该 Array 的每个元素,并用 1
在我的程序中,应该读取学生姓名、ID 号和 GPA,将其分配给指定的学生,然后打印出来。一切都编译正常,但出现错误 Error: Could not find or load main class L
我是一名优秀的程序员,十分优秀!