Home | 简体中文 | 繁体中文 | 杂文 | 打赏(Donations) | OSChina 博客 | Facebook | Linkedin | 知乎专栏 | Search | About

部分 XIII. 项目管理工具

project management tool

目录

171. TRAC
171.1. Ubuntu 安装
171.1.1. source code
171.1.2. easy_install
171.1.3. Apache httpd
171.2. CentOS 安装
171.2.1. trac.ini
171.2.2. standalone
171.2.3. Using Authentication
171.2.4. trac-admin
171.2.4.1. Permissions
171.2.4.2. Resync
171.3. Project Environment
171.3.1. Sqlite
171.3.2. MySQL
171.3.3. Plugin
171.3.3.1. AccountManagerPlugin
171.3.3.2. Subtickets
171.4. trac.ini
171.4.1. repository
171.4.2. attachment 附件配置
171.5. trac-admin
171.5.1. adduser script
171.6. FAQ
171.6.1. TracError: Cannot load Python bindings for MySQL
171.7. Apache Bloodhound
172. Redmine
172.1. CentOS 安装
172.2. Redmine 运行
172.3. 插件
172.3.1. workflow
173. TUTOS
174. Open Source Requirements Management Tool

建模工具

常用的项目管理工具

1. Gitlab 项目管理

实施DEVOPS首先我们要有一个项目管理工具。

我建议使用 Gitlab,早年我倾向使用Trac,但Trac项目一直处于半死不活状态,目前来看Trac 对于 Ticket管理强于Gitlab,但Gitlab发展的很快,我们可以看到最近的一次升级中Issue 加入了 Due date 选项。Gitlab已经有风投介入,企业化运作,良性发展,未来会超越Redmine等项目管理软件,成为主流。所以我在工具篇采用Gitlab,BTW 我没有使用 Redmine,我认为 Redmine 的发展方向更接近传统项目管理思维。

软件项目管管理,我需要那些功能,Ticket/Issue管理、里程碑管理、内容管理Wiki、版本管理、合并分支、代码审查等等

关于Gitlib的安装配置请参考 http://www.netkiller.cn/project/project/gitlab/index.html

1.1. GitLab

https://github.com/gitlabhq

GitLab是一个利用 Ruby on Rails 开发的开源应用程序,实现一个自托管的Git项目仓库,可通过Web界面进行访问公开的或者私人项目。

它拥有与Github类似的功能,能够浏览源代码,管理缺陷和注释。可以管理团队对仓库的访问,它非常易于浏览提交过的版本并提供一个文件历史库。团队成员可以利用内置的简单聊天程序(Wall)进行交流。它还提供一个代码片段收集功能可以轻松实现代码复用,便于日后有需要的时候进行查找。

GitLab 5.0以前版本要求服务器端采用 Gitolite 搭建,5.0版本以后不再使用 Gitolite ,采用自己开发的 gitlab-shell 来实现。如果你觉得安装麻烦可以使用 GitLab Installers 一键安装程序。

1.1.1. 安装 GitLab

yum localinstall -y https://downloads-packages.s3.amazonaws.com/centos-6.6/gitlab-ce-7.10.0~omnibus.2-1.x86_64.rpm

gitlab-ctl reconfigure

cp /etc/gitlab/gitlab.rb{,.original}
		

停止 GitLab 服务

# gitlab-ctl stop
ok: down: logrotate: 1s, normally up
ok: down: nginx: 0s, normally up
ok: down: postgresql: 0s, normally up
ok: down: redis: 0s, normally up
ok: down: sidekiq: 1s, normally up
ok: down: unicorn: 0s, normally up
		

启动 GitLab 服务

# gitlab-ctl start
ok: run: logrotate: (pid 3908) 0s
ok: run: nginx: (pid 3911) 1s
ok: run: postgresql: (pid 3921) 0s
ok: run: redis: (pid 3929) 1s
ok: run: sidekiq: (pid 3933) 0s
ok: run: unicorn: (pid 3936) 1s
		

配置gitlab

# vim /etc/gitlab/gitlab.rb
external_url 'http://gitlab.example.com'		
		

SMTP配置

gitlab_rails['gitlab_email_enabled'] = true
gitlab_rails['gitlab_email_from'] = 'openunix@163.com'
gitlab_rails['gitlab_email_display_name'] = 'Neo'
gitlab_rails['gitlab_email_reply_to'] = 'noreply@example.com'

gitlab_rails['smtp_enable'] = true
gitlab_rails['smtp_address'] = "smtp.163.com"
gitlab_rails['smtp_user_name'] = "openunix@163.com"
gitlab_rails['smtp_password'] = "password"
gitlab_rails['smtp_domain'] = "163.com"
gitlab_rails['smtp_authentication'] = "login"		
		

任何配置文件变化都需要运行 # gitlab-ctl reconfigure

WEB管理员

# Username: root 
# Password: 5iveL!fe		
		

1.1.2. GitLab Runner

curl -L https://packages.gitlab.com/install/repositories/runner/gitlab-ci-multi-runner/script.rpm.sh | sudo bash
sudo yum install gitlab-ci-multi-runner
		

进入 CI 配置页面 http://git.netkiller.cn/netkiller.cn/www.netkiller.cn/settings/ci_cd

Specific Runners 你将看到 CI 的URL和他的Token

Specify the following URL during the Runner setup: http://git.netkiller.cn/ci

Use the following registration token during setup: wRoz1Y_6CXpNh2JbxN_s

现在回到 GitLab Runner

# gitlab-ci-multi-runner register
Running in system-mode.                            
                                                   
Please enter the gitlab-ci coordinator URL (e.g. https://gitlab.com/):
http://git.netkiller.cn/ci
Please enter the gitlab-ci token for this runner:
wRoz1Y_6CXpNh2JbxN_s
Please enter the gitlab-ci description for this runner:
[iZ62yln3rjjZ]: gitlab-ci-1
Please enter the gitlab-ci tags for this runner (comma separated):
test
Whether to run untagged builds [true/false]:
[false]: 
Registering runner... succeeded                     runner=wRoz1Y_6
Please enter the executor: docker, docker-ssh, shell, ssh, virtualbox, docker+machine, docker-ssh+machine, kubernetes, parallels:
shell
Runner registered successfully. Feel free to start it, but if it's running already the config should be automatically reloaded! 
		

回到 Gitlab 页你将看到 Pending 状态变成 Running 状态

升级 GitLab Runner

yum install gitlab-ci-multi-runner		
		

1.1.3. 用户管理

初始化GitLab,进入Admin area,单击左侧菜单Users,在这里为gitlab添加用户

1.1.4. 组管理

初始化GitLab组,我比较喜欢使用“域名”作为组名,例如example.com

1.1.5. 项目管理

创建项目,我通常会在组下面创建项目,每个域名对应一个项目,例如www.example.com,images.example.com

版本库URL如下

http: http://192.168.0.1/example.com/www.example.com.git
ssh: git@192.168.0.1:example.com/www.example.com.git
		

1.1.6. FAQ

1.1.6.1. gitolite 向 gitlab 迁移

早期gitlab使用gitolite为用户提供SSH服务,新版gitlab有了更好的解决方案gitlab-shell。安装新版本是必会涉及gitolite 向 gitlab 迁移,下面是我总结的一些迁移经验。

第一步,将gitolite复制到gitlab仓库目录下

# cp -r /gitroot/gitolite/repositories/* /var/opt/gitlab/git-data/repositories/
			

执行导入处理程序

# gitlab-rake gitlab:import:repos
			

上面程序会处理一下目录结构,例如

进入gitlab web界面,创建仓库与导入的仓库同名,这样就完成了导入工作。

[提示]提示

转换最好在git用户下面操作,否则你需要运行

# chown git:git -R /var/opt/gitlab/git-data/repositories				
				
1.1.6.2. 修改主机名

默认Gitlab采用主机名,给我使用代理一定麻烦

git@hostname:example.com/www.example.com.git
http://hostname/example.com/www.example.com.git
			

我们希望使用IP地址替代主机名

git@172.16.0.1:example.com/www.example.com.git
http://172.16.0.1/example.com/www.example.com.git
			

编辑 /etc/gitlab/gitlab.rb 配置文件

external_url 'http://172.16.0.1'
			

重新启动Gitlab

# gitlab-ctl reconfigure
# gitlab-ctl restart
			

1.2. 创建用户

过程 60. 企业内部使用的 Gitlab 初始化

  1. 关闭在线用户注册

  2. Step 3.

    1. Substep a.

    2. Substep b.

1.3. 创建组与项目

过程 61. Gitlab 初始化 - 创建组

  1. 点击 New Group 按钮新建一个组,我习惯每个域一个组,所以我使用 netkiller.cn 作为组名称

  2. 输入 netkiller.cn 然后单击 Create group

  3. 组创建完毕

创建组后接下来创建项目

过程 62. Gitlab 初始化 - 创建项目

  1. 单击 New Project 创建项目

  2. 输入 www.netkiller.cn 并点击 Create project 按钮创建项目

  3. 项目创建完毕

1.4. 分支管理

起初我们应对并行开发在Subversion上创建分支,每个任务一个分支,每个Bug一个分支,完成任务或修复bug后合并到开发分支(development)内部测试,然后再进入测试分支(testing)提交给测试组,测试组完成测试,最后进入主干(trunk)。对于Subverion来说每一个分支都是一份拷贝,SVN版本库膨胀的非常快。

Git 解决了Svn 先天不足的分支管理功能,分支在GIT类似快照,同时GIT还提供了 pull request 功能。

我们怎样使用git 的分支功能呢? 首先我们不再为每个任务创建一个分支,将任务分支放在用户自己的仓库下面,通过 pull request 合并,同时合并过程顺便code review。

master:是主干,只有开发部主管/经理级别拥有权限,只能合并来自testing的代码

testing: 测试分支,测试部拥有权限,此分支不能修改,只能从开发分支合并代码。

development:开发组的分支,Team拥有修改权限,可以合并,可以接受pull request, 可以提交代码

tag 是 Release 本版,开发部主管/经理拥有权限

分支的权限管理:

master: 保护

testing:保护

development:保护

过程 63. Gitlab 分支应用 - 创建分支

  1. 首先,点击左侧 Commits 按钮,然后点击 Branches 按钮进入分支管理

  2. 点击 New branch 创建分支

    在 Branch name 中输入分支名称,然后点击 Create branch 创建分支

  3. 分支已经创建

重复上面步骤,完成development分支的创建。

保护分支:锁定分支,只允允许合并,不允许提交

过程 64. 保护分支

  1. master

    testing

  2. Step 2.

    1. Substep b.

1.5. Issue

Issues 任务

1.5.1. Milestones 里程碑

敏捷开发中可以每周一个里程碑,或者每个月一个里程碑。

1.5.2. Labels 标签

通常定义四个状态,开发,测试,升级,完成

1.6. 代码审查

1.7. 合并

1.8. WebHook