Home | 簡體中文 | 繁體中文 | 雜文 | 打賞(Donations) | ITEYE 博客 | 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