軟體開發 之持續整合 Continuous Integration 簡介篇

– 前言

相信在目前的軟體工作環境裏,每一位開發人員都會用到一些版本管理工具,如 Git/SVN/VCS 等。(*當然,偶爾還是會看到傳說中的「資料夾管理法」 ~~~ XD

時賦科技 - 資料夾版本控制法
資料夾版本控制法

– 主旨

有了版本控制軟體之後,基本上我們就能共用同一份程式碼,並且從Log能知道是誰,在何時改的程式碼(*人是誰殺的) ~

時賦科技 - git log

不過… 我們透過版本管理軟體 取得最新的程式碼時,我們並無法確定 程式是否可以正常編譯?!
導至有時一早進辦公室就會遇到 編譯問題/Compiler Error ~ (*曾有朋友反應,因此他都很晚進公司~ XDD)

有沒有一種方式,可以程式工程師能安心(也專心地)開發程式 。
就算程式裏的語法上有錯誤 ~ 也可以在寫入(版本控制)時 能立即通知。(如下)

時賦科技 - Auto Build Email 通知

 

在這種時候,我們就需要一些輔助工具可以達到這種功能,所謂的 Continued Integration (我們這邊稱它 持續整合工具)

如圖,
CI Tools by APPX

目前我們常聽到的工具 大概就都在圖上,主要像 Jenkins, TeamCity, Travis CI, Bamboo 等。 對CI 界,排名前八大有興趣的可以看這裏

– 專案實作考量

這次,我們考量的點 有以下幾項
一、新建立的 Build Server 能連接到 Bitbucket Git Server (幾乎每家都可以~)
二、能夠支援 .net 以及 Java 程式碼 (*因為我們的案子主要以這兩種語言為主)
三、最少能週期性的Pulling 檢查 是否有最新的更新(code commit) ;
最好的情境 應該不要一直問Git,而是當Bitbucket有更新時 主動通知 Build Server,再進行編譯動作。

四、能夠將編譯的結果 盡快通知給團隊人員或是負責人,如 email。(*最好還可以看到程式的diff 差異)

五、費用考量 ~ (*free 當然很好,不過如果需要一些費用而提供多一點的功能 也是可以接受的~ 畢竟,就像投資一樣,投的好,相對的回收一定會更好的 ~)

六、(*非必要性) 支援  SSO/LDAP 整合

在看了以上的工具 及加入所有考量的情境之後,我們決定先採用 JetBrain 的 TeamCity 試試看 ~
最起碼看了官網上的介紹(*連結) 最起碼前面一到五項,相信是沒問題的 ~
(*google的 Android Studio 好歹也是從這家公司的IDEA J 衍生出來的,相信不會差到哪裏去)

甚至在2017年中間推出的版本裏,它還支援 docker, .net CLI, Kotlin DSL project 等 ~
相信對一般的開發團隊應該很足夠,再者  去年還放寬了免費版的限制
(從 20 build config -> 100 build config)
這家軟體商真的是佛心來著 !!!

詳細的功能介紹 請見官網說明(*網址: https://www.jetbrains.com/teamcity/features/

接下來的幾週,就讓我們以實際使用的過程 來分享給各位 ~
預計會有
一、TeamCity 安裝篇 (*已完成)
二、TeamCity 設定篇
三、TeamCity 進階設定篇

希望大家在軟體開發的生活裏能夠更輕鬆,將時間用在更珍貴的地方 (如喝咖啡,逛fb  等美好的事物上~ XD)

時賦科技 - 美好的事物
比如像這樣 ~

Cheers ~