这是一个 Redmine 插件,让你轻松配置自己的 Git 托管服务。
该插件允许你在 Redmine 中直接管理 Gitolite,操作简单直接。
特性:
特征 | 支持 | 笔记 |
SSH 公钥管理 | 允许 Redmine 用户管理自己的 SSH 密钥。 | |
自述文件预览 | 此功能允许在存储库选项卡中显示 README 文件的内容。 | |
Git 修订下载 | 此功能向 Git 存储库浏览器添加了下载链接,允许用户下载给定修订版的快照。 | |
改进的存储库统计信息 | 使用 Highcharts 库显示漂亮的图表。 | |
Git SmartHTTP | 该插件允许您自动启用 Git SmartHTTP 访问您的存储库。 | |
Git 守护进程 | 该插件允许您管理通过 GitDaemon 导出的存储库。 | |
浏览已归档的存储库 | 如果您是 Redmine 的管理员,您可以通过单击顶部菜单中的“已存档存储库”来浏览已存档存储库。 | |
默认分支选择 | 默认情况下,仓库的默认分支名为master 。如果您拥有仓库的管理员权限,则可以更改仓库的默认分支。 | |
删除存储库 | 该插件可以通过将存储库放入回收站中一段可配置的时间来处理存储库的删除。 |
特征 | 支持 | 笔记 |
自动创建存储库 | 每次创建新项目时,都可以自动创建一个新的 Git 仓库。您无需先创建项目,再创建仓库,只需一步即可完成。 | |
自动存储库初始化 | 您可以使用 README 文件(类似于 GitHub)自动初始化新的 Git 存储库。 | |
Git 邮件列表 | 该插件嵌入了git-multimail 钩子来发送推送到 Git 存储库的通知电子邮件。 | |
GitHub 问题同步 | 让您的 GitHub 问题与 Redmine 保持同步!! |
特征 | 支持 | 笔记 |
Sidekiq 异步作业 | 通过在后台执行任务来加速存储库的创建。 | |
缓存选项 | 在 Redmine 界面中浏览存储库时,插件会缓存 Git 命令的输出,以显著提高页面加载时间,速度大约提高 10 倍。 |
特征 | 支持 | 笔记 |
部署凭证 | 此插件为每个仓库提供部署密钥。无需 Redmine 用户,即可授予特定密钥的仓库访问权限。非常适合构建服务或仓库镜像等服务集成! | |
接收后 URL | 此插件支持添加 GitHub 风格的 Post-Receive URL。添加后,当新的更改推送到代码库时,将会通知 Post-Receive URL。 | |
自动镜像更新 | 当新的更改被推送到存储库时,此插件可以自动将更新推送到存储库镜像。 | |
Git 配置密钥管理 | 您可以管理每个存储库的Git 配置键/值对。 | |
Gitolite 期权管理 | 您可以管理每个存储库的Gitolite 选项。 | |
GoLang 重定向器 | 该插件支持简化依赖项克隆的 GoLang URL(远程导入路径)。 | |
自定义 Gitolite Hooks 安装程序 | 创建新存储库时安装您自己的 Gitolite 钩子。 | |
Redmine Git 托管插件 | 创建您自己的插件来定制存储库创建。 |
特征 | 支持 | 笔记 |
插件配置覆盖 | 将自定义设置安全地保存在 YAML 文件中 |
详细文档:http://redmine-git-hosting.io/
在更新插件之前,不要忘记备份数据库并停止 Redmine!
# Install dependencies (On Debian/Ubuntu)
root# apt-get install build-essential libssh2-1 libssh2-1-dev cmake libgpg-error-dev
# Install dependencies (On Fedora/CentoS/RedHat)
root# yum groupinstall "Development Tools"
root# yum install libssh2 libssh2-devel cmake libgpg-error-devel
如果您正在使用 Bitnami Redmine Stack,则必须在执行任何安装准备之前运行此程序:Bitnami 安装。
假设您已经安装了Redmine:
# Switch user
root# su - redmine
# First git clone Additionals
redmine$ cd REDMINE_ROOT/plugins
redmine$ git clone --branch 3.0.6 https://github.com/AlphaNodes/additionals.git
# Then Redmine Git Hosting plugin
redmine$ cd REDMINE_ROOT/plugins
redmine$ git clone https://github.com/jbox-web/redmine_git_hosting.git
# last release version is broken, use master branch till next version released!
# redmine$ cd redmine_git_hosting/
# redmine$ git checkout 6.0.0
# Install gems and migrate database
redmine$ cd REDMINE_ROOT
redmine$ bundle config set --local without 'development:test'
redmine$ bundle config set --local build.rugged --with-ssh
redmine$ bundle install
redmine$ bundle exec rake redmine:plugins:migrate RAILS_ENV=production NAME=additionals
redmine$ bundle exec rake redmine:plugins:migrate RAILS_ENV=production NAME=redmine_git_hosting
否则,您可以按照 wiki 安装 Redmine:如何安装 Redmine。
如果bundle
命令在 Bitnami Stack 上抱怨,请查看这个。
由于我们需要在非交互模式下通过 SSH 发送命令,因此 SSH 密钥不能包含密码(-N ''
参数)。此外,最好将 SSH 密钥存储在 REDMINE_ROOT 路径之外,以便
root$ su - redmine
redmine$ mkdir ssh_keys
redmine$ ssh-keygen -m PEM -N '' -f ssh_keys/redmine_gitolite_admin_id_rsa
在 Bitnami 堆栈上:
bitnami$ cd /opt/bitnami/apps/redmine/
bitnami$ mkdir ssh_keys
bitnami$ chgrp daemon ssh_keys
bitnami$ ssh-keygen -m PEM -N '' -f ssh_keys/redmine_gitolite_admin_id_rsa
bitnami$ chmod 640 ssh_keys/*
如果您使用 Apache 运行 Redmine:
root# sudo -u www-data mkdir -p /var/www/redmine/ssh_keys
root# sudo -u www-data ssh-keygen -m PEM -N '' -f /var/www/redmine/ssh_keys/redmine_gitolite_admin_id_rsa
确保 SSH 公钥是使用密钥格式 PEM 创建的(使用ssh-keygen 的-m PEM 参数)。
您必须配置插件以指向该路径。
假设您已经安装了 Gitolite,请在gitolite.conf
文件中添加以下内容:
repo gitolite-admin
RW+ = redmine_gitolite_admin_id_rsa
否则,您可以按照以下步骤安装 Gitolite (v3)(这将自动设置上面的行):
Server requirements:
* any unix system
* sh
* git 1.6.6+
* perl 5.8.8+
* openssh 5.0+
* a dedicated userid to host the repos (in this document, we assume it
is 'git'), with shell access ONLY by 'su - git' from some other userid
on the same server.
Steps to install:
* login as 'git' as described above
* make sure ~/.ssh non-existent
* make sure **Redmine SSH public key** we've just created (step 3) is available at $HOME/redmine_gitolite_admin_id_rsa.pub
* add this in ~/.profile
# set PATH so it includes user private bin if it exists
if [ -d "$HOME/bin" ] ; then
PATH="$PATH:$HOME/bin"
fi
* run the following commands:
root$ su - git
git$ mkdir $HOME/bin
git$ source $HOME/.profile
git$ git clone git://github.com/sitaramc/gitolite
git$ gitolite/install -to $HOME/bin
git$ gitolite setup -pk redmine_gitolite_admin_id_rsa.pub
root$ su - git
git$ vi (or nano) .gitolite.rc
## Look for GIT_CONFIG_KEYS and make it look like :
GIT_CONFIG_KEYS => '.*',
## Enable local code directory
LOCAL_CODE => "$ENV{HOME}/local"
## then save and exit
以 root 身份创建文件/etc/sudoers.d/redmine
并将以下内容放入其中:
Defaults:redmine !requiretty
redmine ALL=(git) NOPASSWD:ALL
然后对文件进行 chmod 操作:
root# chmod 440 /etc/sudoers.d/redmine
确保 Redmine 用户的 known_hosts 列表中有 Gitolite 服务器。这也是检查 Gitolite 是否正常工作的好方法。
它不应该要求您输入密码。
另外,Redmine 用户的 SSH 配置文件 ( <redmine user home>/.ssh/config
) 也不再需要了!如果存在,请删除!
root$ su - redmine
redmine$ ssh -i ssh_keys/redmine_gitolite_admin_id_rsa git@localhost info
# accept key
你应该得到类似这样的结果:
hello redmine_gitolite_admin_id_rsa, this is gitolite v2.3.1-0-g912a8bd-dt running on git 1.7.2.5
the gitolite config gives you the following access:
R W gitolite-admin
@R_ @W_ testing
或者
hello redmine_gitolite_admin_id_rsa, this is git@dev running gitolite3 v3.3-11-ga1aba93 on git 1.7.2.5
R W gitolite-admin
R W testing
如果您收到其中一条消息,则说明您走对了路 ;)
我们的 post-receive 钩子在每次提交后触发,用于在 Redmine 中获取变更集。由于它是用 Ruby 编写的,因此您需要在服务器上安装 Ruby。请注意,这与 RVM 不冲突。这些钩子至少需要Ruby 2.5 版本。
root$ apt-get install ruby
# or
root$ yum install ruby
插件现已安装,您可以重新启动Redmine:)
但您必须设置一些额外的设置:
在管理 -> 设置 -> 存储库中启用 Xitolite 存储库
在管理 -> Redmine Git 托管 配置检查选项卡中检查您的安装。
在配置插件之前,您应该看一下这个:存储库存储配置策略。
如果您再次使用 Bitnami Stack:您必须正确配置临时目录。操作方法如下。
更改设置后,您可能需要重新启动 Redmine,因为其中一些设置会被放入缓存中。
存储库访问基于 Redmine 项目的成员资格和成员的角色:您必须添加具有足够角色的用户作为项目成员才能克隆/更新存储库。
您还需要在管理 -> 角色页面配置角色的权限。
除非您想通过智能 HTTP 专门访问您的存储库,否则用户将需要设置公钥才能通过 SSH 连接。
为此,打开浏览器,登录 Redmine,然后点击页面右上角的“我的帐户”链接,然后点击“添加 SSH 密钥”链接。
SSH 密钥应该是唯一的,也就是说,您在 Redmine 中设置的密钥不应该已经存在于 Gitolite 仓库中。
特别是,不要重复使用您设置为 Gitolite 管理密钥的密钥。
此时,插件应该可以正常工作了。
- 兼容Redmine 6.0
- 兼容 Redmine 4.1、Redmine4.2
辽ICP备18016669号-2