用 GitHub 與其他服務進行軟體生命專案管理

更新於 2024/10/10閱讀時間約 9 分鐘
圖片來源:www.freepik.com

圖片來源:www.freepik.com

這是 2016 年的舊文重新整理,這幾年應該很少聽到軟體生命週期管理了,裡面的部分概念被其他更夯的詞取代了,像是 DevOps,所以我在一開頭便選了張比較接近潮流的圖片,不過說真的,在這個領域,常常有很多新名詞出現,但真正落實的又有多少呢?

前言

過去只把 GitHub 當成免費的 code repository,省去自己架設 server 的麻煩,但用過 CocoaPod 開發 iOS 專案後,發現很多 third-party library 不只把 GitHub 當成 code repository 而已,還是發布用的空間。最近撥了一點時間研究 GitHub 發現:GitHub 幾乎可以提供軟體生命週期管理所需的各種服務了,想當初修軟體生命週期這門課時,花不少時間研究 IBM® Rational Team Concert™,現在很多服務都可以在 GitHub 上使用,不用再自己架 server 了。

會開始研究是因為自己偶而會把一些簡單的工具類 (Utility) 程式放在 GitHub 上,但也只限於把程式碼丟上去而已,對於程式碼的狀態與管理就很少去處理,事實上很多事情都可以自動化,以自己的 SortDescriptor 專案為例,現在只有要 commit 都會自動觸發 Travis CI 進行建置和測試,另外還會跑 code coverage 工具產生測試涵蓋率的報表。有趣的是,還可以把所有的狀態都用成 badge 顯示在主頁上,因此只要進到專案首頁就會知道:最後一次建置是成功的,然後 code coverage 達到 100%。

軟體生命週期管理

回到軟體生命週期管理,若是小的團隊或是新創團隊,在開發軟體專案時,我個人覺得軟體生命週期管理中,較重要的有幾個環節,以及可以一起搭配使用的服務:

  • 專案管理 or 軟體開發流程管理 (Trello)
  • 持續整合 (Travis CI)
  • 版本控管 (GitHub)
  • 議題追蹤 (GitHub)
  • 建構管理 (GitHub 搭配 JCenterMaven Central 或 Artifactory,以 Java 專案為例)

GitHub 提供版本控管和議題追蹤這二個部分的功能,搭配 GitHub 的 Webhooks & Services 整合第三方的服務,像剛剛提到的,在 GitHub 整合 Travis CI,當有任何人 commit 上去就會觸發,根據 .travis.yml 腳本的設定,可以只跑測試,或是在進行 tag 的時候,將網站部署到 server 或是將套件部署到 JCenter,由於 .travis.yml 腳本也跟著一起版控,所以也比較不會有在 Jenkins 上可能會出現建置設定與程式碼不相容的情況,例如程式碼最新的版本需要新的參數設定與環境,但某個較舊的 branch 或 tag 必須使用舊的環境,否則會建置失敗的情況。這正好是滿足建置管理中,確保所有會影響到建置的環境都需要進行版控與追蹤的目標。

raw-image

建構管理除了上述建置腳本的版控外,還有一個是第三方套件的版控,軟體通常都不是一個團隊能全部自己開發的,大多數情況下都會用到第三方套件,因此在 Java 的社群中,Maven 以及最近很紅的 Gradle 都有提供建構管理的相關功能,以 Maven 來說,pom.xml 檔指定第三方套件的版本,然後 pom.xml 檔隨著程式碼一起版控,建置時,根據 pom.xml 的設定, Maven 下載並使用指定的第三方套件健行建置,不會有誤用到不相容版本第三方套件的問題。

但當開發團隊開發的軟體越多時,通常會累積不少可重複使用的程式碼,此時,怎麼管理這些內部套件呢?假設這些內部套件是可以給外面使用的,那較單純,直接在 JCenter 註冊一個 repository,然後在 pom.xml 檔中加上發布的 plug-in 設定後,就可以將套件的 JAR 檔放到 JCenter 讓大眾使用, JCenter 在 Google 的加持下 (Android 套件的官方 Repository),讓不少人因無法證明擁有 group ID 所有權 (通常是要花錢去註冊 domain name) 的團隊,從 Maven Central 轉往 JCenter。

如果是私有的套件呢?可以選擇在團隊內用 Artifactory 建立一個 repository server 來管理這些套件,server 建置好後,一樣可以在 pom.xml 檔中加入布署的 plug-in,差別只是發布的位置是內部的 server。Artifactory 除了可以當套件管理的 repository 外,還可以充當外部 repository 的快取,在下載大量相依的第三方套件時 (一般來說第三方套件會相依其他第三方套件,導致要下載一大串第三方套件),縮減不少時間和網路用量。

此外,建構管理中還包含文件的管理,軟體還會需要一些文件,像是系統架構說明、設計說明等等,GitHub 的 Wiki 可以扮演文件庫的功能,同樣也能進行版本控管,只要有心,文件與程式是可以一起追蹤並管理的。例如在 merge 回 master 時,就需要同時審查程式碼與文件是否一致,若一致才能 merge 回 master 上,如此就可以確保 master 上的程式碼和文件是一致的,但這是 policy 的部分,要視團隊的需求決定是否這麼做,但就工具上是沒問題的。

在軟體開發流程的管理上,不管是使用 Scrum 或是 Kanban 方法,通常都會建議使用實體看板,但有時候電子看板還是有一些好處,像是和不同工作地點的人一起合作時就能夠協同使用。現在有蠻多雲端服務可以用的,像是 JIRA、 TargetProcess 都可以與 GitHub 一起使用,不過上述的都算是需要付費的服務 (免費有些限制),若只是要個簡單的看板,其實可以使用 Trello,建立一個看板,然後建立 Product Backlog、Sprint Backlog、In Progress 和 Done 等列表 (下圖中的 Deployed 是針對網站服務的專案額外調整增加的,代表程式已經部署到 server 上了,可以用了) 就可以拿 Trello 當成 Scrum 的看板了。

raw-image

雖然 Trello 沒有 user story 和 task 的概念,但每張 card 都還是可以有 to-do list,所以可以用 card 來描述 user story 然後在每張 card 中用 to-do list 的項目描述 task,就像下圖一樣,唯一可惜的是, to-do list 無法像 card 一樣在看板的 list 中移動作爲狀態切換 (另一點可惜的是 to-do list 的項目也無法出現在 PomoDone 中使用),但在看板上是可以看到該 story 的 task 完成的數量,還算可以接受。

raw-image

到這邊,等於是以 GitHub 為中心,整合了許多網路上的服務,完成了軟體生命週期管理中較為重要的幾個項目。當然,當團隊或公司有一定的規模後,可以選擇整套的軟體生命週期管理解決方案,像是微軟的 Team Foundation Server 或是 Atlassian,只要花錢就能夠獲得完整且充分整合的方案,但新創時組合眾多免費服務的土砲也是一種不錯的選擇。而且因為是自己組合的,常常能組合出整套 solution 所無法提供的新玩法。

總結

搞懂 Travis CI 的設定檔怎麼寫,怎麼串連 Travis CI 與 GitHub 與 codecov,如何註冊 JCenter repository (還發生過註冊錯的 group ID,得請管理員幫我改一些東西),以及和 Maven Central 打交道 (最後當然是失敗收場,因為我不想花錢去註冊一個沒在使用的網域),雖然都是一些麻煩瑣碎的事,但只要完成了,卻可以提高整體的開發效率,是蠻值得投資的基礎建設,即使不是用 GitHub,像是 GitLab 或是 BitBucket 等服務都有類似的組合可以搭配使用,因此,即使在公司內部,也能組合出這樣的環境 (過去就曾幫公司組合了 GitLab + GitLab CI + Artifactory + Trello Kanban)。


後記

印象中 2013 出社會時,業界還有不少工程師,不管是不是科班出身的,連程式碼的版本控管都做不好,更別說有落實 CI/CD 了。因此 2018 年受邀回母校北科擔任業師時,特別要求上課的學生需要將實習寫的程式放到 GitHub,並且要能在 CI 上通過測試。多年過去,最近面試時,沒有用過版本控管的人已經很少了,大多數也有使用 CI/CD,但是否跑得很順,稍微問仔細一點就知道了情況,不過,和剛出社會時相比,我覺得算是進步很多了。


參考資料

avatar-img
53會員
104內容數
這是從 Medium 開始的一個專題,主要是想用輕鬆閒談的方式,分享這幾年軟體開發的心得,原本比較侷限於軟體架構,但這幾年的文章不僅限於架構,也聊不少流程相關的心得,所以趁換平台,順勢換成閒談軟體設計。
留言0
查看全部
avatar-img
發表第一個留言支持創作者!
Spirit的沙龍 的其他內容
在上回,探討 WIP Limit 的設置,但如果當被 WIP Limit 卡住時,直覺的想法是放寬 WIP Limit 而不是想著如何協助他人讓工作順利完成,那就失去使用看板方法的意義了,這回將探討如何讓團隊自覺與改善。
在上回,我們已經把工作視覺化成看板,但這只是第一步,要想用看板方法優化工作的流程,我們得設置 WIP 限制,讓團隊開始知道瓶頸在哪裡,然後才能開始改善,這一回就來看 WIP 限制的設置。
在上一回 說明看板方法相關的精實精神與原則與實務,這一回則是來設計看板,包含看板的範圍應該多廣、有哪些狀態、工作的顆粒度,以及 DoD 的呈現。
這本書以小說形式,把建構管理、看板方法、限制理論、三步工作法及 DevOps 以活靈活現的例子串在一起,十分有趣。很推薦給所有從事 IT 相關產業的工程師。
當初上完課,很激勵地寫下當時的心得,不太符合現在閱讀的習慣,所以重新整理成較適合閱讀的系列作,這篇將主要分享看板方法的精神與原理,後續會陸續更新,第二篇則是視覺化的作法,第三篇是 WIP Limit 的使用,最後是落實與其他感想。
Both, R&D and agile tackle the uncertainties in a nontraditional manner influenced by the trial-and-error process.
在上回,探討 WIP Limit 的設置,但如果當被 WIP Limit 卡住時,直覺的想法是放寬 WIP Limit 而不是想著如何協助他人讓工作順利完成,那就失去使用看板方法的意義了,這回將探討如何讓團隊自覺與改善。
在上回,我們已經把工作視覺化成看板,但這只是第一步,要想用看板方法優化工作的流程,我們得設置 WIP 限制,讓團隊開始知道瓶頸在哪裡,然後才能開始改善,這一回就來看 WIP 限制的設置。
在上一回 說明看板方法相關的精實精神與原則與實務,這一回則是來設計看板,包含看板的範圍應該多廣、有哪些狀態、工作的顆粒度,以及 DoD 的呈現。
這本書以小說形式,把建構管理、看板方法、限制理論、三步工作法及 DevOps 以活靈活現的例子串在一起,十分有趣。很推薦給所有從事 IT 相關產業的工程師。
當初上完課,很激勵地寫下當時的心得,不太符合現在閱讀的習慣,所以重新整理成較適合閱讀的系列作,這篇將主要分享看板方法的精神與原理,後續會陸續更新,第二篇則是視覺化的作法,第三篇是 WIP Limit 的使用,最後是落實與其他感想。
Both, R&D and agile tackle the uncertainties in a nontraditional manner influenced by the trial-and-error process.
你可能也想看
Google News 追蹤
Thumbnail
*合作聲明與警語: 本文係由國泰世華銀行邀稿。 證券服務係由國泰世華銀行辦理共同行銷證券經紀開戶業務,定期定額(股)服務由國泰綜合證券提供。   剛出社會的時候,很常在各種 Podcast 或 YouTube 甚至是在朋友間聊天,都會聽到各種市場動態、理財話題,像是:聯準會降息或是近期哪些科
Thumbnail
透過勞動力槓桿,我們能運用技術自動化來減少重複性工作,集中精力於更具創造性的任務。資本槓桿則幫助我們將有限資源轉化為更大的財務回報,無論是通過投資還是自我提升。而無邊際成本產品的槓桿效應,讓我們可以創建出一次投入、多次收益的數位產品,實現長期收入。這些策略不僅提升工作效率,也能帶來更多的生活自由。
Thumbnail
隨著科技的發展和生活方式的變化,我們面臨著各種健康挑戰 生活節奏的加快和社會壓力的增加,焦慮、抑鬱等心理健康問題變得普遍。 快餐文化的興起和加工食品的普及,讓許多人在方便與健康之間陷入了困境。高糖、高鹽和高脂肪的食物雖然美味,但長期攝取會增加肥胖、糖尿病和心血管疾病等風險。 空氣污染、
掌握這些數字之後 就可以去規劃 公司同仁需要的健康促進內容是什麼? 常見的問題是什麼 了解應該著力的地方在哪裡 在提出企畫的時候 就可以拿這些數字來告訴老闆 【我們需要!】
 或許有很多人跟我一樣,本身身為一個管理網站或自己部落格的人,當你想要讓自己的網站變得更顯眼、瀏覽次數又或者被點擊率提高,這個時候,你會如何做呢?   分享給自己親朋好友幫忙轉傳?還是自己腦苦的一直絞盡腦汁想盡辦法? 或許,交給網路搜尋引擎機器人爬蟲幫忙,是一個更好的選擇。 網路爬蟲
隨著孩子的成長,教養變得更具挑戰性。動機式晤談(Motivational Interviewing, MI)是一種有效的溝通技巧,通過「少說多聽」的方式,鼓勵孩子思考自己的行為。本文介紹瞭如何使用開放式問題、積極回饋及摘要技巧,促進家庭溝通並改善親子關係。
Thumbnail
如果你是一個喜歡讀書或是研究的人,這篇文章將帶你進一步思考如何更高效地利用書本和寫作來解決實際問題。 不是讓書籍來定義你,而是用你自己的問題和目標來引導你選擇和使用書籍。 從「我助六經」到「六經助我」,這是我在這個閱讀和寫作旅程中的三個重大體悟。
Thumbnail
任何對文字有所追求的人都會從這篇文章中獲益。 透過這篇文章,你可以解決理解他人文字的困難,並從閱讀和寫作中得到更深的共鳴與理解。 在閱讀和寫作的旅程中,我有些個人的體悟與你分享。 體悟1 - 自身語言的價值:當我閱讀他人的文章時,有時會遇到理解困難,這是因為他們的語氣、使用的概念或方式都有可能與我存
Thumbnail
第二次視訊課,媒介換成goole meet。換goole meet的原因是,我發現它的白板功能可能很適合「拼字遊戲」,因為操作者可以自由移動便利貼,就可以看出字的組合。再來就是,這樣真的比較不浪費紙啦 XD
Thumbnail
很晚睡覺,只是為了把記帳軟體好好地梳理,很多人都說財富的累積,不能缺少記帳這一塊,但直到轉換記帳軟體後,才真的發現,原來不能缺少「快樂」的記帳這一塊才是更完整的陳述。
Thumbnail
在這國際化的社會,如果在網路上遇到一位心儀的外國朋友,想搭訕調情又不知道怎麼說?又或者想用更文化的方式與另一伴調情,那本篇文章的句子都可以用得上喔!
Thumbnail
*合作聲明與警語: 本文係由國泰世華銀行邀稿。 證券服務係由國泰世華銀行辦理共同行銷證券經紀開戶業務,定期定額(股)服務由國泰綜合證券提供。   剛出社會的時候,很常在各種 Podcast 或 YouTube 甚至是在朋友間聊天,都會聽到各種市場動態、理財話題,像是:聯準會降息或是近期哪些科
Thumbnail
透過勞動力槓桿,我們能運用技術自動化來減少重複性工作,集中精力於更具創造性的任務。資本槓桿則幫助我們將有限資源轉化為更大的財務回報,無論是通過投資還是自我提升。而無邊際成本產品的槓桿效應,讓我們可以創建出一次投入、多次收益的數位產品,實現長期收入。這些策略不僅提升工作效率,也能帶來更多的生活自由。
Thumbnail
隨著科技的發展和生活方式的變化,我們面臨著各種健康挑戰 生活節奏的加快和社會壓力的增加,焦慮、抑鬱等心理健康問題變得普遍。 快餐文化的興起和加工食品的普及,讓許多人在方便與健康之間陷入了困境。高糖、高鹽和高脂肪的食物雖然美味,但長期攝取會增加肥胖、糖尿病和心血管疾病等風險。 空氣污染、
掌握這些數字之後 就可以去規劃 公司同仁需要的健康促進內容是什麼? 常見的問題是什麼 了解應該著力的地方在哪裡 在提出企畫的時候 就可以拿這些數字來告訴老闆 【我們需要!】
 或許有很多人跟我一樣,本身身為一個管理網站或自己部落格的人,當你想要讓自己的網站變得更顯眼、瀏覽次數又或者被點擊率提高,這個時候,你會如何做呢?   分享給自己親朋好友幫忙轉傳?還是自己腦苦的一直絞盡腦汁想盡辦法? 或許,交給網路搜尋引擎機器人爬蟲幫忙,是一個更好的選擇。 網路爬蟲
隨著孩子的成長,教養變得更具挑戰性。動機式晤談(Motivational Interviewing, MI)是一種有效的溝通技巧,通過「少說多聽」的方式,鼓勵孩子思考自己的行為。本文介紹瞭如何使用開放式問題、積極回饋及摘要技巧,促進家庭溝通並改善親子關係。
Thumbnail
如果你是一個喜歡讀書或是研究的人,這篇文章將帶你進一步思考如何更高效地利用書本和寫作來解決實際問題。 不是讓書籍來定義你,而是用你自己的問題和目標來引導你選擇和使用書籍。 從「我助六經」到「六經助我」,這是我在這個閱讀和寫作旅程中的三個重大體悟。
Thumbnail
任何對文字有所追求的人都會從這篇文章中獲益。 透過這篇文章,你可以解決理解他人文字的困難,並從閱讀和寫作中得到更深的共鳴與理解。 在閱讀和寫作的旅程中,我有些個人的體悟與你分享。 體悟1 - 自身語言的價值:當我閱讀他人的文章時,有時會遇到理解困難,這是因為他們的語氣、使用的概念或方式都有可能與我存
Thumbnail
第二次視訊課,媒介換成goole meet。換goole meet的原因是,我發現它的白板功能可能很適合「拼字遊戲」,因為操作者可以自由移動便利貼,就可以看出字的組合。再來就是,這樣真的比較不浪費紙啦 XD
Thumbnail
很晚睡覺,只是為了把記帳軟體好好地梳理,很多人都說財富的累積,不能缺少記帳這一塊,但直到轉換記帳軟體後,才真的發現,原來不能缺少「快樂」的記帳這一塊才是更完整的陳述。
Thumbnail
在這國際化的社會,如果在網路上遇到一位心儀的外國朋友,想搭訕調情又不知道怎麼說?又或者想用更文化的方式與另一伴調情,那本篇文章的句子都可以用得上喔!