拉取更改

定时、手动和 API 拉取,以及本地更改

  1. 拉取更改
    1. 从流水线或 webhook 拉取
    2. 本地更改

拉取更改

仓库可以按计划拉取、在启动时拉取、从页面拉取,或者通过 API 拉取;没有 webhook 端点。

触发方式 方法
计划 启用定时拉取并设置拉取计划,例如 0 * * * * 表示每小时一次
启动 应用启动时拉取会克隆仓库,如果已经克隆则拉取它
设置页面 行菜单中的拉取,或列表上方的全部拉取
设计器 加载(仓库),它会拉取表单仓库并重新加载设计器;获取设计器锁时也会先拉取所有表单仓库
API POST /api/v2/repository/<name>/pull ( showSettings 或 showConnectionsSettings )或 POST /api/v2/forms-repos/pull/<name> (见下文)

从流水线或 webhook 拉取

AnsibleForms 没有专门的 webhook 接收端,但 CI 作业或 git 服务器的 webhook 可以调用拉取端点。

curl -X POST -H "Authorization: Bearer $TOKEN" https://af.example.com/api/v2/repository/forms/pull

按照 API 令牌中的说明创建令牌,用户的角色需要拥有 showSettings 或 showConnectionsSettings 。 /api/v2/forms-repos/pull/<name> 则需要 showDesigner 和 allowFormDesign ,并且设计器 已开启( SHOW_DESIGNER )。 GET /api/v2/repository/<name> 会返回 head 、 status 和 output ,因此流水线可以在拉取后检查实例运行的是哪个提交。

本地更改

拉取从不会覆盖尚未推送的工作,因此定时拉取会在运行前检查工作树。

当工作树中有未提交的更改或未推送的提交时,以及当有设计器持有设计器锁时,定时拉取会被跳过。 对含有冲突更改的工作树进行手动拉取会失败,并提示:

Repository '<name>' has local changes that block the pull. Use 'Save (repository)' to push them first, or discard them.

请推送这些更改,或者用行菜单中的重置丢弃它们,这会删除工作树并重新克隆。