Redmine 是 Issue Tracking 還是監控管理的工具?!

** 本文同步發表於 FB 社團-軟體設計鮮思維 **

Redmine, Redmine...,它是一套優秀的 Issue Tracking 工具,但是只要有管理階層介入,一切就都變了調。

我親眼見識過已經有好幾個單位的主管/CEO,利用它來做:

1. 開發時程控管,展現看起來很像一回事的甘蔗圖。

2. 更甚者,要開發人員在其上填寫 TimeSheet,老闆要量化監控每位工奴的工時紀錄 (即使小貓沒有幾隻,但老闆可是在乎得很每個人表面的量化)。

結果理應是開發者之間很好的開發溝通機制,針對最根本開發過程中會遇到的 Issue/Bug/Feature 作有效的紀錄/傳承/學習,更可以與版控系統其內程式碼的提交 (commit)流暢地建立關聯。

一旦淪落為監控/管理的工具,Issue Tracking 大致上就毀了~ 開發者就少有人會願意主動拋出 Issue,如此就遑論可以建立起平行的學習型組織了;即使老闆都這麼說-我尊重與鼓勵每位 Member 踴躍地拋出議題,讓團隊得以永續成長...。

Howto – 讓 Redmine Issues 關聯 Git Commit 訊息

關於 Redmine 如何將其 Issue (問題)關聯至 Git 的 Commit 訊息,需參考官方這一篇-Redmine Application Settings

* 在專案內,建立問題清單。

Redmine 問題清單

* 對所在的儲庫 (repository),執行提交 (commit)指令時,利用「# + 問題編號」關聯問題。預設的關鍵字有:

  • 參考問題:refs, references, IssueID。
  • 已修正問題:fixes, closes。

例如本次提交係參考問題2(Issue-2),所下的提交指令如下:

$ commit -m "the commit refs #2"
Redmine 問題清單

閱讀全文 »

HowTo-Redmine 整合 Git/GitHub

目的:

讓 Redmine 可以瀏覽位於遠端 Git Server 如 GitHub 儲庫每一次的提交 (commit)歷史資訊,並能達成 Redmine 的 Issue 與 Git Commit 關聯。

說明:

Redmine 僅能讀取位於 local 端的儲庫 (repository)內容,卻沒有支援透過 Git 協定連結位於遠端 Git Server 上的儲庫。

主要解決方案就是先在 local 端建立對遠端儲庫的鏡射 (mirror),然後透過以下三種方式之一:

  1. 建立批次檔,內容為可以提取更新遠端的儲庫內容 (ex. git fetch -q --all)並設定定期執行作業 (ex. cron)。可以參考此篇-HowTo keep in sync your git repository for redmine
  2. 在 GitHub 上所欲讀取的儲庫專案,在其設定 → Service Hooks 上啟動 Redmine,輸入包括 Remine 所在 Url、專案名稱、API Keys 等欄位資訊,並勾選相關執行選項。可以參考此篇-HowTo simply keep Redmine in sync with GitHub
  3. 在 Redmine 所在位置安裝 Redmine GitHub Hook plugin,並於 GitHub 上該儲庫專案新增一個 WebHook URL,填入 Remine 專案所在 Url 位置,由 GitHub 連結 Remine。

第一種方式最簡單,但並不自然,因為 Remine 所在機器需定期執行遠端儲庫更新作業,即使遠端儲庫內容並未更新;第二與第三種方式是屬於 publish-observe 合理的作法,當遠端儲庫 (GitHub)的內容被更新時,它會透過 service hook (擔任 event-handler)轉呼叫位於 Redmine local 端的儲庫來更新內容。

第二種方式的 service hook 是由 GitHub 這邊所提供的,Remine 並不需要安裝額外的 plugin。但我設定嘗試了好幾次卻無法達成更新 Redmine 所在儲庫內容,所以我這裡是採用第三種方式,由 Redmine 這裡提供 github hook plugin,再至 Github 設定 WebHook Url,透過 Web Service 達成兩端的同步。

實作步驟 -

閱讀全文 »

HowTo-安裝 Redmine 2.3.2@EC2-Ubuntu 12.04

關於如何申請 Amazon EC2 Free Tier (第一年免費),可以參考此篇-快速安裝 Amazon EC2 LAMP 環境 (EC2 Console)Amazon AWS EC2 LAMP Quickstart Guide

在創建 instance 時,我安裝的 OS 是預設的 Ubuntu LTS 12.04 64-bit (AMI ID: ami-70f96e40),伺服器地區為 US West (Oregon),選擇的方案當然是免費的 T1 Micro (630Mb RAM) Free Usage Tier,這僅對架設小型站台 (如 Redmine 等 Issue Tracking 系統)已是足夠了。

除了 Ubuntu 作業系統外,包括 AMP (Apache, MySQL, PHP), Git, Ruby, redmine 等,全都是需要透過 Putty 連線至 EC2 Console 安裝設定的 (當然,也要先設定好如何遠端連線)。千萬不要安裝 X-Windows 環境於 EC2,我曾試過,然後可以利用 FreeNX 透過 RDP 遠端遙控 EC2,但主記憶體吃了 580Mb,僅剩 10Mb 可茲利用 (有效記憶體僅為 590 Mb)。

至於為何不乾脆使用 BitNami Redmine Cloud Server,或直接安裝 BitNami Redmine Stack AMI (Amazon Machine Image) 映像檔就可以直接使用?因為沒有免費的糖果啦!直接使用 Bitnami Redmine Stack,每個月的租費至少需要 US$15,那就是買你懶得或不諳系統安裝的使用者的系統建置服務費的。為了省錢同時也練習一下關於 Linux 相關系統建置,一切還是自己來。

Redmine 是一套近兩年頗為歡迎的專案管理工具,可以參考此篇-Redmine 基本功能介紹。Remine 支援絕大宗的版控系統 (包括 Git, Subversion, CVS 等),使得更輕易整合關於 Issue 與 Commit 訊息。

Redmine 是使用 Ruby on Rails Framework 撰寫開發的系統,所以作業系統需要具有可執行 Ruby 的直譯環境,當然也需要有 Web Server (支持 Apache, Nginx) 與 資料庫系統 (支持 MySQL, PostgreSQL),才可以完整運作 Redmine。

這裡列出包括作業系統與所需要建置的應用系統:
 o Ubuntu LTS 12.04 64-bit。
 o Apache 2.2。
 o MySQL 5。
 o Ruby 1.9.3 (使用 RVM 安裝)。
 o Redmine 2.3.2 (2013-07-14)。

閱讀全文 »

軟體思維顧問

專職軟體輔導與教育訓練的獨立顧問。輔導企業資訊單位如何有效組織系統開發與維護;輔導開發人員達成有效的專業分工。傳授如何把軟體作軟 (Keeping Software Soft)的技能,得以提昇系統的彈性/延展,並進而創造系統的再利用價值。

Personal