您的位置:首页 > 运维架构 > Linux

CentOS7安装Git与RedMine及整合(提交代码自动更新RedMine状态)

2016-11-28 15:48 771 查看
前言

        最近公司想把SVN上的代码,全部迁移到现在更流行的Git服务器上去。由于公司的项目代码都属于商业机密,所以不能选择开源的GitHub,而不开源是需要Money的,而公司又正好有AWS服务器,所以就交给我任务,搭建Git服务器,顺便还有Redmine课题管理工具,包括他们之前的整合。做了种种尝试,也花也不少时间,终于最后在CentOS7上实现了两个服务器的运用及整合。闲话不多说,开始。

一,安装Git

      Git的实现有好多软件实现,但为了方便Web管理,这里选择B/S形式的GitLab。在网上找到资料发现bitnami做过GitLab的Linux一键安装包,下载回来安装也确实很顺利,在测试时候发现SSH方式的代码提交没有问题,而HTTP方式无论如何都不能正确连接。

参照文章:http://www.cnblogs.com/linsanshu/p/5512038.html

下载地址:https://bitnami.com/stack/gitlab/installer

并不清楚是不是因为我什么地方配置错误,但是其实一键安装并没有多少配置的地方,目前的版本是【GitLab 8.14.0-0 (64-bit)】并不能正确使用。

      于是就直接使用GitLab官方安装方式,其实也非常简单,几条命令就可以搞定。

官方安装教程:https://about.gitlab.com/downloads/#centos7

第2步里是两种安装方法,在线与离线,使用其中一种就可以了。安装之后直接访问机器的IP地址或者网址,第一次进入出现的是修改密码画面,修改的是管理员的密码。设定好之后就可以进入Git服务器管理页面了,用户名是:root

      其实整个安装非常简单,走的大大的弯路就是之前一直在使用一键安装包进行了无数遍的安装,但是每一次都是HTTP的方式无法使用,以为哪里配置错误,一直在解决这个问题,所以浪费了好多时间。安装就这么愉快的完成了,这里给出一些简单的使用教程。

Gitlab+eclipse+ssh连接

Eclipse+GitLab图文配置

二,安装Redmine

      Redmine的官网安装教程看起来就没有那么“友好”了,感觉非常繁琐的样子,不过我想到了bitnami这个做各种程序一键安装包的网站,虽然刚才做的GitLab的安装包安装之后不能用吧,但是也不至于其它的也不能用吧,哈哈。

下载地址:https://bitnami.com/stack/redmine

这个下载之后一路安装就可以了,直接申请一个Gmail在安装过程中就把Gmail配置进去,这样以后有问题票的时候系统就会自动给用户发送邮件了。

      安装过程中会提示端口80不能使用,自动填写了81端口,这是因为刚才安装GitLab的时候,Apache已经把80端口给占用了,这里选择3000端口。81也可以,就是没有3000好看,哈哈。安装过程很简单,但是可能会遇到几个问题

1,FATAL ERROR: please install the following Perl modules before executing /usr/bin/mysql_install_db
这是由于没有安装Data-Dumper所致,安装以下软件包

yum install -y perl-Data-Dumper


然后再一次初始化数据库

/usr/bin/mysql_install_db


2,安装过程在填写管理员姓名的时候不能出现汉字,否则会安装失败,这是由于名字会被添加到数据库初始化的脚本里,但是添加时候会变成乱码,所以会在报一个数据库初始化失败的错误,具体不记得了,是把一个表不存在。填写名字的时候请填写英文,这个等登陆进去之后还可以再改。参考链接

三,整合

      这个是走弯路走得最多的地方了,因为网上的文章有老有新,对应的版本也都不一样,这个文章说这么办,那个说那么办,做了各种各样的尝试,差点就抓狂了。比如有的文章说请使用redmine_github_hook这个插件,但是查看这个插件的官网发现,这个是好多好多年前的插件,而且是给github用的,并不是gitlab,但是查了好多文章都说,gitlab也一样可以正常使用。但是我万般尝试后发现,真的并不能使用。于是发现还有另外一个插件叫redmine_gitlab_hook,一看名字感觉,哎呀我擦嘞,这不正是我要找的东西吗,驴唇刚好对得上马嘴啊,但是尝试了无数次后发现也并没有神马卵用。在我都要崩溃的时候,然后发现一篇日本小哥写的文章,当时就感觉是这么多乱七八糟文章中的一股泥石流……啊不,清流……闲话少说,我简单的总结一下他的做法。

1,在Redmine中指定Git项目的仓库位置

在项目的设定仓库里新建一个仓库,路径就指定到在Git里面建立好的项目的路径,但是这个路径并不是HTTP的路,而是这个仓库在服务器上的文件路径

/var/opt/gitlab/git-data/repositories/[your group]/[your project].git
注意的是:这些所有文件夹的路径,都必须是可以访问的,也就是在linux的权限里,最后“其它人”的权限一定得有"x"否则这个文章夹都进不去,更不用说读取里面的内容的。可以用以下命令实现

sudo chmod -R o+x git-data
在/var/opt/gitlab/目录下面运行就可以了,其它的权限如果用上面的安装的话就不用变了,都是有的。

      安装完成之后,在Redmine项目的仓库(应该是这个吧,没用过中文版的)选项卡就可以看到Git的提交历史记录啦!下面介一张图



2,设置Git的问题票管理为Redmine

      这个比较简单参考这个官方链接也可以。

      在管理员登录Git后

Admin area → Service Templates → Redmine
Active: Check
Description: Redmine issue tracker
Project url: http://dev.hoge.jp/projects/[project_id] Issues url: http://dev.hoge.jp/issues/:id New issue url: http://dev.hoge.jp/projects/[project_id]/issues/new
把里面的URL和[project_id]都换成自己的就可以了,这样以后的问题票全部都会跳转到Redmine了,不过也就仅仅是一个跳转的功能而已……

3,Git中设定WebHooks,Push的同时Redmine问题票自动更新状态

      对,重点就是这一部分了,之前走的那么多弯路都是为了实现这个效果。这里也本来就有一些官方文档可以参考。

      先生成API KEY,位置是【管理】->【仓库】(还是借图一张)



点那个生成key就可以生成了。这里除了生成这个key之外,还做了两件事,第一就是在参照用的keyword处添加了星号“*”,原因在这里有写,反正加上就是了。第二件事是在最下面触发的地方加上了一些key words,以准备一会提交代码的时候识别这些key
words自动改变问题票的状态。

      最后一步就在在Git处设置好WebHooks的网址,

      Settings → Web Hooks
 → 「Add Web Hook」

      然后填入你自己的网址:http://[你的网址]/sys/fetch_changesets?key=[刚才生成的APIkey]

可以去测试了,在往Git提交代码的时候填入“fixed #1”,这时候你就会发现问题票#1已经变成了80%进度了,当然前提是你真的有#1这个票。(借图)



最后小哥说发现这些提交人都是匿名的,然后他也试了好多办法,最后发现是因为提交代码的时候提交人的名字和邮件地址不一致导致的,也就是说到这里已经配置完成。

再说一下遇到的几个问题吧,有一个是提交代码的时候说权限不够,这个是由于往项目里加人的时候默认的权限是Guest,改成Developer就可以了,链接在这里

还有一个问题是这样的,安装Redmine的时候不是图形界面吗,但是在AWS上装的CentOS7默认的并没有图形界面,这亲就需要在上面安装图形界面,然后再安装一个VNCServer才能远程图形界面控制,以便安装Redmine,也找了好多篇文章,最后找到了一个正确的。

Configure VNC Server on CentOS 7 / RHEL 7

最后

      一直想把这个写出来了,因为自己走了好多的弯路,写也来也许能让一两个人少浪费点时间就够了,哪怕少走一步弯路也是好的。其实上面的这些配置真的都不难,只是能找到的资料都是太老的,或者说的不对的,这还是google找到的,要是百度就……真希望当遇到问题的时候,能有那么一个“人”告诉你,这个问题要大约怎么解决,然后丢给你一篇参考资料。不过这样的"人"肯定是不存在的,所以问题永远都有,最重要的是解决问题的思路。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐