Azure DevOps+Docker+Asp.NET Core 實現CI/CD(一 .簡介與創建自己的代理池)

前言

本文主要是講解如何使用Azure DevOps+Docker 來實現持續集成Asp.NET Core項目(當然 也可以是任意項目).

打算用三個篇幅來記錄完整的全過程

覺得有幫助的朋友~可以左上角點個關注,右下角點個推薦

 

CI/CD簡介

首先,我們先來簡單的介紹一下什麼是CI/CD

CI全拼Continuous Integration 持續集成
我們的開發每天基本都會提交多次代碼到主幹上,這個時候如果需要編譯或者打包,就會做一些重複性的動作,就可以用持續集成環境來操作。
有集成了,就肯定少不了它的好基友,沒錯就是CD。
CD全拼是Continuous Deployment,是持續部署。
CD還有個小號,交持續交付,英文全稱是Continuous delivery,縮寫也是CD。

CI/CD優點是,重複的工作用自動化來代替、減少時間成本、減少版本發佈時間。

 

Azure DevOps簡介

作爲.NET的開發者,微軟一直都是比較有愛的..從免費強大的IDE到人工智能ML.NET 基本上都提供了免費的入門版本,今天主要介紹的就是Azure DevOps.

Azure DevOps的前身其實大家都熟悉就是TFS,Azure DevOps是由TFS轉爲線上Online的產品.

它基本上提供了CI/CD所需要的全部功能。唯一的問題是在國內沒有服務器,最近的服務器在香港。

Azure DevOps提供無限免費的私有倉庫,以及最多5個contributor(貢獻者)賬號和無限的stakeholder(參與者)賬號,註冊即可使用.

本文的CI/CD概念圖

 

 這裏的代理服務池和各類服務器 都是採用阿里雲的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

具體的解決方案請參考https://github.com/microsoft/azure-pipelines-agent/pull/1713/commits/15a5beea684fa35172d661f3253b93e210409fbb

注意:代理服務器是基於.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

 

 

 

後記

本篇主要講解了如何創建自己的代理服務器池,下一篇我們主要講解如何創建一個管道來自動編譯和打包我們的項目.

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章