目錄
持續集成是一種軟件開發實踐,即團隊開發成員經常集成它們的工作,通過每個成員每天至少集成一次,也就意味着每天可能會發生多次集成。每次集成都通過自動化的構建(包括編譯,發布,自動化測試)來驗證,從而盡早地發現集成錯誤。
(1)快速發現錯誤。每完成一點更新,就集成到主干,可以快速發現錯誤,定位錯誤也比較容易。
(2)防止分支大幅偏離主干。如果不是經常集成,主干又在不斷更新,會導致以后集成的難度變大,甚至難以集成。
在GitLab 8.0+提供了持續集成的功能,在GitLab中有個Runners的概念。
Runner一共有三種類型
1) 本地Runner
2) 普通的服務器上的Runner
3) 基於Docker的Runner
本文只介紹GitLab對NET進行持續集成
開發環境:VS2015、Git
GitLab服務器環境:GitLab 8.0+
Runner-CI服務器:window、Git、Msbuild、Nuget、PowerShell、GitLab-Runner
Git操作、GitLab、Msbuild&Nuget命令行、Powershell命令行
找一台電腦(服務器最好)系統安裝為window 7(x64,改成英文版最好),並且機子安裝了.net framework4.0運行環境(里面要有MsBuild)
安裝Git,下載地址 https://git-scm.com/download/win
安裝NuGet.exe,下載地址:http://nuget.codeplex.com/downloads/get/669083
計算機右鍵—>屬性里單擊選擇—>環境變量
Git 目錄下的 bin(如 C:\Program Files (x86)\Git\bin)添加到 PATH 環境變量。
如下圖:選擇 PATH編輯,將 bin 的路徑(C:\Program Files (x86)\Git\bin)添加到變量值
詳細配置參考方法(二選一即可)
【手動配置環境變量】
http://jingyan.baidu.com/article/fec4bce271601ff2618d8be3.html
【Git安裝自動配置環境變量】
http://jingyan.baidu.com/article/9f7e7ec0b17cac6f2815548d.html
PowerShell是調用方式(GitLab提供很多種方式),本文只針對PowerShell方式進行演示。PowerShell可以理解為就是cmd的升級版。
打開PowerShell,測試Git、MsBuild、NuGet命令行能否在PowerShell中使用(如果不想測試,請繼續往下看)。
舉例:
測試Git
首先,下載gitlab-ci-multi-runner-windows-amd64,並將其放到C:\CI
下載地址:
點擊一個項目->Settings->Runners, 得到Url地址①和registration token②
基礎環境已經搭建完成,如何將這台計算機真正變成一台Runner-CI服務器,我們需要詳細介紹一下。
首先,下載gitlab-ci-multi-runner-windows-amd64,並將其放到 D:\CI_Test
下載地址:
運行cmd命令(以管理員身份打開cmd)
輸入命令為:
cd \ cd ci gitlab-ci-multi-runner-windows-amd64.exe register
根據提示,填寫
1) GitLab->Runners的Url地址①
2) GitLab->Runners的registration token②
3) runner名稱,這個隨便寫
4) 分支名,master
5) 協議方式,shell
如下圖填寫信息紅色部分
輸入開啟命令,並檢查window服務中和GitLab->Runners中是否開啟成功
gitlab-ci-multi-runner-windows-amd64.exe install gitlab-ci-multi-runner-windows-amd64.exe start
注冊成功后,在文件夾中找到config.toml,在[[runners]]后面添加shell = "powershell"節點
【.gitlab-ci.yml內容為】
下圖紅框中的命令,只要將路徑修改為"ConsoleApplication1.sln"的實際路徑就能直接從Powershell中運行。 注意: 如果報錯"ConsoleApplication1.sln"找不到可以嘗試變為"src/ConsoleApplication1.sln"stages: - build job: stage: build script: - echo "Restoring NuGet Packages..." - C:\test\nuget.exe restore "ConsoleApplication1.sln" - echo "Solution Build..." - C:\Windows\Microsoft.NET\Framework64\v4.0.30319\msbuild.exe /p:Configuration=Debug /p:Platform="Any CPU" /consoleloggerparameters:ErrorsOnly /maxcpucount /nologo /property:Configuration=Release /verbosity:quiet "ConsoleApplication1.sln" tags: except: - tags
提交代碼測試
請檢查Runner-CI服務器的GitLab-Runner服務是否安裝成功,Runners中的Url地址①是否正確。
GitLab返回信息亂碼,一般是因為GitLab不能識別中文,一般亂碼是PowerShell返回的中文,把PowerShell腳本獨立運行看看是否報錯。所以推薦window搞成英文版的,要是哪位大俠知道GitLab怎么識別中文麻煩分享下哈。
錯誤截圖如下,請檢查Git環境變量是否配置,PowerShell腳本是否獨立為一個文件
點擊Lint,進行腳本驗證,參考資料http://docs.gitlab.com/ee/ci/yaml/README.html
注意
script:
- {空格} {你的命令}
感謝
劈荊斬棘:Gitlab 部署 CI 持續集成 感謝這篇文章讓我少走了很多彎路