Azure Terraform(八)利用Azure DevOps 实现Infra资源和.NET CORE Web 应用程序的持续集成、持续部署
一,引言
上一篇讲解到利用 Azure DevOps 将整个 Azure Web App,Azure Traffic Manager profile,Azure Storage Account,Azure Key Vault 部署到 Azure 上,我们也知道整个 Infra 架构已经实现了自动化部署,而 整个项目Web应该却没事实现CI/CD,那么我们今天继续关注 Azure DevOps。
--------------------Azure Terraform 系列--------------------
1,Azure Terraform(一)入门简介
2,Azure Terraform(二)语法详解
3,Azure Terraform(三)部署 Web 应用程序
4,Azure Terraform(四)状态文件存储
5,Azure Terraform(五)利用Azure DevOps 实现自动化部署基础资源
6,Azure Terraform(六)Common Module
7,Azure Terraform(七)利用Azure DevOps 实现自动化部署基础资源(补充)
8,Azure Terraform(八)利用Azure DevOps 实现Infra资源和.NET CORE Web 应用程序的持续集成、持续部署
二,正文
1,Azure DevOps 创建新项目
输入项目名称 “CnBateBlogWeb_Infrastructure_V3”,点击 “Create” 创建项目。

2,配置 Azure DevOps Pipeline
2.1,Continuous integration
选择 “Pipelines=》pipelines”,点击 “Create Pipeline” 创建管道

点击图中圈中的部分,使用经典编辑器创建没有 YAML 的管道

选择 “GitHub”,并且验证连接
Repository 选择项目代码所在的 Repository
Default branch for manual and scheduled builds 选择:“master”
点击 “Continues”,进入下一步

需要选择模板,搜索框中输入 “ASP.NET Core”,选择对应的模板,点击“Apply”

由于我这里演示的 Web 项目没有单元测试,所有可以将 “Test” 整个Task 移除掉
选中当前 “Task”,点击 “Remove” 进行移除。

切换到 “Triggers”,开启 “Enable continuous intergration” 和 “Enable pull request validation”


最后,我们修改当前 pipeline 的名称为 “CnBateBlogWeb_ASP.NET Core-CI”,并且点击 “Save&queue” 保存并且加入到队列

运行 pipeline,点击 “Save and run”

稍等之后,我们可以看到运行成功

2.2,Continuous Deploy
2.2.1,添加 Infra Deploy
选择 “Pipeline=》Releases”,点击 “New pipeline” 创建新的 releases pipeline

首先添加 Infra Stage,我就不过多演示了,大家可以参考
相关 Task

相关参数变量:
| Name | Value |
| cnbateblogweb01_appservicename |
CnBateBlogWeb01 |
| cnbateblogweb02_appservicename |
CnBateBlogWeb02 |
| keyvault | cnbate-terraform-kv8 |
| keyvault_sc | terraform-stste-storage-key |
| storage_account | cnbateterraformstorage |
| storage_account_container | terraform-state |
| storage_account_container_key | cnbate.terraform.stats |
| terraform_rg | Web_Test_TF_RG |

修改 “releases pipeline” 名称 “CnBateBlogWeb_pipeline_CD”,点击 “Save” 进行保存操作

2.2.2,添加 Application Deploy
点击 “+Add”,添加新的 “Artifacts”

选择 “Build”,编辑相关参数
Project 选择:“CnBateBlogWeb_Infrastructure_V3”
Source(build pipeline):"CnBateBlogWeb_ASP.NET Core-CI"
点击 “Add”,确认添加 "Artifacts"

点击 “+Add” 添加 Application Deploy Step

模板选择先点击 “Empty job”,添加一个新的空Job

修改当前 Stage name 为 “Deploy Application”

接下来我们为当前 Job 添加 task
搜索框中输入 “Azure App Service deploy”,点击 “Add”

修改相关参数
Display name:“Azure App Service Deploy: $(cnbateblogweb01_appservicename)”
Azure subscription 选择当前自己的订阅
App Service type 选择:“Web App on Linux”
App Service name:“$(cnbateblogweb01_appservicename)”

Package of folder:选择 "CnBateBlogWeb_ASP.NET Core-CI" 下的项目 Build 成功的 Package or folder,点击 “OK”

接下来我们添加第二个 Azure App Service Deploy

最后,点击 “Save” 进行保存操作

至于项目的 “Artifacts” 的触发方式,大家可以结合自己实际项目,合理选择。当前我不设置任何自动触发机制

3,测试运行 Pipeline,部署 Infra 资源、Application 资源
点击 “Create release”,运行 releases pipeline

点击 “Create” 确认创建

部署成功

我们转到 Azure Portal 查看资源部署情况

访问 "CnBateBlogWeb01"

访问 "CnBateBlogWeb02"

访问 Traffic Manager profile 的 DNS:”http://cnbateblogweb.trafficmanager.net/“

Bingo,成功!!!!!φ(゜▽゜*)♪φ(゜▽゜*)♪*★,°*:.☆( ̄▽ ̄)/$:*.°★* 。
三,结尾
今天我们通过 Azure DevOps 将基础设施资源和应用项目部署到 Azure 上,文中的实践操作比较多,大家要多多练习。本文所分享的内容也存在着很多我自己的一些理解,有理解不到位的,还希望多多包涵,并且指出不足之处。
参考资料:Terraform 官方,azurerm 文档
Terraform_Cnbate_Traffic_Manager github:https://github.com/yunqian44/Terraform_Cnbate_Traffic_Manager
CnBateBlogWeb github:https://github.com/yunqian44/CnBateBlogWeb
作者:Allen
版权:转载请在文章明显位置注明作者及出处。如发现错误,欢迎批评指正。
Azure Terraform(八)利用Azure DevOps 实现Infra资源和.NET CORE Web 应用程序的持续集成、持续部署的更多相关文章
- Azure Service Bus(三)在 .NET Core Web 应用程序发送ServiceBus Queue
一,引言 在之前上一篇讲解到 Azure ServiceBus Queue 中,我们实地的演示了在控制台中如何操作ServiceBus Queue ,使用 Azure.Messgae.Service ...
- 03 持续集成和部署/基础设施 - DevOps之路
02 持续集成和部署/基础设施 - DevOps之路 文章Github地址,欢迎start:https://github.com/li-keli/DevOps-WiKi 服务的持续集成和部署这里有两套 ...
- 构建gitlab+Jenkins+harbor+kubernetes的DevOps持续集成持续部署环境
构建gitlab+Jenkins+harbor+kubernetes的DevOps持续集成持续部署环境 整个环境的结构图. 一.准备工作 gitlab和harbor我是安装在kubernetes集群外 ...
- 测试需要了解的技术之基础篇三__持续集成持续交付DevOps
持续集成.持续交付.DevOps 1.容器技术Docker:容器技术介绍.Docker安装与加速配置.Docker基础命令.Docker搭建selenium.Docker搭建持续集成平台Jenkins ...
- Azure Terraform(九)利用 Azure DevOps Pipeline 的审批来控制流程发布
一,引言 Azure Pipeline 管道是一个自动化过程:但是往往我们由于某种原因,需要在多个阶段之前获得批准之后再继续下一步流程,所以我们可以向Azure Pipeline 管道添加审批!批准流 ...
- Azure Terraform(十)利用 Azure DevOps 的条件语句选择发布环境
一,引言 之前我讲过的所有的案例中,都是将整个Azure Resource 部署到同一个订阅下,没有做到灵活的在 Azure Pipeline 在运行前选择需要部署的环境.在实际的项目开发中,我们也会 ...
- 如何利用Azure DevOps快速实现自动化构建、测试、打包及部署
前两天有朋友问我,微软的Azure好用吗,适不适合国人的使用习惯,我就跟他讲了下,Azue很好用,这也是为什么微软云营收一直涨涨涨的原因,基本可以再1个小时内实现自动化构建.打包以及部署到Azure服 ...
- 利用Azure Functions和k8s构建Serverless计算平台
题记:昨晚在一个技术社区直播分享了"利用Azure Functions和k8s构建Serverless计算平台"这一话题.整个分享分为4个部分:Serverless概念的介绍.Az ...
- Azure Web App (一)发布你的Net Core Web 项目
一,引言 今天我们看一下Azure上的一个服务-----Web 应用,我们都知道云计算的三大模式:Iaas(基础设施即服务),Paas(平台即服务),Saas(软件即服务). Iass,其实就是虚拟主 ...
随机推荐
- java连接mongodb数据库
最近毕设需要用到这个数据库.然而又不会,没办法,只能上网学习学习. 记录一下java连接mongodb数据库的简单方法.这里只是记录一下学习.熟悉一下CURD方法. 但是毕业用到的是SpringBoo ...
- Redis底层数据结构实现
REDIS 较宽泛的支持5种数据结构 分别为 字符串 列表 集合 散列 有序集合 关于这几种数据结构的使用 相信网上有很多资料,查看官网API 也很详细了 读者可以自己随意翻阅 很方便 . 接下 ...
- API企业级网关设计
前言 摘自--https://github.com/aCoder2013/blog/issues/35 假设你正在开发一个电商网站,那么这里会涉及到很多后端的微服务,比如会员.商品.推荐服务等等. 那 ...
- C语言实现的多线程定时器
目录 1. 大致功能介绍 2. API库介绍 3. 一个例子 4. 库文件源码 注意事项 1. 大致功能介绍 实现任务列表,定时器会间隔一段时间遍历列表发现要执行的任务 任务列表中的所有任务并行执行 ...
- TurtleBot3 Waffle (tx2版华夫)(8)键盘控制
1)[Remote PC] 启动roscore $ roscore 2)[Turbot3] 启动turbot3 $ roslaunch turbot3_bringup minimal.launch 3 ...
- Modbus java slave app
文章实现 Modbus slave app , 用 serial rtu 传输, 代码只实现监听功能(本人测试可行), 要实现写功能,可研究一下代码中 updateProcessImage 方法.完整 ...
- golang语法笔记
开始微服务,那就先温习下golang语法吧; golang变量类型 1. 整形 Go %b 表示为二进制 %c 该值对应的unicode码值 %d 表示为十进制 %o 表示为八 ...
- python之shelve、xml、configparser模块
一.shelve模块 shelve模块比pickle模块简单,只有一个open函数,返回类似字典的对象,可读可写;key必须为字符串,而值可以是python所支持的数据类型 import shelve ...
- JVM 源码分析(二):搭建 JDK 8 源码调试环境(Windows 上使用 CLion)
前言 一.准备源码 二.安装 "Bootstrap JDK" 三.配置编译环境 四.编译与测试 五.安装 CMake 和 GDB 五.准备远程调试 六.开始远程调试 前言 上一篇文 ...
- 值得推荐的C#不同版本语言特性
C#语言在不断地版本升级中,为我们提供了很多新的语言特性.其中,有很多使用的语言特性,我觉得在实际开发中用起来很方便,能够简化我们的代码,增强可读性,提高开发效率. 小编不才,在这里给大家整理了一些实 ...