隨著 Agile 以及 DevOps 的精神越來越普及,持續整合伺服器(Continuous Integration Server)的重要性也越來越被大家所重視,在團隊開發協作中,擅用持續整合伺服器可以大幅度減輕團隊成員的日常手動作業,讓團隊成員擁有更多的時間可以專注再開發,甚至可以作為團隊的守護者,讓程式碼維持在高品質的狀態,讓團隊的開發工作更加的省時順暢。
[工商服務] 使用持續整合伺服器幫團隊加速
- 1412
- 0
- 2018-01-15
隨著 Agile 以及 DevOps 的精神越來越普及,持續整合伺服器(Continuous Integration Server)的重要性也越來越被大家所重視,在團隊開發協作中,擅用持續整合伺服器可以大幅度減輕團隊成員的日常手動作業,讓團隊成員擁有更多的時間可以專注再開發,甚至可以作為團隊的守護者,讓程式碼維持在高品質的狀態,讓團隊的開發工作更加的省時順暢。
先說結論。
身為一個「成年人」,應該要有足夠的判斷力及勇於嘗試,如果你對於敏捷實踐有興趣,不管是想要開始導入工作之中,或是你已經嘗試導入卻遇到各種瓶頸,我在這邊推薦 Daniel 的 CSM 課程給你,這門課程應該可以給你不小的啟發,尤其有痛過的話,那麼答案就都在這門課程裡面了。
最近剛好碰到需求是要使用 Azure WebJob 來開發一些非同步的處理程式,就希望可以讓 WebJob 也可以透過 Visual Studio Team Service 來做到 CI / CD ,方便控管軟體品質與部署,以下的範例和說明是以使用 WebJob 自己獨立的 Azure WebApp (不包含其他 Website) 為前提來設定 Visual Studio Team Service 可以自己建置及部署 Azure WebJob 專案。
在 前一篇文章 ,介紹了如何 SonarQube 的基本功能和所能幫助我們做到的事情,而在本篇文章中,就要開始向大家介紹如何從頭開始安裝一台自己的 SonarQube 伺服器,來讓自己的專案報告可以傳送到 SonarQube 的伺服器上,並透過報表的方式提供給使用者檢視程式碼是否有潛在的風險。
在軟體開發的生命週期中,讓產出的程式碼可以維持著高品質也是非常重要的一件事情,在每個公司可能都會使用不同的方式來讓產品的程式碼品質維持高水準,像是透過 Git 所提供的 Pull Request 功能,讓程式碼在合併回主要的 Branch 之前,透過 Code Review 的方式進行 Double Check,避免一些可能被個人所忽略的疏失發生,也可以讓比較 Senior 的工程師在 Pull Request 上分享 Domain Knowhow。
在我們寫系統 Log 的時候,如果想要搭配使用 Entity Framework 把 Log 寫到資料庫中,會面臨的問題是如果我們想要讓不同的 Log 存放在不同的 Table ,就必須要增加不同的 Class 來對應到不同的 Table ,這樣會造成我們寫 Log 所使用的 DbContext 變得很複雜,卻都是處理同一件事情,還好 Entity Framework 本身就是一個滿有彈性的 Library ,我們可以透過在每次初始化時,事先設定 Log Class 實際對應到的 Table 名稱來做到程式碼共用,那這篇文章主要就是要向大家介紹,透過 Entity Framework ,我們要怎麼讓同一個 Entity Class 可以根據需求支援同樣格式不同名稱的 Table。
幾乎學習所有Web開發程式語言後的第一個綜合練習課題就是如何建立一個 Blog ,這也是因為 Blog 的功能剛好滿足了使用程式語言與資料庫連接的基本操作,而在 Asp.Net 5 之後,由於跨平台支援的特性,也代表著我們不需要開 Windows 就可以撰寫 Asp.Net 的應用程式,但離開 Windows 之後,也意味著沒有了 Visual Studio 來幫助我們進行建立專案和開發,所有的開發方法和步驟都是新的嘗試,所以再度拿出這個練習題來熟悉一下再好不過了,以下範例的進行主要是以在 Mac 上使用 Visual Studio Code 和 Console,搭配 Asp.Net 5 和 Entity Framework 7 的 RC1 版來進行操作,練習如何從無到有撰寫一個 Blog 的網站。
在2015年度的 Connect() 大會之後,Asp.Net 5 來到了 RC1 版,也就是說 Asp.Net 5 的正式版本的到來指日可待。而在 Asp.Net 5 除了整個大翻修之外,最令人期待的特性之一就是可以跨平台的執行,不再被綁定的 Windows 的環境上運行,這也代表未來我們可以選擇自己所希望使用的作業系統來運行 Asp.Net 應用程式,而今天的文章所要介紹的就是如何透過 Docker 來運行 Asp.Net 5 應用程式。
如果你的網站也是一個線上服務平台的話,該如何知道自己的網站能不能撐住瞬間巨量的衝擊呢?答案就是負載測試(壓力測試),以往我們要進行負載測試最困擾的就是必須準備大量的機器,同時針對待測網站給予大量的流量壓力,才能完成,而在雲端服務盛行的今天,我們只要透過Visual Studio Online的負載測試功能,讓你連一台機器都不用準備,就可以對你在雲端的網站進行負載測試,甚至更能夠直接使用原本為了網站做自動化測試的Specflow腳本來進行,讓你的負載測試不再是一大堆使用錄製的檔案,而是可以輕鬆讀懂而且好維護的測試案例!
微軟的Build 2015正如火如荼的進行中,在第一天的Keynote也公布了許多令人振奮的消息,其中特別吸引我注意的就是.Net Core跨平台(Windows, Linux, Mac),以及Visual Studio Code的公布(跨平台版本的Visual Studio),讓我們使用非Windows環境開發.Net程式的日子似乎不遠了!今天就要向大家介紹,如何在Mac上設定Asp.Net 5的開發環境,讓以往只能在Windows上執行的Asp.Net Mvc也能在Mac或Linux上開發囉!
Grunt是一種前端的自動化工具,可以幫助我們將JavaScript、Css檔案進行最小化、打包、程式碼語法檢查等等工作自動化,相較於Asp.Net內建的Bundle工具,Grunt所提供的用途雖然類似,但更具有彈性,甚至連JavaScript的自動化測試也可以透過它來整合進行,具體的角色有點類似在C#專案中的MsBuild(我們所有的csproj檔其實就是MSBuild的語法寫成),算是一種建置流程的語言。
而Protractor則是專門為Angular.js量身打造的自動化測試Framework,當然我們也可以使用它來對任何其他不是用Angular.js所撰寫的網頁進行自動化測試(理論上只要瀏覽器可以開起來的Html網頁,不是Flash、Silverlight都可以測試),Protractor的執行是透過Command輸入指令來觸發,而Grunt可以幫助我們簡化這些步驟。
今天的文章將用簡單的範例向大家介紹,如何透過Grunt,將Protractor的自動化測試整合到Visual Studio的之中。
在每個公司,都會有自己定義的程式碼撰寫規範,或是公司所開發的系統模組,而在進行這些系統模組功能開發時,若是每次都要重頭新增一個完全乾淨的Class開始進行的話,無疑是非常辛苦的一件事情,所以我們通常會將這些經常被使用的Class架構或是專案架構包成Template,再加入到Visual Studio之中,這麼一來我們就可以在開發時快速的使用我們預先定義好的Template來加快開發的進行。但若是每次重灌電腦或是有新人進入部門時,都要重新將所有部門所常用的Template都手動設定一次,不但步驟繁瑣而且很容易出錯,最後還是要花時間來排除問題,本系列文章就是要和大家分享如何將Template包進Visual Studio的擴充功能之中,這麼一來不管是重灌電腦或是設定新環境,都只要輕鬆地安裝Visual Studio的擴充功能,就可以一次搞定所有的Template囉!
在我們使用Git時,經常會使用Tag來對特定版本做記號,也方便我們隨時還原到該版本,但隨著時間越長,在我們Repository中的Tag也會越來越多,因此我們經常會清理遠端的Tag,只保留最近一些版本的Tag留存使用。最近發現明明已經刪除了遠端所有的Tag,重新Fetch所有的Tag之後,卻又出現在Tags列表之中,後來發現原來是我們在刪除Remote的Tags時,並不會同時刪除其他人Local的Tag,因此當他又使用SourceTree的Push all tags時,又會將所有本地端的Tag送回Remote!因此,這篇文章將向大家介紹如何透過batch script來擴充SourceTree的功能,讓本地的Tag和Remote同步,這麼一來只要在定期清理Tags時,要求大家一併同步,就不會再發生類似的問題囉!
如果我們網站的某些頁面流量比較大,而且會進行較大量的資料庫操作,或是使用CPU來做高度的運算,但可以接受使用者不一定需要看到最新的資料,並允許短暫時間的誤差 (例如: 五分鐘),這時候我們就可以考慮在這個頁面上加上Cache來減低Server的負擔。最常應用Cache的場景應該就是網站的首頁了,網站首頁通常會包含大量的資訊,也擁有最大量的瀏覽量,但可以容許資料十分鐘才更新一次,正是適合Cache的使用。今天我們也將舉一個簡單的範例來實作Cache,並逐步的調整使用的方法!
摘要:使用Team Foundation Server管理軟體開發生命週期 (2) - 安裝TFS (Advanced Version)
TFS(Team Foundation Server)是微軟所開發的一套應用程式開發週期管理系統(Application Lifecycle Management),我們可以使用它來從頭到尾控管一個專案的開發狀態,它不僅僅是包含了持續整合伺服器(Continuout Integration)的功能,還能讓我們可以設定專案的工作項目與管理工作進度,甚至是配合敏捷開發方法(ex. Scrum)來進行軟體開發。
摘要:[Jenkins] 使用SpecRun產生BDD測試結果報表
關於如何使用Jenkins來進行自動化網站部屬,
可以參考 http://ithelp.ithome.com.tw/question/10108511 CI Server 22 - 使用Web Deployment Tool部署網站
雖然之前一直都使用Command Line的語法來直接執行MsDeploy,
但還是沒有像使用Visual Studio的發行功能一樣方便,
而且Visual Studio和Jenkins使用不同的方式部屬也擔心會有設定不同步的問題,
最近發現原來MsBuild可以直接指定Visual Studio的發行設定檔進行部屬,
如此一來, 原本擔心的問題也就迎刃而解
為了增加網站的承載量,我們通常會在謹慎的在關鍵處加上Cache來避免高成本的開銷,(例如需要高CPU運算、大量的IO操作,但卻並不是隨時都需要動態獲得最新值之處),除了在程式碼中使用Cache之外,我們也常常會使用Asp.Net提供的Output Cache,它可以幫助我們將整個網頁包含Html做鏡像的Cache,來快速地回應使用者的Request,在使用Cache很重要的一點是所有的Cache都必須要能夠有效及時地進行清除或更新,才不會造成系統使用上的困擾。