community.general.gitlab_project 模块 – 创建/更新/删除 GitLab 项目

注意

此模块是 community.general 集合 (版本 10.1.0) 的一部分。

如果您使用的是 ansible 包,则可能已安装此集合。它不包含在 ansible-core 中。要检查它是否已安装,请运行 ansible-galaxy collection list

要安装它,请使用: ansible-galaxy collection install community.general。您需要其他要求才能使用此模块,有关详细信息,请参阅 要求

要在 playbook 中使用它,请指定: community.general.gitlab_project

概要

  • 当 GitLab 中不存在项目时,将创建该项目。

  • 当项目存在且 state=absent 时,将删除该项目。

  • 当对项目进行更改时,将更新该项目。

要求

在执行此模块的主机上需要以下要求。

参数

参数

注释

allow_merge_on_skipped_pipeline

布尔值

在 community.general 3.4.0 中添加

允许在存在跳过的流水线时合并。

选项

  • false

  • true

api_job_token

字符串

在 community.general 4.2.0 中添加

用于登录的 GitLab CI 作业令牌。

api_oauth_token

字符串

在 community.general 4.2.0 中添加

用于登录的 GitLab OAuth 令牌。

api_password

字符串

用于针对 API 进行身份验证的密码。

api_token

字符串

具有 API 权限的 GitLab 访问令牌。

api_url

字符串

API 的可解析端点。

api_username

字符串

用于针对 API 进行身份验证的用户名。

avatar_path

路径

在 community.general 4.2.0 中添加

配置头像的绝对路径图像。文件大小不应超过 200 kb。

此选项仅在创建时使用,不用于更新。

builds_access_level

字符串

在 community.general 6.2.0 中添加

private 表示存储库 CI/CD 仅允许项目成员使用。

disabled 表示存储库 CI/CD 已禁用。

enabled 表示存储库 CI/CD 已启用。

选项

  • "private"

  • "disabled"

  • "enabled"

ca_path

字符串

在 community.general 8.1.0 中添加

用于验证 GitLab 服务器证书的 CA 证书包。

ci_config_path

字符串

在 community.general 3.7.0 中添加

此项目的 CI 配置文件的自定义路径。

container_expiration_policy

字典

在 community.general 9.3.0 中添加

其容器注册表的项目清理策略。

cadence

字符串

应多久运行一次清理。

选项

  • "1d"

  • "7d"

  • "14d"

  • "1month"

  • "3month"

enabled

布尔值

启用清理策略。

选项

  • false

  • true

keep_n

整数

每个图像名称保留的标记数量。

0 清除字段。

选项

  • 0

  • 1

  • 5

  • 10

  • 25

  • 50

  • 100

name_regex

字符串

销毁与该正则表达式匹配的标记。

name_regex_keep

字符串

保留与该正则表达式匹配的标记。

older_than

字符串

销毁早于此时间的标记。

0d 清除字段。

选项

  • "0d"

  • "7d"

  • "14d"

  • "30d"

  • "90d"

container_registry_access_level

字符串

在 community.general 6.2.0 中添加

private 表示容器注册表仅允许项目成员使用。

disabled 表示容器注册表已禁用。

enabled 表示容器注册表已启用。

选项

  • "private"

  • "disabled"

  • "enabled"

default_branch

字符串

在 community.general 4.2.0 中添加

此项目的默认分支名称。

创建项目时,此选项需要 initialize_with_readme=true

更新项目时,分支必须存在。

自 community.general 8.0.0 版本起支持项目默认分支更新。

描述

字符串

项目的描述。

environments_access_level

字符串

在 community.general 6.4.0 中添加

private 表示只有项目成员才能部署到环境。

disabled 表示禁用部署到环境。

enabled 表示启用部署到环境。

选项

  • "private"

  • "disabled"

  • "enabled"

feature_flags_access_level

字符串

在 community.general 6.4.0 中添加

private 表示只有项目成员才能进行特性发布。

disabled 表示禁用特性发布。

enabled 表示启用特性发布。

选项

  • "private"

  • "disabled"

  • "enabled"

forking_access_level

字符串

在 community.general 6.2.0 中添加

private 表示只有项目成员才能创建仓库分支。

disabled 表示禁用创建仓库分支。

enabled 表示启用创建仓库分支。

选项

  • "private"

  • "disabled"

  • "enabled"

字符串

此项目所属组的 ID 或完整路径。

import_url

字符串

将导入到 GitLab 的 Git 仓库。

GitLab 服务器需要对此 Git 仓库具有读取权限。

infrastructure_access_level

字符串

在 community.general 6.4.0 中添加

private 表示只有项目成员才能配置基础设施。

disabled 表示禁用配置基础设施。

enabled 表示启用配置基础设施。

选项

  • "private"

  • "disabled"

  • "enabled"

initialize_with_readme

布尔值

在 community.general 4.0.0 中添加

将使用默认的 README.md 初始化项目。

仅在创建项目时使用,否则忽略。

选项

  • false ← (默认)

  • true

issues_access_level

字符串

在 community.general 9.4.0 中添加

private 表示只有项目成员才能访问问题标签。

disabled 表示禁用访问问题标签。

enabled 表示启用访问问题标签。

issues_access_levelissues_enabled 是互斥的。

选项

  • "private"

  • "disabled"

  • "enabled"

issues_enabled

布尔值

是否要创建问题。

issues_access_levelissues_enabled 是互斥的。

选项

  • false

  • true ← (默认)

lfs_enabled

布尔值

在 community.general 2.0.0 中添加

启用 Git 大型文件系统来管理大型文件,例如音频、视频和图形文件。

选项

  • false ← (默认)

  • true

merge_method

字符串

在 community.general 1.0.0 中添加

对合并施加什么要求。

可能的值为 mergerebase_merge(带有半线性历史记录的合并提交)、ff(仅快速转发合并)。

选项

  • "ff"

  • "merge" ← (默认)

  • "rebase_merge"

merge_requests_enabled

布尔值

是否可以进行合并请求。

选项

  • false

  • true ← (默认)

model_registry_access_level

字符串

在 community.general 9.3.0 中添加

private 表示只有项目成员才能访问模型注册表标签。

disabled 表示禁用访问模型注册表标签。

enabled 表示启用访问模型注册表标签。

选项

  • "private"

  • "disabled"

  • "enabled"

monitor_access_level

字符串

在 community.general 6.4.0 中添加

private 表示只有项目成员才能监控运行状况。

disabled 表示禁用监控运行状况。

enabled 表示启用监控运行状况。

选项

  • "private"

  • "disabled"

  • "enabled"

名称

字符串 / 必需

项目名称。

only_allow_merge_if_all_discussions_are_resolved

布尔值

在 community.general 3.4.0 中添加

合并请求 (MR) 上的所有讨论都必须已解决。

选项

  • false

  • true

only_allow_merge_if_pipeline_succeeds

布尔值

在 community.general 3.4.0 中添加

仅在管道成功后才允许合并。

选项

  • false

  • true

packages_enabled

布尔值

在 community.general 3.4.0 中添加

启用 GitLab 包仓库。

选项

  • false

  • true

pages_access_level

字符串

在 community.general 9.3.0 中添加

private 表示只有项目成员才能访问页面标签。

disabled 表示禁用访问页面标签。

enabled 表示启用访问页面标签。

选项

  • "private"

  • "disabled"

  • "enabled"

路径

字符串

要创建的项目的路径,这将是 server_url/<group>/path。

如果未提供,将使用名称。

releases_access_level

字符串

在 community.general 6.4.0 中添加

private 表示只有项目成员才能访问发布。

disabled 表示禁用访问发布。

enabled 表示启用访问发布。

选项

  • "private"

  • "disabled"

  • "enabled"

remove_source_branch_after_merge

布尔值

在 community.general 3.4.0 中添加

合并后删除源分支。

选项

  • false

  • true

repository_access_level

字符串

在 community.general 9.3.0 中添加

private 表示只有项目成员才能访问仓库。

disabled 表示禁用访问仓库。

enabled 表示启用访问仓库。

选项

  • "private"

  • "disabled"

  • "enabled"

security_and_compliance_access_level

字符串

在 community.general 6.4.0 中添加

private 表示只有项目成员才能访问安全合规标签。

disabled 表示禁用访问安全合规标签。

enabled 表示启用访问安全合规标签。

选项

  • "private"

  • "disabled"

  • "enabled"

service_desk_enabled

布尔值

在 community.general 9.3.0 中添加

启用服务台。

选项

  • false

  • true

shared_runners_enabled

布尔值

在 community.general 3.7.0 中添加

为该项目启用共享运行器。

选项

  • false

  • true

snippets_enabled

布尔值

是否应提供代码片段创建功能。

选项

  • false

  • true ← (默认)

squash_option

字符串

在 community.general 3.4.0 中添加

合并时压缩提交。

选项

  • "never"

  • "always"

  • "default_off"

  • "default_on"

状态

字符串

创建或删除项目。

可能的值为 present 和 absent。

选项

  • "present" ← (默认)

  • "absent"

主题

列表 / 元素=字符串

在 community.general 6.6.0 中添加

要分配给项目的主题或主题列表。

它与旧版 GitLab 服务器版本兼容(14 版之前的版本,对应于 tag_list)。

用户名

字符串

在 community.general 3.3.0 中添加

用于在用户的名称下创建一个个人项目。

validate_certs

布尔值

提供 HTTPS 端点时是否验证 SSL 证书。

选项

  • false

  • true ← (默认)

可见性

别名:visibility_level

字符串

private 必须为每个用户显式授予项目访问权限。

internal 任何已登录用户都可以克隆该项目。

public 可以无需任何身份验证即可克隆该项目。

选项

  • "private" ← (默认)

  • "internal"

  • "public"

wiki_enabled

布尔值

此项目是否应提供 wiki。

选项

  • false

  • true ← (默认)

属性

属性

支持

描述

check_mode

支持:完全支持

可以在 check_mode 下运行,并在不修改目标的情况下返回更改状态预测。

diff_mode

支持:不支持

处于 diff 模式时,将返回有关已更改内容(或可能需要在 check_mode 中更改的内容)的详细信息。

示例

- name: Create GitLab Project
  community.general.gitlab_project:
    api_url: https://gitlab.example.com/
    api_token: "{{ api_token }}"
    name: my_first_project
    group: "10481470"

- name: Delete GitLab Project
  community.general.gitlab_project:
    api_url: https://gitlab.example.com/
    api_token: "{{ access_token }}"
    name: my_first_project
    state: absent
  delegate_to: localhost

- name: Create GitLab Project in group Ansible
  community.general.gitlab_project:
    api_url: https://gitlab.example.com/
    validate_certs: true
    api_username: dj-wasabi
    api_password: "MySecretPassword"
    name: my_first_project
    group: ansible
    issues_enabled: false
    merge_method: rebase_merge
    wiki_enabled: true
    snippets_enabled: true
    import_url: http://git.example.com/example/lab.git
    initialize_with_readme: true
    state: present
  delegate_to: localhost

- name: get the initial root password
  ansible.builtin.shell: |
    grep 'Password:' /etc/gitlab/initial_root_password | sed -e 's/Password\: \(.*\)/\1/'
  register: initial_root_password

- name: Create a GitLab Project using a username/password via oauth_token
  community.general.gitlab_project:
    api_url: https://gitlab.example.com/
    api_username: root
    api_password: "{{ initial_root_password }}"
    name: my_second_project
    group: "10481470"

返回值

常用返回值已在 此处 记录,以下是此模块独有的字段

描述

错误

字符串

GitLab API 返回的错误消息。

返回:失败

示例:"400: path is already in use"

消息

字符串

成功或失败消息。

返回:始终

示例: "Success"

项目

字典

API 对象。

返回:始终

结果

字典

来自服务器的 JSON 解析响应。

返回:始终

作者

  • Werner Dijkerman (@dj-wasabi)

  • Guillaume Martinez (@Lunik)