跳转到主要内容

Idem的Gitlab提供者插件

项目描述

Made with pop, a Python implementation of Plugin Oriented Programming Made with Python

idem的Gitlab提供者。

关于

使用idem管理Gitlab。

什么是POP?

此项目使用pop构建,它是Python实现的插件导向编程(POP)。POP旨在以新的方式结合计算历史中的概念和智慧,以解决现代计算问题。

更多信息

入门

先决条件

  • Python 3.9+

  • git (如果从源安装或为项目做出贡献)

安装

如果您想使用 idem-gitlab,您可以通过安装 PyPI 或源代码来使用它。

从 PyPI 安装

pip install idem-gitlab

从源代码安装

# clone repo
git clone git@gitlab.com/vmware/idem/idem-gitlab.git
cd idem-gitlab

# Setup venv
python3 -m venv .venv
source .venv/bin/activate
pip install pip==21 -e .

使用方法

凭证

idem-gitlab 推荐的认证方法是使用个人访问令牌。要创建个人访问令牌,请参阅 Gitlab 文档。创建一个格式如下 acount_file 文件

gitlab:
   default:
      token: <personal_access_token>
      # Optional parameters
      endpoint_url: https://gitlab.com
      api_version: v4
      sudo: <user>
      owned: True

使用以下命令加密 acount_file

idem encrypt /path/to/acct_file

首次运行此命令时,将输出一个 ACCT_KEY,可以用于解密文件。将 ACCT_KEY 和 ACCT_FILE 放入环境变量中,idem 将自动查找并使用您的 Gitlab 配置文件。

export ACCT_KEY="<acct_key>"
export ACCT_FILE=/path/to/acct_file

一旦您的凭证就绪,您可以通过运行以下命令之一来测试它们

idem exec gitlab.version.get
idem exec gitlab.metadata.get
idem exec gitlab.avatar.get email="gitlab_user@example.com"
idem exec gitlab.namespace.get
idem exec gitlab.project.commit.get "<commit_sha/branch/tag/null>" project_id="<project_id>"

支持的资源

以下是目前由 idem-gitlab 支持的资源 REF。

  • gitlab.group

  • gitlab.group.member

  • gitlab.group.variable

  • gitlab.impersonation_token

  • gitlab.personal_access_token

  • gitlab.project

  • gitlab.project.branch

  • gitlab.project.member

  • gitlab.project.protected_branch

  • gitlab.project.protected_tag

  • gitlab.project.tag

  • gitlab.project.variable

  • gitlab.runner

  • gitlab.user

对于每个引用,都有用于创建、列表、获取、更新和删除操作的功能。

Idem-gitlab 使用“auto_state”合约将这组 CRUD 操作组合成现有和不存在状态。

示例

使用 idem exec 命令运行 CRUD 操作

idem exec gitlab.project.create path=new_project
idem exec gitlab.project.list
idem exec gitlab.project.get "<new_project_id>"
idem exec gitlab.project.update "<new_project_id>" repository_access_level=private
idem exec gitlab.project.delete "<new_project_id>"

根据现有资源创建 SLS 文件

idem describe gitlab.group > /srv/idem/gitlab/group.sls
idem describe gitlab.group.member > /srv/idem/gitlab/group_member.sls
idem describe gitlab.group.variable > /srv/idem/gitlab/group_variable.sls
idem describe gitlab.project > /srv/idem/gitlab/project.sls
idem describe gitlab.project.branch > /srv/idem/gitlab/branch.sls
idem describe gitlab.project.member > /srv/idem/gitlab/project_member.sls
idem describe gitlab.project.protected_branch > /srv/idem/gitlab/protected_branch.sls
idem describe gitlab.project.protected_tag > /srv/idem/gitlab/protected_tag.sls
idem describe gitlab.project.tag > /srv/idem/gitlab/tag.sls
idem describe gitlab.project.variable > /srv/idem/gitlab/project_variable.sls
idem describe gitlab.runner > /srv/idem/gitlab/runner.sls
idem describe gitlab.user > /srv/idem/gitlab/user.sls

创建一个包含所有其他文件的顶层 SLS 文件

# /srv/idem/gitlab/init.sls
include:
  - group
  - group_member
  - group_variable
  - project_member
  - project
  - branch
  - protected_branch
  - protected_tag
  - tag
  - project_variable
  - runner
  - user

运行“idem state”以有条件地强制执行对创建的任何文件的更改

idem state /srv/idem/gitlab

就是这样!您现在可以使用 idem-gitlab 来管理您的 Gitlab 资源。

测试

要使用 Gitlab docker 映像运行测试,首先运行

docker run -d -p 80:80 --env GITLAB_ROOT_PASSWORD=not_secure gitlab/gitlab-ce

对于测试,您可以使用测试的示例凭证文件

export ACCT_FILE=$PWD/example/credentials.yaml

使用 nox 运行测试套件

pip3 install nox
nox -p 3.11

自动生成

自动生成利用 pop-create 来解析 Gitlab API 并为新资源生成模块。要执行自动生成,首先您需要使用 autogen 扩展安装 idem-gitlab

pip3 install idem-gitlab[autogen]

接下来,运行 pop-create 生成当前目录中的模块

pop-create gitlab --directory $PWD --create-plugin auto_state
pop-create gitlab --directory $PWD --create-plugin tests

这些模块不会直接使用,它们可能需要手动更改以符合 idem-gitlab 的其余部分并使其可用。一旦您完全实现了新资源,提交一个 PR,我们将审查它,并希望将其添加到 idem-gitlab 的功能中!

路线图

参考 公开问题 以获取拟议的功能列表(和已知问题)。

致谢

项目详情


下载文件

下载适用于您的平台的文件。如果您不确定选择哪个,请了解有关 安装软件包 的更多信息。

源代码发行版

idem-gitlab-2.0.1.tar.gz (40.0 KB 查看散列)

源代码

构建发行版

idem_gitlab-2.0.1-py3-none-any.whl (67.3 kB 查看散列)

上传于 Python 3

由以下支持

AWSAWS云计算和安全赞助商DatadogDatadog监控FastlyFastlyCDNGoogleGoogle下载分析MicrosoftMicrosoftPSF赞助商PingdomPingdom监控SentrySentry错误日志StatusPageStatusPage状态页