Automatically assign review on gitlab/heptapod
Project description
This project aims to automatically assign unassigned pending merge-requests on a gitlab/heptapod instance.
Each member of a project can be randomly assigned to a pending merge-requests.
Assignbot assigns reviews to users, based on their preferences. Their preferences are store in a simple yaml file. The history of the assignment is stored in a CSV file, in a S3 storage.
The preferences file
The users define their “review preferences” in a preferences file, formatted in yaml.
The “preferences file” is a yaml file constructed as follow :
username_1: max_auto_review_per_week: XXX max_auto_review_per_day: YYY username_2: max_auto_review_per_week: ZZZ max_auto_review_per_day: WWW
where username_1 is the username of a gitlab user, and max_auto_review_per_week (max_auto_review_per_day) is the maximum of automatically assigned review per week (per day).
The S3 storage
Assignbot uses a CSV file to keep track of users assignments. This CSV file is stored in an S3 storage. When you execute the bot, you must provide the following environment variables:
AWS_ACCESS_KEY_ID: your S3 key ID
AWS_SECRET_ACCESS_KEY: your S3 secret access key
S3_ENDPOINT_URL: your S3 endpoint url
S3_BUCKET_NAME: the S3 bucket to be used
Executing the bot
Once assignbot installed, you can run it as follow :
$ GITLAB_URL="https://your.forge.org" \
GITLAB_TOKEN="XXX-an-api-token" \
S3_ENDPOINT_URL="https://your.s3.storage.fr" \
S3_BUCKET_NAME="you_bucket_name" \
AWS_SECRET_ACCESS_KEY="your_secret_access_key" \
AWS_ACCESS_KEY_ID="your_access_key_id" \
python3 -m assignbot ./users_preferences.yml
and the bot should start assigning merge requests to the users.
Use case example
To use this bot, you can add a new repository on your forge with the following .gitlab-ci.yml :
assign:
stage: assign
only:
- schedules
variables:
# there is a gitlab bug in the validation of AWS variables. We work
# around it while waiting for the correction.
# see: https://gitlab.com/gitlab-org/gitlab/-/issues/215927
AWS_ACCESS_KEY_ID: "$_AWS_ACCESS_KEY_ID"
AWS_SECRET_ACCESS_KEY: "$_AWS_SECRET_ACCESS_KEY"
script:
- pip install assignbot
- python -m assignbot ./users_preferences.yml
This job assumes that you have defined the appropriate environment variables, and that you have a users_preferences.yml file at the root of this repository.
Then, you can create a new “schedule job” in gitlab, to call this job periodically.
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 assignbot-2.2.2.tar.gz
.
File metadata
- Download URL: assignbot-2.2.2.tar.gz
- Upload date:
- Size: 12.3 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/4.0.1 CPython/3.10.5
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | 9748e40b29473c861e1a835e27c4bc0a45a8353a9e08cb1b0418e619c8d21873 |
|
MD5 | 71701871f779078c4b1ceff3acd3250b |
|
BLAKE2b-256 | ca97a1ea76c05503827d0ceb7c04bd03aa5bcb00938c4c23c7ff36e4dab4ef10 |
File details
Details for the file assignbot-2.2.2-py3-none-any.whl
.
File metadata
- Download URL: assignbot-2.2.2-py3-none-any.whl
- Upload date:
- Size: 14.2 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/4.0.1 CPython/3.10.5
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | ef67aa7bf49abb4e0eb3e13d542a05c2f71cfadd732b757220c52d3cfd0b6879 |
|
MD5 | f462d5e85ee021ab0a79002442b7dcac |
|
BLAKE2b-256 | 592665c16f0cdc74560e0e957eb459572532d6ab90941174d164365276f5159b |