3C科技 娛樂遊戲 美食旅遊 時尚美妝 親子育兒 生活休閒 金融理財 健康運動 寰宇綜合

Zi 字媒體

2017-07-25T20:27:27+00:00
加入好友
軟體開發過程中常需要追蹤 Bug 或工作狀態,我們也常會用到 Trac 或 Redmine 之類的專案管理系統,此類軟體專案管理系統除了 Task 安排之外,最重要的就是可以結合版本控制系統進行程式碼的修訂整合。有些情況我們在開發過程中不時要上去系統回報與更新狀態,某些研發團隊甚至還被要求必須記錄那該死的工作時數(當然這麼做是有特別原因...)。但是對於開發者而言,這些繁瑣的事務性工作都是打擾開發的因子,我們最喜歡的還是「自動」、「自動」和「自動」。相對於硬體的自動化,軟體在實現自動化顯得方便多了。工作流程自動化是很重要的,如果能讓開發管理工作減少到只要提交程式碼,那就是最高的境界囉。 Redmine Rest API 在還沒有達到最高境界之前,我先來介紹如何用 GitHook 整合 Commit Message 到 Redmine 工作單中。Redmine 這套優秀的專案管理系統採用 Ruby on Rails 開發,預設就內建了基本的 Rest API,讓我們可以很輕易地直接透過 RESTful Web Service 與其進行整合 (對 REST 感到陌生的朋友可以參考這篇文章)。Redmine API 在呼叫時必須傳入 API Key,透過 API Key 呼叫 Web Service 就如同已經登入的使用者,包含存取權限都是一樣的。每一位 Redmine 使用這都可以取得自己的 API Key,再登入 Redmine 後進入「我的帳戶」就可以取得,畫面如下: 上圖這字串就是 API Key,之後就可以拿來呼叫 Web Service 囉。 Git Hook 機制 其實從以前到現在的版本控制系統都擁有 Hook 機制與介面,好讓我們加入自己的功能來擴充版本控制系統。Git Hook 目前已經提供非常完善的 Hook 機制,我們預計想在開發者 Push 程式碼時自動解析 message 並且透過上述的 Redmine API 回應的對應的 Issue 中,因此今天會介紹到 pre-receive Hook。Hook 其實都是一些 Script,我們可以在 Repository 下的 hooks 目錄看到很多 sample 程式碼,大部分種類的 Git Hook 皆是透過「命令結束回傳值 (Return Value / Exit Code)」來確定是否中斷 Git 程序 (非零即中斷),Script 的 STD OUT 就等同於 Git 輸出訊息,用來進行各種檢查與系統整合相當方便。 先修改 /hooks/pre-receive 檔案,預設不存在,請自行建立即可。 vim your_repos/hooks/pre-receive 加入以下內容,這裡將每一個 Push Rev 送給 redmine-add-change-log.php 這支程式來處理,稍等我們會在這支檔案實做整合 Redmine 的程式碼 (GitHub)。   1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 #!/bin/bash   # ignore tag push if [[ "$3" == "refs/tags/"* ]]; then   exit 0 fi   while read oldrev newrev refname do     for rev in $(git rev-list ${oldrev}..${newrev})     do         log=`git show -s --format="%s" $rev`         author=`git show -s --format="%an" $rev`         ./hooks/redmine-add-change-log.php "${log}" "${author}" "{rev}"         if [ $? != 0 ]         then             exit $?         fi     done done   exit 0 接著我們來編輯 redmine-add-change-log.php 這支檔案 (GitHub) vim your_repos/hooks/redmine-add-change-log.php 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 #!/usr/bin/env /usr/bin/php

本文由toright提供 原文連結

寫了 5860316篇文章,獲得 23313次喜歡
精彩推薦