使用普通yaml中的config轻松配置gitlab的代码工具
gitlabform的Python项目详细描述
gitlabform
gitlabform是一个简单的配置,作为gitlab使用config的代码工具 纯山药。
功能
gitlabform允许您管理:
- 项目设置,
- 项目成员(用户和组),
- 展开键,
- 秘密变量,
- 分支(保护/取消保护),
- 标签(保护/取消保护),
- 服务,
- (项目)挂钩,
- (项目)推送规则,
- (添加/编辑或删除)文件,模板基于jinja2(现在 支持自定义变量!),
- 合并请求批准设置和批准人(仅限EE 10.6+),
…用于:
- 您可以访问的所有项目,
- 一组项目,
- 一个项目,
…以及它们的组合(所有项目的默认配置+更多 特定于某些组+甚至更特定于特定项目)。
安装
- pip3:pip3 install gitlabform-就这些!
- docker:您可以将运行的gitlabform包装为docker命令,最小 版本为: alias gitlabform='docker run -it-v$(pwd):/config egnyte/gitlabform:latest gitlabform。 您可以使用任何带有后缀-alpine3.9的gitlabform版本 (推荐)或-Debian9,具体取决于您的具体需要。
快速启动
- 创建示例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
- 运行gitlabform my_group
- 观看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在你的管道里。
贡献
开发环境设置操作方法:
- 安装生成要求-pandocbinary package+pypandoc python包。
- 使用python 3.5+创建virtualenv,例如在venvdir中 在.gitignore中。
- 激活virtualenv并以开发模式在其中安装gitlabform (python setup.py develop)。
许可证
麻省理工学院