Rundeck 项目 SCM exportUuidBehavior“原始”覆盖我的工作 UUID
Posted
技术标签:
【中文标题】Rundeck 项目 SCM exportUuidBehavior“原始”覆盖我的工作 UUID【英文标题】:Rundeck Project SCM exportUuidBehavior "original" overwrites my job UUID 【发布时间】:2021-12-05 12:30:15 【问题描述】:我在 Rundeck 中配置 SCM UUID 导入和导出行为时遇到问题。我想使用导入行为“存档”和导出行为“原始”。阅读 Rundeck 文档后,我期望这些行为不应该修改我的 git 存储库中作业的 UUID。但是,当我导出作业时,UUID 会在我的 git 存储库中被覆盖。
我找到了以下有关“归档”行为的文档:“Git SCM 插件:从存储库导入作业并“归档”原始 UUID 的能力。允许在同一个 Rundeck 服务器内的多个“非生产”项目之间共享一个 repo,并且仍然为生产项目维护静态 UUID。” https://docs.rundeck.com/docs/history/2_x/version-2.6.10.html
这准确地描述了我想要的,所以我想它一定是可能的,但是它不适合我。
我使用的是 Rundeck 3.3.10 版。
这是我的导入插件的配置:
"url":git@github.com:***/***.git,
"fetchAutomatically":"true",
"pullAutomatically":"true",
"dir":"/home/niek/rundeck/projects/UUID_test_2/scm",
"filePattern":".*\\.yaml",
"importUuidBehavior":"archive",
"useFilePattern":"true",
"strictHostKeyChecking":"no",
"sshPrivateKeyPath":"keys/priv_key",
"format":"yaml",
"branch":"master",
"gitPasswordPath":"",
"pathTemplate":"$job.group$job.name.$config.format"
这是我的导出插件的配置:
"url":git@github.com:***/***.git,
"fetchAutomatically":"true",
"pullAutomatically":"false",
"_createBranch":"",
"dir":"/home/niek/rundeck/projects/UUID_test_2/scm",
"committerEmail":"$user.email",
"baseBranch":"master",
"committerName":"$user.fullName",
"strictHostKeyChecking":"no",
"sshPrivateKeyPath":"keys/priv_key",
"branch":"master",
"format":"yaml",
"exportUuidBehavior":"original",
"gitPasswordPath":"",
"pathTemplate":"$job.group$job.name.$config.format"
如果有人可以帮助我,我将不胜感激。
编辑:
为了阐明我的最终目标,请使用我的 git 存储库中的以下作业定义:
- defaultTab: nodes
description: ''
executionEnabled: true
id: test-uuid-job
loglevel: INFO
name: test_uuid
nodeFilterEditable: false
plugins:
ExecutionLifecycle: null
scheduleEnabled: true
sequence:
commands:
- exec: uname -a
keepgoing: false
strategy: node-first
uuid: test-uuid-job
此作业必须在不同的项目中可用,其中每个项目都有同一存储库的不同分支作为源。生产分支中作业的 UUID 不应更改,应保持“test-uuid-job”。但是,当我使用“归档”和“原始”行为从开发分支导入然后导出项目中的作业时,导出到 git 的 UUID 仍然是开发项目中导入作业的新分配的 UUID。虽然我希望它保持“test-uuid-job”。否则,当开发分支合并到生产分支时,UUID 也会在那里发生变化。
【问题讨论】:
【参考方案1】:转到项目设置>设置SCM并禁用SCM导出,然后单击“配置”,将“导出UUID行为”设置为“保留”,向下滚动并单击“设置”按钮(配置已保存并再次启用 SCM)。
任何更改都会保留导出作业的 UUID。
【讨论】:
感谢您的回复 MegaDrive68k。但是将导出 UUID 行为设置为“保留”并不能解决我的问题。在我的 git 存储库中设置的 UUID 仍然被我的 rundeck 开发项目中新创建的 UUID 覆盖。 (我在帖子中进行了编辑以阐明我想要实现的目标。)【参考方案2】:我自己找到了答案。
以将导入 UUID 行为设置为“归档”并将导出 UUID 行为设置为“原始”的 Rundeck 项目为例。导入项目中尚不存在的作业后,您首先需要执行以下步骤以使正确的行为生效:
在“作业”页面上,使用新作业的“操作”按钮再次导入作业 编辑作业并保存它而不做任何更改。现在该作业不再有导出操作。如果您现在对作业进行编辑和更改,则将提供一个新的导出操作,该操作不会更改在 Git 存储库中设置的 UUID。
是的,这两个步骤似乎不应该做任何事情,但它确实有效。
【讨论】:
以上是关于Rundeck 项目 SCM exportUuidBehavior“原始”覆盖我的工作 UUID的主要内容,如果未能解决你的问题,请参考以下文章
Rundeck 项目和作业在 2 个实例之间同步,后端为 mysql 集群
Rundeck:http 错误 500:以管理员身份登录时