Redmine GitLab Hook
This plugin allows you to update your local Git repositories in Redmine when changes have been pushed to GitLab.
Features
- Multiple repositories per Redmine project
- Supports Gitlab repository namespaces
- Fetches all branches from all remotes
- Auto create repository if not exist
- Set path for auto-created repositories
- Set Git command prefix
- Fetch updates from repository
- Fetch with prune mode
Description
Redmine has supported Git repositories for a long time, allowing you to browse your code and view your changesets directly in Redmine. For this purpose, Redmine relies on local clones of the Git repositories.
If your shared repository is on a remote machine - for example on GitLab - this unfortunately means a bit of legwork to keep the local, Redmine-accessible repository up-to-date. The common approach is to set up a cronjob that pulls in any changes with regular intervals and updates Redmine with them.
That approach works perfectly fine, but is a bit heavy-handed and cumbersome. The Redmine GitLab Hook plugin allows GitLab to notify your Redmine installation when changes have been pushed to a repository, triggering an update of your local repository and Redmine data only when it is actually necessary.
Installation
-
Installing the plugin
- Follow the plugin installation procedure at http://www.redmine.org/wiki/redmine/Plugins.
- Restart Redmine instance.
- If you already have a local Git repository set up and working from Redmine go to step 3., otherwise continue at step 2.
-
Setup Git repository sync
- Adding a Git repository to a project (note, this should work whether you want to use Redmine GitLab Hook or not). Simply follow this instructions. If the repository was cloned with
clone --mirror
please turn on the optionall_branches
in the plugin config page. - Restart Redmine instance.
- Adding a Git repository to a project (note, this should work whether you want to use Redmine GitLab Hook or not). Simply follow this instructions. If the repository was cloned with
-
Setup Redmine repository
- In the project settings, activate
repository
module and add a new repository. Repository identifier is composed with{repository_namespace}_{repository_name}
. - Project identifier
test
in repository namespacebusiness
with repository nameredmine
results inbusiness_redmine
as repository identifier. - If no repository namespace is used, use only the repository name as repository identifier. E.g.
redmine
. - If no repository name is given, the repository identifier is the same as the project identifier. E.g.
test
. - If no project identifier is given, the project identifier is the same as the repository name. E.g.
redmine
.
- In the project settings, activate
-
Setup GitLab Web hook
- Go to the repository interface on GitLab.
- Under Web Hooks add a new Post-Receive URL of the format:
{redmine_installation_url}/gitlab_hook?key={redmine_repository_API_key}&project_id={redmine_project_identifier}
- Required parameters
- project_id or repository_name parameter
- key = Redmine repository API key
- Additional optional parameters
- project_id = Redmine project identifier
- repository_name = Name of the Git repository
- repository_namespace = Namespace of the Git repository
- repository_git_url = Git Repository URL for auto create repository
Example:
That's it. GitLab will now send a HTTP POST to the Redmine GitLab Hook plugin whenever changes are pushed to GitLab. The plugin then takes care of pulling the changes to the local repository and updating the Redmine database with them.
Debug
To debug the API interface of redmine_gitlab_hook try out RESTClient a nice add-on for Chrome, Firefox and Safari. Please keep in mind, that the request method must be of type POST!
Assumptions
- GitLab >= 5.x.
- Redmine 3.x running on a *nix-like system. Older versions of Redmine will not work.
- Git 1.7.10 or higher available on the commandline. Also supports Git 1.8 repositories which are mirrored with the new
clone --mirror
command (default: off, please turn on in options when new mirror command was used).
Contributing
- Fork it ( https://github.com/[your-username]/redmine_gitlab_hook/fork )
- Create your feature branch (
git checkout -b my-new-feature
) - Commit your changes (
git commit -am 'Add some feature'
) - Push to the branch (
git push origin my-new-feature
) - Create a new Pull Request
License
The MIT License
Copyright (c) 2022 Phlegx Systems Technologies GmbH