主頁 > 軟體工程 > 如何利用Azure DevOps快速實作自動化構建、測驗、打包及部署

如何利用Azure DevOps快速實作自動化構建、測驗、打包及部署

2020-09-11 02:40:34 軟體工程

前兩天有朋友問我,微軟的Azure好用嗎,適不適合國人的使用習慣,我就跟他講了下,Azue很好用,這也是為什么微軟云營收一直漲漲漲的原因,基本可以再1個小時內實作自動化構建、打包以及部署到Azure服務器上,利用周末的時間,寫了這篇文章,分享給大家,希望能幫助一些人快速入手如何使用Azure DevOps自動化構建、測驗以及部署自己的服務,

今天,我給大家一步一步詳細介紹,如何在1個小時內,創建一個Web API專案,實作服務的自動化構建、打包,并自動化部署到Azure上,

1. 創建一個Azure托管存盤庫 (Organization)

第一步,需要在Azure DevOps (https://dev.azure.com/)上創建一個組織團體(Organization),

Organization可以理解為是一個公司(或者一個事業群)或某個機構的所有資料的統一存盤庫,微軟稱之為托管存盤庫,

Host 專案的地區選擇一個最近的區域最好,減少網路延遲,

 

2. 創建一個新的Azure DevOps專案(Project)

  Azure DevOps Project 一般是一個大組或者一個大的周期內共同使用的一個資料及代碼集合,你在創建專案時,可以設定專案名稱以及專案具體的介紹;也可以選擇專案的可見性,可以設定為公開的或者私有的,版本控制可以選擇默認的Git,

  其他選項(例如,作業項處理的模板等),有興趣的可以自己研究,這里不做重點介紹,

  

3. 創建一個新的代碼倉庫(Repository)

  Repository 顧名思義就是存放代碼的地方, 一個Repo 可以有很多個分支,一般默認為master分支, 

 

在這里,我們創建一個名叫AzureWebApps的Repository,并且假設我們以VisualStudio為IDE,選擇VisualStudio .ignore 檔案模板,.ignore 檔案里配置了那些我們納入Git管理的檔案,

 

4.  創建我們的Web API專案,并進行修改,

  4.1 克隆代碼到本地

  我們先把上面創建的AzureWebApps Repo 克隆到本地,方便在本地對代碼進行增刪改,Azure DevOps 本身也提供了在線編輯Git Repo,一般一些微小的改動可以直接在線修改,

 

打開Visual Studio,連接到我們的托管存盤庫,并定位到我們所創建的代碼倉庫(AzureWebApps),點擊“克隆”即可,

(你本機如未安裝Git,請自行到Git官網安裝Git,后面會用到,)

 

4.2 創建HelloAzure API網站,

接下來,我們在VS里來創建一個Web API project,

新建專案模板時,我們選擇“Asp.Net Core Web 應用程式”模板,如下:

然后下一步,我們選擇API的ASP.NET Core Web API: 

 

當我們創建完專案后,默認的API Project是一個隨機回傳天氣預報資訊的API, 我們可以任意修好一些配置,如埠,打包輸出位置,物件型別及屬性等,我在這里簡單加了一個Source 屬性給WeatherForecase.cs. 

 

5. 創建一個構建管道(Build Pipeline)

  此構建管道(Build Pipeline)的作用就是:每當我們有代碼更新(Push)到遠程master分支時,它會自動用來自動構建,(自動測驗,這里略過),自動打包生成Artifacts 供后面自動部署管道使用,

  5.1 創建構建管道 (BuildAndPublishHelloAzure)

  我們在Pipelines 頁面,新建一個Pipeline, 并選擇連接到“Azure Repos Git” 作為代碼倉庫位置,如下圖:

接著,選擇我們上面存放代碼的代碼倉庫(Repository) - AzureWebApps:

 接下來,我們來進行初始化配置我們的構建管道(Build Pipeline),我們給他配置上一個默認的任務(Task)- ASP.Net Core (.NET Framework) , 此Task 會利用VS Build來自動編譯.sln 及 .csproj的專案,

 

這里我簡單介紹下,Azure的一個Pipeline 一般是包含多個任務(Task), 每個任務(Task)是一個最小的運行單元,Azure 市場(Market place)上有很多現成的task 模板可以供咱們直接使用,只需簡單的配置一些引數即可,

因為我們需要把編譯構建HelloAzure的結果包發布到Azure上的某個地方,因此我們需要給我們的Build Pipeline 加一個任務 Publish build artifacts (直接在搜索框里搜‘publish build’):

Publish build artifacts 任務有三個引數,我們保持默認就可以, 請注意,其中Artifact name (drop) 在后面配置部署管道時會用到,

點擊添加完后,咱們就會在左邊的YAML Settings 里看到我們新加的這個任務的設定了,如果需要的話,可以進行修改,最后我們保存我們配置好的構建管道,

保存后,我們可以把我們的管道重命名成一個更有意義的名字,如 BuildAndPublishHelloAzure :

5.2 配置自動化(持續性)構建

構建管道創建好了,接下來我們需要給我們的Repository配置如何自動化構建,

我們的需求是,如果master 分支有代碼更新(包括新建Pull Request, Complete Code/Push),那么就自動運行我們BuildAndPublishHelloAzure Pipeline,

首先我們在分支頁面,找到Master 分支的分支策略管理頁面,添加一個構建策略:

新建的構建策略的配置頁面,觸發一項我們選”Automatic“,這樣每當有新的PullRequest 創建時,就會自動系結此BuildAndPublishHelloAzure Pipeline 進行編譯,構建,跑單元測驗等, 

 最后,我們需要在配置,當有代碼check in (PullRequest Complete)后,也自動運行這個build Pipeline,

在BuildAndPublishHelloAzure 編輯頁面,跳到Triggers(觸發器)這個配置tab頁面,我們勾上并選中“Enable continuous integration” 即可,一般我們只需要對特定的一些分支設定持續性集成構建測驗,所以我這里也只設定了master 分支,

到此,自動化的持續性集成構建 (測驗)及打包已經完成了,

6. 在Azure上創建一個Web APP (Web API) 網站

6.1 創建Azure訂閱(Subscription)

在創建Web 網站之前,我們需要創建一個Azure 訂閱(Subscription,Azure用來收費的賬戶,如果你已經有了,可跳過),登錄www.azure.com, 用微軟賬戶登錄,在門戶頁面創建一個subscription,如下:

 

6.2 創建HelloAzure Web API Application

在Azure Portal (門戶)的搜索框里搜”Api app“, 就回出來 API App 的一個創建模板,點擊它開始創建:

配置好你的網站名字 - JasonHelloAzure,并選擇上一步創建的訂閱(Azure subsciption - Jason Test) ,其他默認即可,

接下來我們將介紹如果將自動化構建生成好的包部署到我們創建的這個API 網站(JasonHelloAzure)上,

 

7. 創建一個發布管道(Release Pipeline)

  此發布管道(Release Pipeline)的作用就是:每當我們有代碼更新(Push)后并已經打包好后,此管道會自動將構建管道生成的Artifacts 自動部署到Azure Web App (JasonHelloAzure),

7.1 創建發布管道HelloAzureReleasePipeline

我們在Releases 頻道,新建一個Release Pipeline, 并選擇連接到“Azure Repos Git” 作為代碼倉庫位置,如下

 

新建是,會彈出來讓你選擇一個模板(如下圖),我們這可以選擇”Azure App Service deployment“, 這個模板適用于所有Azure Web app及其他一些app (如containers 部署,Azure Function apps等):

 

現在我們來給這個部署管道設定部署的來源,點擊Artifacs這個模塊,在右邊會彈出來配置的頁面:

Project 就是我們第二不創建的專案,也是存放我們創建的構建管道的地方,

Source (build pipeline),選擇我們創建的BuildAndPublishHelloAzure 管道,

默認版本(Default Vesion),選擇Latest即可,意思是每當上面的BuildAndPublishHelloAzure管道的最新發布的包,

Source alias, 就是包名的意思,在配置BuildAndPublishHelloAzure構建管道時,有一步配置Artifacts name 配置的就是 "drop”, 這里只需前后配置一致即可,任意字串都可以,

 

7.2 配置自動化持續性部署

現在我們來給部署管道配置持續性部署觸發(Continuous deployment trigger), 這個意味著,每當有新的artifacts 包生成時,就自動觸發這個部署管道進行部署,

點擊Artifacts 模塊里的那個小閃電button, 右邊就會出來持續性部署觸發器的配置頁面,

選擇一個master 分支,啟用Continue deployment trigger, 如下圖:

最后一步,我們來配置部署管道要部署的目的地,也就是配置到我們上面創建好的Azure API App (JasonHelloAzure),

一個部署管道也跟構建管道類似,區別是他包含多個階段(Stage),一個階段又包含任務(Task),

點擊任務選項組(Tasks),在右邊的配置頁里,填好階段名稱,選擇訂閱名稱(Azure subscription - Jason Test),

App type, 由于我們創建的是API App,自然選擇API App, 選了API App 后,最后的App service name下拉框就會出現所有該訂閱下面的API App, 我們選擇JasonHelloAzure及可,

 Deploy Azure App Service 任務的配置,我們保持默認即可,

 

8. 測驗結果與總結

8.1 效果展示

我們直接先手動運行下創建好的“HelloAzureReleasePipeline”部署管道,然后訪問JasonHelloAzure API 網站,如下:

 

最后,我們來試試自動化部署,看看效果(成果)哈 :)

我們創建一個Pull Request, 那么自動跑我們配置好的CodeBuild Policy (其實就是跑BuildAndPublishHelloAzure Pipeline)

 

當Pull Request Complete 后, 會自動跑持續性構建管道,以及部署管道:

約3分鐘后,部署完成,再次訪問JasonHelloAzure API: https://jasonhelloazure.azurewebsites.net/weatherforecast , 結果已經更新:

希望對想用Azure DevOps 對自己的服務做自動化CI/CD的人有幫助,

本文沒有重點介紹測驗部分,可以直接給HelloAzure創建一個UnitTest Project,BuildAndPublishPipelline 可以增加一個跑單元測驗的任務即可以實作自動化構建+測驗了,

8.2 總結

Azure DevOps 整體還是很人性好的,在易用性和可擴展性方面確實做的不錯,對于一些中小企業,還是一個不錯的選擇,可以讓研發人員專注于業務邏輯,省去了一些CI/CD的繁雜瑣事,微軟Azure部門可以說是最具有互聯網基因的事業群了,Azure的產品同時也有了互聯網的敏捷性和易用性,這也是微軟股價持續新高,被華爾街看好的原因,

轉載請註明出處,本文鏈接:https://www.uj5u.com/gongcheng/4052.html

標籤:其他

上一篇:Ansible學習筆記(一):部署管理Windows機器遇到的一些坑

下一篇:一個軟體產品的幸福人生

標籤雲
其他(157675) Python(38076) JavaScript(25376) Java(17977) C(15215) 區塊鏈(8255) C#(7972) AI(7469) 爪哇(7425) MySQL(7132) html(6777) 基礎類(6313) sql(6102) 熊猫(6058) PHP(5869) 数组(5741) R(5409) Linux(5327) 反应(5209) 腳本語言(PerlPython)(5129) 非技術區(4971) Android(4554) 数据框(4311) css(4259) 节点.js(4032) C語言(3288) json(3245) 列表(3129) 扑(3119) C++語言(3117) 安卓(2998) 打字稿(2995) VBA(2789) Java相關(2746) 疑難問題(2699) 细绳(2522) 單片機工控(2479) iOS(2429) ASP.NET(2402) MongoDB(2323) 麻木的(2285) 正则表达式(2254) 字典(2211) 循环(2198) 迅速(2185) 擅长(2169) 镖(2155) 功能(1967) .NET技术(1958) Web開發(1951) python-3.x(1918) HtmlCss(1915) 弹簧靴(1913) C++(1909) xml(1889) PostgreSQL(1872) .NETCore(1853) 谷歌表格(1846) Unity3D(1843) for循环(1842)

熱門瀏覽
  • Git本地庫既關聯GitHub又關聯Gitee

    創建代碼倉庫 使用gitee舉例(github和gitee差不多) 1.在gitee右上角點擊+,選擇新建倉庫 ? 2.選擇填寫倉庫資訊,然后進行創建 ? 3.服務端已經準備好了,本地開始作準備 (1)Git 全域設定 git config --global user.name "成鈺" git c ......

    uj5u.com 2020-09-10 05:04:14 more
  • CODING DevOps 代碼質量實戰系列第二課,相約周三

    隨著 ToB(企業服務)的興起和 ToC(消費互聯網)產品進入成熟期,線上故障帶來的損失越來越大,代碼質量越來越重要,而「質量內建」正是 DevOps 核心理念之一。**《DevOps 代碼質量實戰(PHP 版)》**為 CODING DevOps 代碼質量實戰系列的第二課,同時也是本系列的 PHP ......

    uj5u.com 2020-09-10 05:07:43 more
  • 推薦Scrum書籍

    推薦Scrum書籍 直接上干貨,推薦書籍清單如下(推薦有順序的哦) Scrum指南 Scrum精髓 Scrum敏捷軟體開發 Scrum捷徑 硝煙中的Scrum和XP : 我們如何實施Scrum 敏捷軟體開發:Scrum實戰指南 Scrum要素 大規模Scrum:大規模敏捷組織的設計 用戶故事地圖 用 ......

    uj5u.com 2020-09-10 05:07:45 more
  • CODING DevOps 代碼質量實戰系列最后一課,周四發車

    隨著 ToB(企業服務)的興起和 ToC(消費互聯網)產品進入成熟期,線上故障帶來的損失越來越大,代碼質量越來越重要,而「質量內建」正是 DevOps 核心理念之一。 **《DevOps 代碼質量實戰(Java 版)》**為 CODING DevOps 代碼質量實戰系列的最后一課,同時也是本系列的 ......

    uj5u.com 2020-09-10 05:07:52 more
  • 敏捷軟體工程實踐書籍

    Scrum轉型想要做好,第一步先了解并真正落實Scrum,那么我推薦的Scrum書籍是要看懂并實踐的。第二步是團隊的工程實踐要做扎實。 下面推薦工程實踐書單: 重構:改善既有代碼的設計 決議極限編程 : 擁抱變化 代碼整潔代碼 程式員的職業素養 修改代碼的藝術 撰寫可讀代碼的藝術 測驗驅動開發 : ......

    uj5u.com 2020-09-10 05:07:55 more
  • Jenkins+svn+nginx實作windows環境自動部署vue前端專案

    前面文章介紹了Jenkins+svn+tomcat實作自動化部署,現在終于有空抽時間出來寫下Jenkins+svn+nginx實作自動部署vue前端專案。 jenkins的安裝和配置已經在前面文章進行介紹,下面介紹實作vue前端專案需要進行的哪些額外的步驟。 注意:在安裝jenkins和nginx的 ......

    uj5u.com 2020-09-10 05:08:49 more
  • CODING DevOps 微服務專案實戰系列第一課,明天等你

    CODING DevOps 微服務專案實戰系列第一課**《DevOps 微服務專案實戰:DevOps 初體驗》**將由 CODING DevOps 開發工程師 王寬老師 向大家介紹 DevOps 的基本理念,并探討為什么現代開發活動需要 DevOps,同時將以 eShopOnContainers 項 ......

    uj5u.com 2020-09-10 05:09:14 more
  • CODING DevOps 微服務專案實戰系列第二課來啦!

    近年來,工程專案的結構越來越復雜,需要接入合適的持續集成流水線形式,才能滿足更多變的需求,那么如何優雅地使用 CI 能力提升生產效率呢?CODING DevOps 微服務專案實戰系列第二課 《DevOps 微服務專案實戰:CI 進階用法》 將由 CODING DevOps 全堆疊工程師 何晨哲老師 向 ......

    uj5u.com 2020-09-10 05:09:33 more
  • CODING DevOps 微服務專案實戰系列最后一課,周四開講!

    隨著軟體工程越來越復雜化,如何在 Kubernetes 集群進行灰度發布成為了生產部署的”必修課“,而如何實作安全可控、自動化的灰度發布也成為了持續部署重點關注的問題。CODING DevOps 微服務專案實戰系列最后一課:**《DevOps 微服務專案實戰:基于 Nginx-ingress 的自動 ......

    uj5u.com 2020-09-10 05:10:00 more
  • CODING 儀表盤功能正式推出,實作作業資料可視化!

    CODING 儀表盤功能現已正式推出!該功能旨在用一張張統計卡片的形式,統計并展示使用 CODING 中所產生的資料。這意味著無需額外的設定,就可以收集歸納寶貴的作業資料并予之量化分析。這些海量的資料皆會以圖表或串列的方式躍然紙上,方便團隊成員隨時查看各專案的進度、狀態和指標,云端協作迎來真正意義上 ......

    uj5u.com 2020-09-10 05:11:01 more
最新发布
  • windows系統git使用ssh方式和gitee/github進行同步

    使用git來clone專案有兩種方式:HTTPS和SSH:
    HTTPS:不管是誰,拿到url隨便clone,但是在push的時候需要驗證用戶名和密碼;
    SSH:clone的專案你必須是擁有者或者管理員,而且需要在clone前添加SSH Key。SSH 在push的時候,是不需要輸入用戶名的,如果配置... ......

    uj5u.com 2023-04-19 08:41:12 more
  • windows系統git使用ssh方式和gitee/github進行同步

    使用git來clone專案有兩種方式:HTTPS和SSH:
    HTTPS:不管是誰,拿到url隨便clone,但是在push的時候需要驗證用戶名和密碼;
    SSH:clone的專案你必須是擁有者或者管理員,而且需要在clone前添加SSH Key。SSH 在push的時候,是不需要輸入用戶名的,如果配置... ......

    uj5u.com 2023-04-19 08:35:34 more
  • 2023年農牧行業6大CRM系統、5大場景盤點

    在物聯網、大資料、云計算、人工智能、自動化技術等現代資訊技術蓬勃發展與逐步成熟的背景下,數字化正成為農牧行業供給側結構性變革與高質量發展的核心驅動因素。因此,改造和提升傳統農牧業、開拓創新現代智慧農牧業,加快推進農牧業的現代化、資訊化、數字化建設已成為農牧業發展的重要方向。 當下,企業數字化轉型已經 ......

    uj5u.com 2023-04-18 08:05:44 more
  • 2023年農牧行業6大CRM系統、5大場景盤點

    在物聯網、大資料、云計算、人工智能、自動化技術等現代資訊技術蓬勃發展與逐步成熟的背景下,數字化正成為農牧行業供給側結構性變革與高質量發展的核心驅動因素。因此,改造和提升傳統農牧業、開拓創新現代智慧農牧業,加快推進農牧業的現代化、資訊化、數字化建設已成為農牧業發展的重要方向。 當下,企業數字化轉型已經 ......

    uj5u.com 2023-04-18 08:00:18 more
  • 計算機組成原理—存盤器

    計算機組成原理—硬體結構 二、存盤器 1.概述 存盤器是計算機系統中的記憶設備,用來存放程式和資料 1.1存盤器的層次結構 快取-主存層次主要解決CPU和主存速度不匹配的問題,速度接近快取 主存-輔存層次主要解決存盤系統的容量問題,容量接近與價位接近于主存 2.主存盤器 2.1概述 主存與CPU的聯 ......

    uj5u.com 2023-04-17 08:20:31 more
  • 談一談我對協同開發的一些認識

    如今各互聯網公司普通都使用敏捷開發,采用小步快跑的形式來進行專案開發。如果是小專案或者小需求,那一個開發可能就搞定了。但對于電商等復雜的系統,其功能多,結構復雜,一個人肯定是搞不定的,所以都是很多人來共同開發維護。以我曾經待過的商城團隊為例,光是后端開發就有七十多人。 為了更好地開發這類大型系統,往 ......

    uj5u.com 2023-04-17 08:18:55 more
  • 專案管理PRINCE2核心知識點整理

    PRINCE2,即 PRoject IN Controlled Environment(受控環境中的專案)是一種結構化的專案管理方法論,由英國政府內閣商務部(OGC)推出,是英國專案管理標準。
    PRINCE2 作為一種開放的方法論,是一套結構化的專案管理流程,描述了如何以一種邏輯性的、有組織的方法,... ......

    uj5u.com 2023-04-17 08:18:51 more
  • 談一談我對協同開發的一些認識

    如今各互聯網公司普通都使用敏捷開發,采用小步快跑的形式來進行專案開發。如果是小專案或者小需求,那一個開發可能就搞定了。但對于電商等復雜的系統,其功能多,結構復雜,一個人肯定是搞不定的,所以都是很多人來共同開發維護。以我曾經待過的商城團隊為例,光是后端開發就有七十多人。 為了更好地開發這類大型系統,往 ......

    uj5u.com 2023-04-17 08:18:00 more
  • 專案管理PRINCE2核心知識點整理

    PRINCE2,即 PRoject IN Controlled Environment(受控環境中的專案)是一種結構化的專案管理方法論,由英國政府內閣商務部(OGC)推出,是英國專案管理標準。
    PRINCE2 作為一種開放的方法論,是一套結構化的專案管理流程,描述了如何以一種邏輯性的、有組織的方法,... ......

    uj5u.com 2023-04-17 08:17:55 more
  • 計算機組成原理—存盤器

    計算機組成原理—硬體結構 二、存盤器 1.概述 存盤器是計算機系統中的記憶設備,用來存放程式和資料 1.1存盤器的層次結構 快取-主存層次主要解決CPU和主存速度不匹配的問題,速度接近快取 主存-輔存層次主要解決存盤系統的容量問題,容量接近與價位接近于主存 2.主存盤器 2.1概述 主存與CPU的聯 ......

    uj5u.com 2023-04-17 08:12:06 more