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 起支持项目的默认分支更新。

description

字符串

项目的描述。

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"

group

字符串

此项目所属组的 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"

name

string / 必需

项目的名称。

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 中添加

为此项目启用共享 runners。

选项

  • false

  • true

snippets_enabled

布尔值

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

选项

  • false

  • true ← (默认)

squash_option

字符串

在 community.general 3.4.0 中添加

合并时压缩提交。

选项

  • "never"

  • "always"

  • "default_off"

  • "default_on"

state

字符串

创建或删除项目。

可能的值为 present 和 absent。

选项

  • "present" ← (默认)

  • "absent"

topics

list / elements=string

在 community.general 6.6.0 中添加。

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

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

username

字符串

在 community.general 3.3.0 中添加。

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

validate_certs

布尔值

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

选项

  • false

  • true ← (默认)

visibility

别名: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"

返回值

常见的返回值在此处记录 此处,以下是此模块特有的字段

描述

error

字符串

GitLab API 返回的错误消息。

已返回: 失败

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

msg

字符串

成功或失败消息。

已返回: 总是

示例: "Success"

project

字典

API 对象。

已返回: 总是

result

字典

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

已返回: 总是

作者

  • Werner Dijkerman (@dj-wasabi)

  • Guillaume Martinez (@Lunik)