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

更新 發佈閱讀 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
留言分享你的想法!
avatar-img
Spirit的沙龍
55會員
107內容數
這是從 Medium 開始的一個專題,主要是想用輕鬆閒談的方式,分享這幾年軟體開發的心得,原本比較侷限於軟體架構,但這幾年的文章不僅限於架構,也聊不少流程相關的心得,所以趁換平台,順勢換成閒談軟體設計。
Spirit的沙龍的其他內容
2023/11/01
在上回提到一些應該要避免的措施,以及時時梳理 product backlog 讓團隊有較好的估算,這回則是作為一位 scrum master,我們該如何自省與發現估算的問題,也是以自我反省的方式完結這個系列。
Thumbnail
2023/11/01
在上回提到一些應該要避免的措施,以及時時梳理 product backlog 讓團隊有較好的估算,這回則是作為一位 scrum master,我們該如何自省與發現估算的問題,也是以自我反省的方式完結這個系列。
Thumbnail
2023/10/25
在上回討論 Scrum 對於估算的精神與常見的估算單位,這回就來討論一些應該避免的事項,讓團隊能有更好的估算,下回則是過去的自省與感想。要讓團隊有較高品質的估算,agile coach 或 scrum master 可以觀察一些徵兆,若有發現盡早排除,免得讓團隊成員有壞習慣或是對估算這件事有陰影。
Thumbnail
2023/10/25
在上回討論 Scrum 對於估算的精神與常見的估算單位,這回就來討論一些應該避免的事項,讓團隊能有更好的估算,下回則是過去的自省與感想。要讓團隊有較高品質的估算,agile coach 或 scrum master 可以觀察一些徵兆,若有發現盡早排除,免得讓團隊成員有壞習慣或是對估算這件事有陰影。
Thumbnail
2023/10/18
這同是 2016 年的舊文,根據現在的閱讀習慣重新整理,文章分成三回陸續發布,本回先談談在 Scrum 中,為什麼要估時,然後談談比較常見的單位與用法。下回則是幾個小方法,讓團隊能有更好的估算。最後一回,則是一些過去的自省與感想。
Thumbnail
2023/10/18
這同是 2016 年的舊文,根據現在的閱讀習慣重新整理,文章分成三回陸續發布,本回先談談在 Scrum 中,為什麼要估時,然後談談比較常見的單位與用法。下回則是幾個小方法,讓團隊能有更好的估算。最後一回,則是一些過去的自省與感想。
Thumbnail
看更多
你可能也想看
Thumbnail
透過蝦皮分潤計畫,輕鬆賺取零用金!本文分享5-6月實測心得,包含數據流程、實際收入、平臺優點及注意事項,並推薦高分潤商品,教你如何運用空閒時間創造被動收入。
Thumbnail
透過蝦皮分潤計畫,輕鬆賺取零用金!本文分享5-6月實測心得,包含數據流程、實際收入、平臺優點及注意事項,並推薦高分潤商品,教你如何運用空閒時間創造被動收入。
Thumbnail
單身的人有些會養寵物,而我養植物。畢竟寵物離世會傷心,植物沒養好再接再厲就好了~(笑)
Thumbnail
單身的人有些會養寵物,而我養植物。畢竟寵物離世會傷心,植物沒養好再接再厲就好了~(笑)
Thumbnail
不知你有沒有過這種經驗?衛生紙只剩最後一包、洗衣精倒不出來,或電池突然沒電。這次一次補貨,從電池、衛生紙到洗衣精,還順便分享使用心得。更棒的是,搭配蝦皮分潤計畫,愛用品不僅自己用得安心,分享給朋友還能賺回饋。立即使用推薦碼 X5Q344E,輕鬆上手,隨時隨地賺取分潤!
Thumbnail
不知你有沒有過這種經驗?衛生紙只剩最後一包、洗衣精倒不出來,或電池突然沒電。這次一次補貨,從電池、衛生紙到洗衣精,還順便分享使用心得。更棒的是,搭配蝦皮分潤計畫,愛用品不僅自己用得安心,分享給朋友還能賺回饋。立即使用推薦碼 X5Q344E,輕鬆上手,隨時隨地賺取分潤!
Thumbnail
身為一個典型的社畜,上班時間被會議、進度、KPI 塞得滿滿,下班後只想要找一個能夠安靜喘口氣的小角落。對我來說,畫畫就是那個屬於自己的小樹洞。無論是胡亂塗鴉,還是慢慢描繪喜歡的插畫人物,那個專注在筆觸和色彩的過程,就像在幫心靈按摩一樣,讓緊繃的神經慢慢鬆開。
Thumbnail
身為一個典型的社畜,上班時間被會議、進度、KPI 塞得滿滿,下班後只想要找一個能夠安靜喘口氣的小角落。對我來說,畫畫就是那個屬於自己的小樹洞。無論是胡亂塗鴉,還是慢慢描繪喜歡的插畫人物,那個專注在筆觸和色彩的過程,就像在幫心靈按摩一樣,讓緊繃的神經慢慢鬆開。
Thumbnail
本文將介紹Gitlab與GitHub的差異,以及在本地環境部署Gitlab的流程與實作。文章內容包括版本管理系統的選擇,Gitlab的基本功能,以及使用Docker進行部署的詳細步驟。
Thumbnail
本文將介紹Gitlab與GitHub的差異,以及在本地環境部署Gitlab的流程與實作。文章內容包括版本管理系統的選擇,Gitlab的基本功能,以及使用Docker進行部署的詳細步驟。
Thumbnail
前言 大家好上次講到在使用 Gitlab CI/CD 自動化佈署前,使用 Docker Compose 撰寫佈署計畫書,今天我們要將目標轉移到 Gitlab 我們要撰寫自動化上線佈署計畫書,我們之後還會講一套更完整的佈署流程,今天只是讓各位體驗,自動化佈署上線的快感 調整 CI/CD 變數 首
Thumbnail
前言 大家好上次講到在使用 Gitlab CI/CD 自動化佈署前,使用 Docker Compose 撰寫佈署計畫書,今天我們要將目標轉移到 Gitlab 我們要撰寫自動化上線佈署計畫書,我們之後還會講一套更完整的佈署流程,今天只是讓各位體驗,自動化佈署上線的快感 調整 CI/CD 變數 首
Thumbnail
您是否苦於網路資訊爆炸嗎? 教學何其多,但卻無法好好選擇的困境呢? 歡迎加入「🔒 阿Han的軟體心法實戰營」, 這裡不給您冗餘的雜訊, 單刀直入直接送您重點, 避開選擇障礙的困境, 讓您獲得業界標準的開發起手式, 成為Top 1的頂尖人才。 我們開發程式的時候, 常常會使用Git來管理我們的
Thumbnail
您是否苦於網路資訊爆炸嗎? 教學何其多,但卻無法好好選擇的困境呢? 歡迎加入「🔒 阿Han的軟體心法實戰營」, 這裡不給您冗餘的雜訊, 單刀直入直接送您重點, 避開選擇障礙的困境, 讓您獲得業界標準的開發起手式, 成為Top 1的頂尖人才。 我們開發程式的時候, 常常會使用Git來管理我們的
Thumbnail
這是 2016 年的舊文重新整理,這幾年應該很少聽到軟體生命週期管理了,裡面的部分概念被其他更夯的詞取代了,像是 DevOps,所以我在一開頭便選了張比較接近潮流的圖片,不過說真的,在這個領域,常常有很多新名詞出現,但真正落實的又有多少呢?
Thumbnail
這是 2016 年的舊文重新整理,這幾年應該很少聽到軟體生命週期管理了,裡面的部分概念被其他更夯的詞取代了,像是 DevOps,所以我在一開頭便選了張比較接近潮流的圖片,不過說真的,在這個領域,常常有很多新名詞出現,但真正落實的又有多少呢?
Thumbnail
長遠的角度來看,內部函式庫還是值得投資的公司資產,只是它需要時間、人力與管理才能做得好。若有不錯的內部函式庫也可以回饋給open-source社群,畢竟,現在開發軟體已經不太可能沒有用到任何open-source的東西。雖然說是將公司資產以 open-source 釋出,但換取的利益卻不見得是零。
Thumbnail
長遠的角度來看,內部函式庫還是值得投資的公司資產,只是它需要時間、人力與管理才能做得好。若有不錯的內部函式庫也可以回饋給open-source社群,畢竟,現在開發軟體已經不太可能沒有用到任何open-source的東西。雖然說是將公司資產以 open-source 釋出,但換取的利益卻不見得是零。
Thumbnail
有關 git add, git commit, git push
Thumbnail
有關 git add, git commit, git push
Thumbnail
前言   這篇文章將會介紹伺服器的概覽和倉庫,並介紹兩款客戶端協助使用者。 伺服器 | GitHub   線上軟體原始碼代管服務平台,使用 Git 作為版本控制軟體 GitHub 同時提供付費帳戶和免費帳戶,這兩種帳戶都可以建立公開或私有的代碼倉庫,但付費使用者擁有更多功能。   除了允許個人和組
Thumbnail
前言   這篇文章將會介紹伺服器的概覽和倉庫,並介紹兩款客戶端協助使用者。 伺服器 | GitHub   線上軟體原始碼代管服務平台,使用 Git 作為版本控制軟體 GitHub 同時提供付費帳戶和免費帳戶,這兩種帳戶都可以建立公開或私有的代碼倉庫,但付費使用者擁有更多功能。   除了允許個人和組
Thumbnail
前言   這篇文章將會介紹版本控制,並介紹相關的伺服器和客戶端,藉由比較易懂的方式介紹,可能會跟實際上有些微的落差,但會比較好理解。 版本控制   版本控制基本上是由一個名為 Git 的軟體所建立,隨著時間推進,延伸出了很多伺服器和可視話的客戶端,接下來我會一個一個介紹。 底層 | Git 客戶端
Thumbnail
前言   這篇文章將會介紹版本控制,並介紹相關的伺服器和客戶端,藉由比較易懂的方式介紹,可能會跟實際上有些微的落差,但會比較好理解。 版本控制   版本控制基本上是由一個名為 Git 的軟體所建立,隨著時間推進,延伸出了很多伺服器和可視話的客戶端,接下來我會一個一個介紹。 底層 | Git 客戶端
追蹤感興趣的內容從 Google News 追蹤更多 vocus 的最新精選內容追蹤 Google News