我在之前的文章里介绍了如何一步步配置CI/CD来部署Teams App( 之前的文章 ),随着Azure DevOps的发展,微软推出了Azure Pipelines。在这篇文章中,主要介绍什么是Azure Pipelines,以及如何使用Azure Pipelines来进行Teams App的构建、测试和部署工作负载

什么是Azure Pipelines

微软发布了Azure Pipelines,他们新的 CI/CD 服务,是 Azure DevOps 产品的一部分。Azure Pipelines 可用于构建、测试和部署工作负载,并可以让各种语言、项目类型和平台协同工作。

作为 Visual Studio Team Services(VSTS)的后续产品,Azure DevOps 由几个组件组成,Azure Boards、Azure Repos、Azure Test Plans、Azure Artifacts和 Azure Pipelines。Azure DevOps 提供了端到端服务,用于共享代码、跟踪工作并提供类似于其他服务(如Atlassian Stack)的解决方案。 这些组件都是 Azure DevOps 链中的一个链接,Azure Pipelines 实现了 CI/CD 管道的角色。 此外,Azure Pipelines 具有以前在 VSTS 中可用的所有功能,并补充了一些新功能:

  • Azure Pipelines 是一项独立服务,可以独立于其他 Azure DevOps 组件使用。
  • 可以直接通过 GitHub Marketplace 获取和配置新的管道。
  • 更好地与 GitHub 集成,包括拉取请求的构建和跟踪代码提交及其相关问题。
  • 通过容器作业来支持原生容器。
  • 开源项目可以免费使用 Azure Pipelines。
  • 相比 VSTS,Azure Pipelines 提供了更加灵活的免费使用限制。

如何利用Azure Pipelines来构建Build

之前的文章中,提到如何利用Azure DevOps来Build、Deploy应用到Azure上,实现CI/CD的整个部署过程,简单回顾下配置的步骤:

1、在Azure DevOps中新建Repo, 本地Clone,Push代码
2、在Azure DevOps中并编译生成一个 .NET Core应用, 配置持续集成环境
3、将Azure添加到Azure DevOps的Service Endpoint(仅限中国区的Azure)
4、在Azure中创建App Service
5、配置Azure DevOps中构建的应用Release到Azure App Service

下面,一步步的演示,如何使用Azure Pipelines构建一个新的Build,其中一个文件azure-pipelines.yml,是整个Azure Pipelines服务的关键, 我们将逐个分析整个yml配置的含义

一、配置build pipelines

1、进入到Azure Devops, 看到整个的功能模块导航,和之前已经有很大的变化,这里我们略过新建Repos,Check in代码的过程, 找到 “Pipelines”,点击 “Build”,新建New build pipelines

2、这里“Location” 选择 “Azure Repos” 

3、选择项目代码的Repos 

4、Build的配置模板,选择“ASP.NET Core”, 

5、配置完成,开始整个Build的过程 

到此整个自动化Build的过程就已经配置好了,和之前最大的一个不同是,回到Code Repos, 看到在我们的项目代码中,自动生成了一个名为azure-pipelines.yml文件

打开这个yml文件,看下里面的配置参数

pool:vmImage: 'vs2017-win2016'variables:buildConfiguration: 'Release'steps:
- script: dotnet build --configuration $(buildConfiguration)displayName: 'dotnet build $(buildConfiguration)'- task: DotNetCoreCLI@2inputs:command: publishpublishWebProjects: Falseprojects: 'MicrosoftTeams.OutgoingWebhook.csproj'arguments: '--configuration $(BuildConfiguration) --output $(Build.ArtifactStagingDirectory)'zipAfterPublish: True

二、Azure Pipelines中yml文件释义

1、首先,pool vmImage参数

pool:vmImage: 'vs2017-win2016'

这里的pool vmImage参数表示:Build Environment, 其中的可选项有 ‘ubuntu-16.04’、’macOS-10.13’、’vs2017-win2016’,在Microsoft-hosted agents中有不同 的系统环境及其版本供选择

2、variables

  variables:buildConfiguration: 'Release'

这里的buildConfiguration参数表示: Build的版本是Release版本

3、steps

steps:
- script: dotnet build --configuration $(buildConfiguration)displayName: 'dotnet build $(buildConfiguration)'

这里的script: dotnet build表示:执行build的工作脚本,命令,并且进行build的输出配置,或者使用.NET Core task的模式进行配置,如下:

steps:
- task: DotNetCoreCLI@2inputs:command: restoreprojects: '**/*.csproj'feedsToUse: confignugetConfigPath: NuGet.config    # Relative to root of the repositoryexternalFeedCredentials: <Name of the NuGet service connection>

在restore之前,如果我们想要在Microsoft-hosted agent指定 .Net Core SDK的版本进行Build,可以在yml配置中加入如下配置
```yml
- task: DotNetCoreInstaller@0inputs:version: '2.1.300' # replace this value with the version that you need for your project

4、task

- task: DotNetCoreCLI@2inputs:command: publishpublishWebProjects: Falseprojects: 'MicrosoftTeams.OutgoingWebhook.csproj'arguments: '--configuration $(BuildConfiguration) --output $(Build.ArtifactStagingDirectory)'zipAfterPublish: True

其中task表示:使用.NET Core task的进行模式执行任务构建, command则别是构建的执行的命令,比如常用的build、test、publish等

三、总结

从上面的yaml的脚本配置,结合微软的官方文档, 如下截图:

我们可以这样去理解,相当于以前从可视化的界面进行CI的配置(截图中的Designer模式),现在在Azure Pipelines中使用yaml文件进行配置(截图中的YAML模式),这进一步方便了对CI过程的配置,当我们需要改变 我们的CI行为,比如增减组建,步骤等,直接修改配置文件,当push代码,merge到分支后,则整个构建流程会按照新的配置文件进行构建,这无疑提供了更大的灵活性。

参考文档

  • 1、Build, test, and deploy .NET Core apps in Azure Pipelines
  • 2、Build .NET Core projects with Azure Pipelines or Team Foundation Server
  • 3、Free Azure Build Pipelines for Open Source Projects
  • 4、微软发布 Azure Pipelines,开源项目可无限制使用 CI/CD

使用Azure Pipelines来实现Teams App的CI相关推荐

  1. 使用Azure Serverless来开发Teams App

    Azure Function可以说比较早期的一个serverless服务,随着这些年云服务的大行其道,Serverless在概念越来越火,什么叫serverless? Serverless compu ...

  2. 使用Azure轻松实现Teams App的全球合规性

    我在之前的一篇博客里面讲了合规性对于我们Teams app是非常重要的,因为office365平台就是面向全世界用户的,我们开发的teams app一旦发布后,立刻就会有各国各地区的用户来进行安装使用 ...

  3. 将Teams app升级到net6

    net6 发布已经有一个多月了,因为我的LuckyDraw app是使用Azure app service,当时我查了一下app service还没有ready,昨天我又查看了一下,发现app ser ...

  4. Teams App抽奖机器人 - 基础架构

    今天我们来聊一下,一个Teams app的infrastructure,我在考虑LuckyDraw的主要出于这么几个出发点: 可管理性.因为这是一个个人产品,以后维护工作也只有我一个人,所以我希望整个 ...

  5. 使用Azure Pipelines从GitHub发布NuGet包

    [本文目录] ps: 阅读本文大概需要20分钟 欢迎大家点击上方公众号链接关注我,了解新西兰码农生活 什么是 YAML? name/value 名称/值 collections 集合 multiple ...

  6. Teams app 的 SSO 机制

    我们来继续我们的 Teams sample 之旅,上一个讲了 Tab app,那我们这里再深入一步,看一下如何使用 sso 机制. sso 是一个很有用机制,它可以让我们的 teams app 能获取 ...

  7. 微软发布新的Azure Pipelines功能和集成

    在最近举行的Connect()大会上,微软发布了几项新功能以及与Azure Pipelines的集成,包括Visual Studio Code的Azure Pipelines扩展.GitHub版本管理 ...

  8. 使用环境变量来配置 Teams App 的 manifest

    上篇文章我们介绍了 Teams 的 Developer Portal,今天我想分享一个dev portal里一个比较实用的功能.这个功能在之前的 App Studio 里没有.这个功能叫 Enviro ...

  9. 在Teams app代码中enable nullable

    昨天讲了一下如何把代码升级到 net6,今天我优化了好几个小时更新代码,enable了nullable. c#的nullable我一直非常喜欢,它可以帮助开发人员,让开发人员去思考,哪些地方需要可以为 ...

最新文章

  1. 在中间层 .NET 应用程序中通过授权管理器使用基于角色的安全
  2. mysql replace语句
  3. 2021年春季学期-信号与系统-第十二次作业参考答案
  4. 安卓开发8-WebView支持文件上传
  5. html文档表示表格的标记,【单选题】在HTML文档中用于表示表格的标记对是( )...
  6. sync是同步还是非同步_MySQL半同步复制你可能没有注意的点
  7. 链表list(链式存储结构实现)_VOL.2 如何在python中实现链式存储结构
  8. 【java/C# 服务器】IOS 配置推送证书 p12文件流程 - 勿以己悲
  9. xilinx SoC学习笔记之PetaLinux
  10. 使用URL直接进入SAP CRM WebClient UI某个订单的明细页面
  11. C#使用Xamarin开发可移植移动应用进阶篇(7.使用布局渲染器,修改默认布局),附源码
  12. 亲一下就搞定的事,绝不花钱解决!
  13. CSS Sprites原理
  14. 编译原理教程_7 语法制导的语义计算
  15. 如何在twitter上看片_我在Twitter上一年学到的东西
  16. https证书过期时间应该怎么处理
  17. Android手绘涂鸦PaintView
  18. MockFlow线框图、原型软件
  19. SecureCRT方向键不可用
  20. Python 命令行参数:Argparse 与 Click

热门文章

  1. 计算机硬件:内存条的基础知识笔记
  2. mysql数据库根据上传的经纬度计算距离
  3. 绝对编码和增量编码_用户体验设计师应该学习编码吗? 绝对
  4. extjs6 引入ux_关于UX以及如何摆脱UX的6种常见误解
  5. qt ui指针和本类对象_您需要了解的有关UI设计的形状和对象的所有信息
  6. Vue2 彻底从 Flow 重构为 TypeScript,焕然一新!
  7. markdown流程图画法小结
  8. 微信小程序把玩(三)tabBar底部导航
  9. js高级程序设计的笔记(一)
  10. linux下查看mysql的当前连接情况