iT邦幫忙

第 11 屆 iThome 鐵人賽

DAY 1
1
DevOps

.NET Core 專案持續整合與部署系列 第 1

導讀:前言與創作方向

TL;DR

最近想嘗試為 .NET Core 專案透過 GitLab CI 進行持續整合、交付與部署,這系列主題算是研究筆記吧。

緣起

這段算是開賽前的 murmur 吧w

又到了一年一度的 iT 邦幫忙鐵人賽,今年是我第三次參賽了。想當初第一次參賽前幾天很認真的想寫出完美的文章,結果沒多久就斷羹,不禁莞爾。然而,經過去年第二次參賽,挑戰三個主題煉成的磨練、受到主題冠軍的鼓勵,讓我對自己的能力有所肯定,更讓我對這個賽事留下痛苦、熱血、充滿成就的印象與回憶。

去年挑戰的三個主題:

原本今年也在猶豫是否要再次踏上寫文修羅,當初一天 3 篇文章的折磨依然印象深刻,但是看到今年主題冠軍有機會出書,就又讓我燃起熱血。能有一本自己創作的書籍,算是我在 35 歲前希望達成的目標吧!既然如此,就試試看吧!

在報名截止前幾分鐘,我依然在猶豫要報什麼題目,又要報幾組,畢竟去年都挑戰三組了,今年只有挑戰一個主題,不免有些不甘心。但考量到從今年五月踏入新職場後,空閒時間是不如去年的充裕、睡前的體力恐也難以支撐這樣高強度的創作,加上也希望能為了有希望出書進行更有品質的創作,所以最後只報了兩系列的主題,分別是:

  1. Git 其然,Git 其所以然
  2. .NET Core 專案持續整合與部署(本系列)

前者是這次想專心投入創作的主題,會花比較多的心力在上面。後者則是最近想點的技能樹,會比較偏向個人研究筆記的形式。有別於去年報名了三個不同的主題組別,今年卻都是專注在 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


下一篇
.NET Core CLI:安裝
系列文
.NET Core 專案持續整合與部署31

尚未有邦友留言

立即登入留言