Redmine 是一个开源的、基于Web的项目管理和缺陷跟踪工具。它用日历和甘特图辅助项目及进度可视化显示。同时它又支持多项目管理。Redmine是一个自由开放 源码软件解决方案,它提供集成的项目管理功能,问题跟踪,并为多个版本控制选项的支持。它建立在Ruby on Rails的框架之上,支持跨平台和多种数据库。

基于Docker安装Redmine

Docker的安装不再赘述。安装后,运行下面的脚本安装Redmine.

#!/bin/sh
docker ps -a|grep redmine

if [ $? -eq 0 ]; then
    read -r -p "Are you sure to remove existed container and create another? [Y/n]" input
    case $input in
        [yY][eE][sS]|[yY])
        echo "start removing..."
        docker stop redmine
        docker rm redmine
        ;;

        [nN][oO]|[nN])
        exit 0
        ;;

        *)
        exit 0
        ;;
    esac
fi

docker run -d --name redmine \
        -p 8020:3000 \
        -v `pwd`/data:/usr/src/redmine/files \
        -e REDMINE_DB_MYSQL=172.17.0.1 \
        -e MYSQL_ENV_MYSQL_USER=${user} \
        -e MYSQL_ENV_MYSQL_PASSWORD=${password} \
        -e MYSQL_ENV_MYSQL_DATABASE=redmine \
        redmine:latest

官方版本无法映射Redmine的配置目录和插件存储目录,在修改配置和安装插件时不方便,可以通过手动修改实现宿主机访问配置目录和插件目录。

#进入容器
docker exec -it redmine /bin/bash

#移动配置文件目录和插件存储目录
cd /usr/src/redmine
cp config ./files/config
cp plugins ./files/plugins
ln -s /usr/src/redmine/files/config config
ln -s /usr/src/redmine/files/plugins plugins

#注意4.0版本的redmine中需要复制一份configuration.yml文件作为当前配置文件
cd config
cp configuration.yml.example configuration.yml
chown redmine:redmine configuration.yml

可以通过localhost:8020直接访问Redmine,生产环境中需要配置nginx反向代理,可以参考nginx安装配置相关博文进行配置。

配置项目管理环境

Docker版Redmine的默认管理员用户名和密码为admin  和admin。 点击登陆,通过默认用户名和密码进入Redmine. 首先按照团队的组成,分别添加用户,用户组和角色。用户组是为了方便管理不同项目中的用户设置的用户集合。

在Redmine中新建一个项目。填写各项内容,其中名称和标识必填。选择项目要使用的模块点击创建新建项目。

新建redmine项目

版本库配

版本库配置用于实现Redmine和代码仓库的系统,在本文中,我们通过实现Redmine和gitlab的集成,展示Redmine和第三方版本库协同的能力。Redmine和gitlab的集成需要安装插件Git Mirror.

Git Mirror的安装很简单,只需要将其下载到Redmine的plugin目录下,重启Redmine即可。

#下载Git Mirror插件
cd data/files/plugins
git clone https://github.com/linniksa/redmine_git_mirror.git

#重启Redmine
docker restart redmine

在管理->插件->Git Mirror中配置插件。

配置GitMirror插件

然后需要在Redmine的系统配置(管理->配置->版本库标签)中启用GitMirror源代码管理。同时,开启版本库管理的WebService,实现gitlab的webhook访问。下面的配置项中,网页服务API密钥需要在后面配置gitlab时使用。勾选允许引用/修复所有其他项目的问题和激活时间日志。他们的作用是在在commit message中使用上一项定义的关键字实现git提交和redmine issue的关联,如 refs:#123 表示将本次提交关联到redmine的123号任务,和在commit message中设置当前提交耗时记录,方式为 Implement feature #1234 @2h 或者 Implement feature #1234 @15m。最后一个设置框用于自定义关键字,实现commit message控制redmine中的issue状态,比如下图中预设的已关闭,在在commit message中的用法为: ok:#123 或 start #123。

配置好之后,在之前新建的项目下点击配置,开始新建版本库。其中,源代码管理工具选择GitMirror, 勾选主版本库,可以在导航栏显示版本库标签,方便以后进入。标识是版本库的名字,可以随意填写一个。URL是Git仓库的地址,如果是公共库,可填写Http,Https或者SSH协议的仓库地址。如果是私有库,只能填写SSH协议的仓库地址,并需要在Redmine容器中配置Git仓库的免密访问(参考SSH免密访问配置,注意配置时使用redmine用户,而非root用户)。

版本库配置

配置完成后,点击版本库标签。如果版本库中显示404,则说明Redmine没有对应的文件访问权限,可到库路径处,使用chmod命令添加读取和执行权限。配置完成后,就可以在Redmine的版本库选项卡中看到git的提交历史记录了。

版本库中的修订记录

代码审查配置

Redmine_code_review是一个redmine用于代码审查的插件。

安装过程如下:

1. Copy the plugin into the plugins directory
2. Migrate plugin: rake redmine:plugins:migrate RAILS_ENV=production
3. Restart Redmine
4. Enable the module on the project setting page.
5. Goto Code Review setting tab and select the tracker for code reviews.

在第四步配置之前,需要先新建一个新的用于代码审查的跟踪标签。

新建代码评审跟踪标签

然后,在项目的信息页面勾选代码评审模块。

勾选代码评审模块

在代码评审标签下,配置代码评审跟踪的标签。

配置代码评审的跟踪标签

至此,配置完毕。使用时,进入版本库中,点击查看的文件名,即可显示文件内容,此时代码的行号旁边会有一个“添加评论按钮”,点击会出现一个填写评审意见的对话框。意见会以问题的形式出现在问题列表中,因此会跟其他问题一样,具有邮件通知,状态更改等功能。另外,还可在代码评审标签里查看所有的评审记录。

参考