最近想嘗試為 .NET Core 專案透過 GitLab CI 進行持續整合、交付與部署,這系列主題算是研究筆記吧。
這段算是開賽前的 murmur 吧w
又到了一年一度的 iT 邦幫忙鐵人賽,今年是我第三次參賽了。想當初第一次參賽前幾天很認真的想寫出完美的文章,結果沒多久就斷羹,不禁莞爾。然而,經過去年第二次參賽,挑戰三個主題煉成的磨練、受到主題冠軍的鼓勵,讓我對自己的能力有所肯定,更讓我對這個賽事留下痛苦、熱血、充滿成就的印象與回憶。
去年挑戰的三個主題:
- Agile: 《為團隊與組織導入敏捷的經驗分享》系列
- Software Development: 《軟體開發隨筆談》系列
- Moden Web: 《我或許沒那麼懂 Web》系列
原本今年也在猶豫是否要再次踏上寫文修羅,當初一天 3 篇文章的折磨依然印象深刻,但是看到今年主題冠軍有機會出書,就又讓我燃起熱血。能有一本自己創作的書籍,算是我在 35 歲前希望達成的目標吧!既然如此,就試試看吧!
在報名截止前幾分鐘,我依然在猶豫要報什麼題目,又要報幾組,畢竟去年都挑戰三組了,今年只有挑戰一個主題,不免有些不甘心。但考量到從今年五月踏入新職場後,空閒時間是不如去年的充裕、睡前的體力恐也難以支撐這樣高強度的創作,加上也希望能為了有希望出書進行更有品質的創作,所以最後只報了兩系列的主題,分別是:
前者是這次想專心投入創作的主題,會花比較多的心力在上面。後者則是最近想點的技能樹,會比較偏向個人研究筆記的形式。有別於去年報名了三個不同的主題組別,今年卻都是專注在 DevOps 的領域,多少和自己職涯規劃有所呼應,希望能在貢獻社群以及個人發展齊頭並進。
原本也有考慮 Software Development 以及在 DevOps 中繼續往 Agile 的方向創作,但自己的醞釀多年的墨水卻也在去年揮灑的差不多了,另幾甕卻也還在醞釀中,就看明年是否有機會與大家分享了。
好,碎碎念就到這邊吧!其他的就等到有機會煉成再閒聊了。就先讓我們先談談這系列的創作方向吧!
在 2014 年的 11 月,微軟在 Connect() developer event 中,宣布了 .NET Core 開源,並且支援 Linux 和 macOS 作業系統。
會特別講這件事,在於這意味著我們可以在 Unix-like 作業系統上使用命令列介面去進行編譯、測試等相關操作,而不用仰賴 IDE。這背後更代表著我們可以寫自動化腳本去進行這些事情!
儘管 Windows 原本就可以使用 MSBuild 與 PowerShell 去編寫相關的自動化腳本,但 Windows 本身相較於 Linux 而言,有著體積厚重以及授權等問題,我們在自動化功效的部分是被成本給壓抑住的。
隨著 Docker 帶起了 Linux 容器的使用風潮,加上近幾年 Kubernetes 的快速發展,以及近幾年 CI 工具不斷的興起,在 Linux 環境上建置、測試、部署應用程式已經是趨近主流。
搭配近幾年 Agile、DevOps 文化的興起,軟體工程在開發的流程上算是經歷了滿多變革。迭代式開發以及 CI/CD 已經逐漸成為不可或缺的要素,這些改變帶來的好處已經有許多文章和書籍談及,我就不多贅述了。
在上述美好變化的降臨下,身為一個 .NET Core 的開發者(儘管資淺),也作為一個 DevOps 文化的信徒,想要透過 CI 在 Linux 上面進行持續整合、交付與部署,聽起來也就是很合理的事,這也就是我創作的動機。
但在進行持續整合的初步研究時,或許是因為 .NET Core 開源與跨平台這件事相較於其他開發工具晚,發現整個相關生態系是沒那麼明朗清晰的,範例與資源也較少,要把整個流水線建置好,是要耗費精力與時間的,因此就有了這個研究筆記的創作。
在目前的研究方向,會傾向使用 GitLab 搭配 GitLab CI 作為程式碼託管與持續整合的工具。在運行 CI 的 Runner 則還在考慮要怎麼進行。預期會有一套流水線是包含單元測試、程式碼分析、建置、冒煙測試、驗收測試、部署等等,端看我這個月拜讀《Continuos Delivery》的進度和收穫囉。
大致如此,就請各位同好、先進多多指教了。若覺得這題目有興趣,也不妨訂閱這系列文或是留言交流,這會讓我更有動力進行創作。 = D