我曾經聽過一個笑話,一個人到一家公司面試,面試官問他:「請問你如何保證/保持你的程式碼品質?」
這個年輕人回答:「我...我會在發現bug的時候把問題加班修好」。
其實這個有點悲哀,也說明了為什麼軟體工程師時常需要加班,因為當軟體越寫越複雜的時候,要保持程式的品質是需要一些事情,但是這些事情是什麼?有沒有可能進入到我們日常環境里?
這個就是接下來會介紹的部分,我們如何透過做CI把程式碼品質要做的事情整合進來。
我曾經聽過一個笑話,一個人到一家公司面試,面試官問他:「請問你如何保證/保持你的程式碼品質?」
這個年輕人回答:「我...我會在發現bug的時候把問題加班修好」。
其實這個有點悲哀,也說明了為什麼軟體工程師時常需要加班,因為當軟體越寫越複雜的時候,要保持程式的品質是需要一些事情,但是這些事情是什麼?有沒有可能進入到我們日常環境里?
這個就是接下來會介紹的部分,我們如何透過做CI把程式碼品質要做的事情整合進來。
在之前幾篇已經介紹完了.Net常見的三種Test Framework(Xunit,Nunit 和 MSTest)整合方式之後,相信會發現到這三個task有很地方是重複邏輯。
這些重複邏輯我們都是用了copy 和 paste 的方式處理了,但是未來如果要維護這個build script,甚至要把它變成一個常用/通用的script,這種方式是非常不好
所以,就像任何好的工程師會做的事情一樣,我們也要重構我們的Script。
這篇將會介紹重構什麼,和如何重構。
在介紹完Xunit和Nunit測試之後,這篇將要來看最後一個常見的測試Framework,Visual Studio內建的MSTest。
經過一段時間的介紹,相信對於使用psake來建制專案已經沒什麼問題了 - 我們就要開始進入建制的下個階段,也就是測試。
專案建制起來只是基本條件,但是單元測試是否有通過才是保證程式碼品質的一種方式,因此,不跑單元測試更本就不完整。
在接下來幾篇,將會介紹幾個常見的unit test的framework,先從xunit開始。
在進入下個階段之前(也就是開始執行Unit Test),有個部分一直沒有碰到,那就是當建制失敗的時候會發生什麼事情。
整個CI的概念就是盡早發現建制有問題好去做一些處理,但是如果出錯了都發現不到,不就等於沒有意義了?
這篇我們將會看看這方面的處理。
在上篇了解到如果什麼都沒調整的情況下,建制出來的內容會放在一起,根本無法區分哪些內容屬於哪些專案。
也提到了.Ner 4.5能夠使用GenerateProjectSpecificOutputFolder
,但是假設是.Net 4.5以下呢?
這篇我們會沿著這個思路,看看為什麼Asp .Net Mvc專案有個_PublishedWebsite,並且我們是否能夠使用這個資訊來做些處理。
上篇我們提到了用psake來建制一個asp .net mvc的專案,並且修正了psake執行時候呈現的內容,在這篇,我們將進一步延伸來看一下,buid結束產生的內容是什麼和 加入另外兩種常見的.Net專案:
經過了幾天的理論介紹,我們開始要進入建制專案的部分。
我們會先拿一個Asp .net Mvc的網站作為第一個要建制的專案,所以我們會先建立出來,然後在使用MSBuild帶來的幫助,幫我們快速建立專案
(之後下面提到的code都可以從這邊看到內容:github repo,這篇會是tag sample/chapter6)
在上一篇了解了如何建制一個專案之後,和我們之後要使用psake作為build tool,在這篇我們將會看到底怎麼開始使用psake,和建立出我們之後會一直使用的專案。
(之後下面提到的code都可以從這邊看到內容:github repo,這篇會是tag sample/chapter4
)
在上篇了解到說什麼是DevOps之後,我們就開始探討第一個部分,也就是Continous Integration (CI)。
CI最基本的核心就是build專案 - 所以我們需要了解一下到底VS是如何build專案的,只有了解之後我們才能夠把它腳本化,也才有可能自動化。
因此,這篇將會介紹:
又到了新的一屆鐵人賽,針對這次是否要參賽其實非常的糾結:一方面因為工作的關係,額外的時間越來越少,但是一方面又想把寫日誌的習慣找回來,在這種糾結的心情中,最後,還是想寫戰勝了不想寫。
這已經是第三次參加鐵人賽了,對我來說,每一年的主題都比上一年的更加困難,今年選擇的主題更是我這兩年想做但是一直沒有做的部分,也就是如何在日常生活中把DevOps引進來,並且提升日常工作效率。
同去年一樣,今年很多東西會是邊執行並且邊研究和邊記錄,希望大家能夠在這個系列學習到東西。