使用普通yaml中的config轻松配置gitlab的代码工具

gitlabform的Python项目详细描述


PyPI versionBuild Status

gitlabform

gitlabform是一个简单的配置,作为gitlab使用config的代码工具 纯山药。

功能

gitlabform允许您管理:

  • 项目设置,
  • 项目成员(用户和组),
  • 展开键,
  • 秘密变量,
  • 分支(保护/取消保护),
  • 标签(保护/取消保护),
  • 服务,
  • (项目)挂钩,
  • (项目)推送规则,
  • (添加/编辑或删除)文件,模板基于jinja2(现在 支持自定义变量!),
  • 合并请求批准设置和批准人(仅限EE 10.6+),

…用于:

  • 您可以访问的所有项目,
  • 一组项目,
  • 一个项目,

…以及它们的组合(所有项目的默认配置+更多 特定于某些组+甚至更特定于特定项目)。

安装

  1. pip3:pip3 install gitlabform-就这些!
  2. docker:您可以将运行的gitlabform包装为docker命令,最小 版本为: alias gitlabform='docker run -it-v$(pwd):/config egnyte/gitlabform:latest gitlabform。 您可以使用任何带有后缀-alpine3.9的gitlabform版本 (推荐)或-Debian9,具体取决于您的具体需要。

快速启动

  1. 创建示例config.yml
gitlab:# You can also set in your environment GITLAB_URLurl:https://gitlab.yourcompany.com# You can also set in your environment GITLAB_TOKENtoken:"<privatetokenofanadminuser>"api_version:4group_settings:'my_group':deploy_keys:a_friendly_deploy_key_name:key:ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQC3WiHAsm2UTz2dU1vKFYUGfHI1p5fIv84BbtV/9jAKvZhVHDqMa07PgVtkttjvDC8bA1kezhOBKcO0KNzVoDp0ENq7WLxFyLFMQ9USf8LmOY70uV/l8Gpcn1ZT7zRBdEzUUgF/PjZukqVtuHqf9TCO8Ekvjag9XRfVNadKs25rbL60oqpIpEUqAbmQ4j6GFcfBBBPuVlKfidI6O039dAnDUsmeafwCOhEvQmF+N5Diauw3Mk+9TMKNlOWM+pO2DKxX9LLLWGVA9Dqr6dWY0eHjWKUmk2B1h1HYW+aUyoWX2TGsVX9DlNY7CKiQGsL5MRH9IXKMQ8cfMweKoEcwSSXJtitle:ssh_key_name_that_is_shown_in_gitlabcan_push:false
  1. 运行gitlabform my_group
  2. 观看gitlabform向中的所有项目添加/重置此部署密钥 “我的小组”小组在你的gitlab!

配置语法

config.yml 在这个repo中,作为一个在 “我的小组”中的所有小组、项目,特别是项目 “我的小组/我的项目1”。

更多用法示例

要为单个项目应用设置,请运行:

gitlabform my_group/my_project1

要为一组项目应用设置,请运行:

gitlabform my_group

为所有项目组和项目显式应用设置的步骤 在配置中定义,运行:

gitlabform ALL_DEFINED

要为所有项目应用设置,请运行:

gitlabform ALL

如果您对结果感到满意,请考虑在 定期确保您的gitlab配置保持不变 在配置中定义(例如,在某些管理员更改某些 项目设置暂时由(讨厌!)点击)。

所有命令行参数

运行:

gitlabform -h

…查看当前受支持的命令行参数集。

要求

  • Python3.5+
  • gitlabform的gitlab 11+>;=1.0.0,gitlab的gitlab 9.1-10.8 <;1.0.0,(Gitlab ee 10.6+用于合并请求部分)

为什么?

创建此工具是为了解决Gitlab缺少的功能,如 作为assigning deploy keys per project groups但作为 现在,如果有合适的web用户界面,我们更愿意使用它 功能,例如secret variables per project groups (在Gitlab 9.4中发布)将配置保留为代码。

gitlabform与GitLab provider稍有相似 对于terraform(顺便说一句,我们喜欢它),但它有更多的功能和 使用更简单的配置格式。

它是如何工作的?

它只需遍历一个项目列表循环,然后生成一系列gitlab API请求。如果可能,它对应于gitlab api 1到1,因此 示例它只在其配置中的给定位置放置或发布哈希集 转换为json,这样就不必在 一些gitlab api更改的情况。

Gitlab CI/CD支持

您可以将gitlabform用作 CCA gitlab的管道示例可以在.gitlab-ci.example.yml找到 文件。重要的是,当您将配置公开给 在管道中,必须确保令牌具有对gitlab的访问权限 实例得到很好的保护。建议的方法是设置 Gitlab_令牌作为环境VA在你的管道里。

贡献

开发环境设置操作方法:

  1. 安装生成要求-pandocbinary package+pypandoc python包。
  2. 使用python 3.5+创建virtualenv,例如在venvdir中 在.gitignore中。
  3. 激活virtualenv并以开发模式在其中安装gitlabform (python setup.py develop)。

许可证

麻省理工学院

欢迎加入QQ群-->: 979659372 Python中文网_新手群

推荐PyPI第三方库


热门话题
java Spring数据JPA+Hibernate在不首先找到父实体的情况下保存子实体   php Java:如何从CLI接收命令   spring为java中的导出数据创建访问文件   java在Windows 8.1上安装Play Framework   java Spring启动白标签错误页面(类型=未找到,状态=404)   java如何在单击时从数组中绘制?   java fn:substringAfter()上次出现   java在IFR语句中使用方法返回   java onPause()或onStop()的名称   对关联对象的关联对象具有条件的java HQL查询   java只打印一次总值,无需迭代   java如何使用抽象Uri buildOn()方法?   如何在Java中执行sudo命令并获得错误输出?   java反射:避免对getConstructor(类<?>…)的未经检查的警告调用作为原始类型类的成员   Java:如何从类中创建的对象调用类方法?   java如何在电子邮件中嵌入图像?   java如何在Android上启用详细GC?   java什么是串行版本id?