本文主要是講解如何使用Azure DevOps+Docker 來實現持續集成Asp.NET Core項目(當然 也可以是任意項目).
打算用三個篇幅來記錄完整的全過程
目錄:
Azure DevOps+Docker+Asp.NET Core 實現CI/CD(二.創建CI持續集成管道)
Azure DevOps+Docker+Asp.NET Core 實現CI/CD(三.實現CD持續部署管道)
覺得有幫助的朋友~可以左上角點個關注,右下角點個推薦
首先,我們先來簡單的介紹一下什么是CI/CD
CI全拼Continuous Integration 持續集成
我們的開發每天基本都會提交多次代碼到主干上,這個時候如果需要編譯或者打包,就會做一些重復性的動作,就可以用持續集成環境來操作。
有集成了,就肯定少不了它的好基友,沒錯就是CD。
CD全拼是Continuous Deployment,是持續部署。
CD還有個小號,交持續交付,英文全稱是Continuous delivery,縮寫也是CD。
CI/CD優點是,重復的工作用自動化來代替、減少時間成本、減少版本發布時間。
作為.NET的開發者,微軟一直都是比較有愛的..從免費強大的IDE到人工智能ML.NET 基本上都提供了免費的入門版本,今天主要介紹的就是Azure DevOps.
Azure DevOps的前身其實大家都熟悉就是TFS,Azure DevOps是由TFS轉為線上Online的產品.
它基本上提供了CI/CD所需要的全部功能。唯一的問題是在國內沒有服務器,最近的服務器在香港。
Azure DevOps提供無限免費的私有倉庫,以及最多5個contributor(貢獻者)賬號和無限的stakeholder(參與者)賬號,注冊即可使用.
這里的代理服務池和各類服務器 都是采用阿里雲的CentOS7.0+系統.
1.提交代碼到Azure DevOps Repos
首先我們創建一個項目(選擇使用GIT作為版本控制工具),進入項目中我們可以看到Repos菜單下如圖:
其實就是提供了一個GIT的倉庫地址,提交代碼即可.
2.創建代理服務器池
其實這里就直接可以用官方提供的代理服務器來進行CI和CD了,但是會有諸多不便,也不方便自己管理.
點擊菜單最下面的Project Settings,如圖:
找到Agent pools
創建一個新的自托管的代理服務器池
3.創建代理服務器
點進去上一步創建的代理服務器池,找到agent
創建一個自己的代理服務器
可以看到微軟給我們提供了多種平台版本的代理服務器客戶端 這里我們選擇linux然后下載復制tar包地址:
回到我們自己阿里雲服務器.
(1)安裝打包編譯需要的支持環境Docker
CentOS安裝Docker我就不詳細描述了,百度一大把資料.
(2)安裝代碼拉取的工具GIT
需要注意的是CentOS自帶的GIT只有1.8+版本,需要升級到2.0+版本才能連接Azure DevOps
具體升級方式可以參考:https://blog.csdn.net/qq_28903377/article/details/86148687
這篇文章的安裝目錄是/usr/local/git/bin 記得自己的安裝目錄/usr/local/git/bin
(3)安裝agent代理服務器客戶端
執行命令 創建一個文件夾,並進入這個文件夾
mkdir myagent && cd myagent
下載微軟提供給我們的agent代理服務器客戶端
wget https://vstsagentpackage.azureedge.net/agent/2.172.2/vsts-agent-linux-x64-2.172.2.tar.gz
解壓
tar -zxvf vsts-agent-linux-x64-2.172.2.tar.gz
運行配置代理服務器:
./config.sh
這里可能會出現一些錯誤提示:Must not run with sudo
注意:代理服務器是基於.NET CORE3.1編寫,所以需要相應的運行環境,如果沒有,請運行如下命令:
./bin/installdependencies.sh to install
創建自己的訪問令牌 (PAT) 進行身份驗證(這里一定要操作,后面需要使用)
點擊右上角選擇access Token
創建一個新的令牌
這里為了方便,我直接選擇了Full access授權這個Token可以訪問所有的內容.
然后會得到一個Token字符串,記得復制保存,因為后面就查不到了,只能重新生成
解決環境問題,創建完Token后,我們繼續運行配置:
- 輸入【Y】接受Team Explorer Everywhere許可協議;
- 輸入服務器URL,即項目的Azure的地址;
- 輸入身份驗證類型,這里直接回車,選擇默認的PAT;
- 輸入個人訪問令牌,即PAT;
- 連接服務器成功后,輸入創建好的代理池;
- 默認代理名稱,也可以進行修改;
- 因為我之前已經創建過了,所以是否替換的選擇選擇了【Y】;
- 輸入工作文件夾,直接回車,選擇默認的【_work】;
這樣就完成了我們的代理服務器的配置工作.
然后運行啟動命令:
./run.sh
這個時候我們應該就能在網頁上看到我們的代理服務器上線了如圖:
4.采用服務的形式運行代理服務器
上面我們的代理服務器雖然上線了,但是在linux中是主線程的形式,退出就關閉了..
我們需要修改為服務的形式來運行.
運行命令安裝服務:
sudo ./svc.sh install
啟動服務:
sudo ./svc.sh start
查看服務狀態:
sudo ./svc.sh status
停止服務:
sudo ./svc.sh stop
更新環境變量(當你有其他插件安裝或者更新時)
./env.sh sudo ./svc.sh stop sudo ./svc.sh start
本篇主要講解了如何創建自己的代理服務器池,下一篇我們主要講解如何創建一個管道來自動編譯和打包我們的項目.