Easy configuration as code tool for GitLab using config in plain YAML
Project description
GitLabForm
GitLabForm is an easy configuration as code tool for GitLab using config in plain YAML.
Features
GitLabForm enables you to manage:
Project settings,
Project members (users and groups),
Deployment keys,
Secret variables,
Branches (protect/unprotect),
Tags (protect/unprotect),
Services,
(Project) Hooks,
(Project) Push Rules,
(Add/edit or delete) Files, with templating based on jinja2 (now supports custom variables!),
Merge Requests approvals settings and approvers (EE 10.6+ only),
…for:
all projects you have access to,
a group of projects,
a single project,
…and a combination of them (default config for all projects + more specific for some groups + even more specific for particular projects).
Quick start
Install with: pip3 install gitlabform
Create example config.yml:
gitlab:
# You can also set in your environment GITLAB_URL
url: https://gitlab.yourcompany.com
# You can also set in your environment GITLAB_TOKEN
token: "<private token of an admin user>"
api_version: 4
group_settings:
'my_group':
deploy_keys:
a_friendly_deploy_key_name:
key: ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQC3WiHAsm2UTz2dU1vKFYUGfHI1p5fIv84BbtV/9jAKvZhVHDqMa07PgVtkttjvDC8bA1kezhOBKcO0KNzVoDp0ENq7WLxFyLFMQ9USf8LmOY70uV/l8Gpcn1ZT7zRBdEzUUgF/PjZukqVtuHqf9TCO8Ekvjag9XRfVNadKs25rbL60oqpIpEUqAbmQ4j6GFcfBBBPuVlKfidI6O039dAnDUsmeafwCOhEvQmF+N5Diauw3Mk+9TMKNlOWM+pO2DKxX9LLLWGVA9Dqr6dWY0eHjWKUmk2B1h1HYW+aUyoWX2TGsVX9DlNY7CKiQGsL5MRH9IXKMQ8cfMweKoEcwSSXJ
title: ssh_key_name_that_is_shown_in_gitlab
can_push: false
Run gitlabform my_group
Watch GitLabForm add/reset this deploy key to all projects in “my_group” group in your GitLab!
Configuration syntax
See config.yml in this repo as a well documented example of configuring all projects in all groups, projects in “my_group” group and specifically project “my_group/my_project1”.
More usage examples
To apply settings for a single project, run:
gitlabform my_group/my_project1
To apply settings for a group of projects, run:
gitlabform my_group
To apply settings for all groups of projects and projects explicitly defined in the config, run:
gitlabform ALL_DEFINED
To apply settings for all projects, run:
gitlabform ALL
If you are satisfied with results consider running it with cron on a regular basis to ensure that your GitLab configuration stays the way defined in your config (for example in case of some admin changes some project settings temporarily by (yuck!) clicking).
All command line parameters
Run:
gitlabform -h
…to see the current set of supported command line parameters.
Requirements
Python 3.5+
GitLab 11+ for gitlabform >=1.0.0, GitLab 9.1-10.8 for gitlabform <1.0.0, (GitLab EE 10.6+ for merge_requests section)
Why?
This tool was created as a workaround for missing GitLab features such as assigning deploy keys per project groups but as of now we prefer to use it ever if there are appropriate web UI features, such as secret variables per project groups (released in GitLab 9.4) to keep configuration as code.
GitLabForm is slightly similar to GitLab provider for Terraform (which we love, btw!), but it has much more features and uses simpler configuration format.
How does it work?
It just goes through a loop of projects list and make a series of GitLab API requests. Where possible it corresponds to GitLab API 1-to-1, so for example it just PUTs or POSTs the hash set at given place in its config transformed into JSON, so that it’s not necessary to modify the app in case of some GitLab API changes.
Contributing
Development environment setup how-to:
Install build requirements - pandoc binary package + pypandoc python package.
Create virtualenv with Python 3.5+, for example in venv dir which is in .gitignore.
Activate the virtualenv and install gitlabform in it in develop mode (python setup.py develop).
License
MIT
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
File details
Details for the file gitlabform-1.4.1.post2.tar.gz
.
File metadata
- Download URL: gitlabform-1.4.1.post2.tar.gz
- Upload date:
- Size: 16.9 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/1.13.0 pkginfo/1.5.0.1 requests/2.21.0 setuptools/41.0.1 requests-toolbelt/0.9.1 tqdm/4.31.1 CPython/3.6.3
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | c3279a93a6dee57970b9fccf90d5fce01c0d951a8b89c1e577146ee64aaafe41 |
|
MD5 | bb4e2904041bed28b2f99189f93d905d |
|
BLAKE2b-256 | 6fb425b2aa97adfa2b9ce2f9d540186b2d35db5037312f8a055ffc250030840c |
File details
Details for the file gitlabform-1.4.1.post2-py3-none-any.whl
.
File metadata
- Download URL: gitlabform-1.4.1.post2-py3-none-any.whl
- Upload date:
- Size: 23.7 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/1.13.0 pkginfo/1.5.0.1 requests/2.21.0 setuptools/41.0.1 requests-toolbelt/0.9.1 tqdm/4.31.1 CPython/3.6.3
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | 81f56a09f3d6f13e3d5088c74a0114db3064fd2809ccc3b6acef1561f0adc302 |
|
MD5 | 67af2ce1a5754a8563453d6411829032 |
|
BLAKE2b-256 | 876d1ad0c82250a8eaeaeccbde0ad581eb73a7a48cdcf51f884f52ad88db7970 |