5.5. 作业分支覆盖


项目在 scm_branch 字段中指定要从源控制使用的分支、标签或引用。它们由 Type Details 字段中指定的值表示:

强调的项目分支

在创建或编辑作业时,您可以选择 Allow branch override。选中此选项时,项目管理员可以将分支选择委托给使用该项目的作业模板,只需要项目 use_role

5.5.1. 源树复制行为

每个作业运行都有自己的私有数据目录。此目录包含作业运行的给定 scm_branch 的项目源树的副本。作业可以自由地更改项目文件夹,并在仍在运行时使用这些更改。此文件夹是临时的,在作业运行结束时被删除。

如果您检查 Clean 选项,则在自动化控制器的本地副本中删除修改后的文件。这可以通过在与 git 或 Subversion 相关的相应 Ansible 模块中使用 force 参数来完成。

其他资源

有关更多信息,请参阅 Ansible 文档中的 Parameters 部分。

5.5.2. 项目修订行为

在项目更新过程中,默认分支的修订版本(在项目的 Source control branch 字段中指定)会在更新时存储。如果在作业中提供非默认 Source 控制分支 (而不是提交散列或标签),则在作业启动前马上从源控制远程拉取最新的修订版本。此修订版本显示在作业的 Source control revision 字段中,及其项目更新。

因此,非默认分支无法离线作业运行。为确保作业从源控制运行静态版本,请使用标签或提交哈希。项目更新不会保存所有分支,而只有项目默认分支。

Source control branch 字段未验证,因此项目必须更新以确保它有效。如果提供或提示了此字段,则不会验证作业模板的 Playbook 字段,您必须启动作业模板以验证预期的 playbook 是否存在。

5.5.3. Git Refspec

Source control refspec 字段指定更新应该从远程下载的额外引用。示例包括以下内容:

  • refs/:refs/remotes/origin/ :这将获取所有引用,包括远程的远程
  • refs/pull/:refs/remotes/origin/pull/ (GitHub-specific):这将获取所有拉取请求的所有 refs
  • refs/pull/62/head:refs/remotes/origin/pull/62/head :这会获取一个 GitHub 拉取请求的 ref

对于大型项目,在使用第一个或第二个示例时请考虑性能影响。

Source control refspec 参数会影响项目分支的可用性,并可启用对不可用的引用的访问。使用前面的示例从 Source 控制分支提供拉取请求,在没有 Source control refspec 字段的情况下无法实现。

默认情况下,Ansible git 模块获取 refs/heads/。这意味着,如果 Source control refspec 为空,您可以使用项目的分支、标签和提交散列作为 Source control 分支。Source control refspec 字段中指定的值会影响哪些 Source control branch 字段可用作覆盖。项目更新(任何类型的)执行额外的 git fetch 命令来从远程拉取该 refspec。

Example

您可以设置使用第一个或第二个 refspec 示例启用分支覆盖的项目。在提示输入 Source control 分支 的作业模板中使用此选项。然后,客户端可以在创建新拉取请求时启动作业模板,提供分支 pull/N/head,并且作业模板可以根据提供的 GitHub 拉取请求引用运行。

其他资源

有关更多信息,请参阅 Ansible git 模块

Red Hat logoGithubRedditYoutubeTwitter

学习

尝试、购买和销售

社区

关于红帽文档

通过我们的产品和服务,以及可以信赖的内容,帮助红帽用户创新并实现他们的目标。

让开源更具包容性

红帽致力于替换我们的代码、文档和 Web 属性中存在问题的语言。欲了解更多详情,请参阅红帽博客.

關於紅帽

我们提供强化的解决方案,使企业能够更轻松地跨平台和环境(从核心数据中心到网络边缘)工作。

© 2024 Red Hat, Inc.