我在之前的文章里介绍了如何一步步配置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. Http持久连接与HttpClient连接池
  2. python列表做参数传值_python不定参数传值怎么做-问答-阿里云开发者社区-阿里云...
  3. Redis笔记(六):Java中使用Redis
  4. kubernetes之一步一个坑
  5. Angular Universal 的演进历史
  6. SAP系统和微信集成的系列教程之九:如何将微信用户发送给微信公众号的内容自动转存到SAP C4C系统
  7. 黄聪:PHP获取MAC地址(转)
  8. combobox之下拉宽度自适应
  9. EOS开发“ Hello world !”
  10. Please review your Gradle project setup in the android/ folde
  11. shell脚本攻略学习笔记(一)小试牛刀
  12. 服务器遭受攻击的解决办法
  13. 各种 IntelliJ IDEA 酷炫插件推荐
  14. 主动微波遥感的测量原理
  15. Collective Opinion Spam Detection: Bridging Review Networks and Metadata(2015KDD)
  16. 云知声完成C轮系列融资13亿 多支国家背景基金参与
  17. rhcsa第二天作业9道题
  18. 电脑上的回收站无法清空
  19. 局域网下别人可以连接共享打印机,我不可以
  20. gitHub 代码从fork到push

热门文章

  1. java中的equals用法
  2. TypeScript 终极初学者指南
  3. React 入门手册
  4. 阿里腾讯面试梳理个人成长经历分享
  5. Spring校验@RequestParams和@PathVariables参数
  6. 【SSH网上商城项目实战19】订单信息的级联入库以及页面的缓存问题
  7. Angular之RouterModule的forRoot与forChild
  8. Java 并发工具箱之concurrent包
  9. nginx安装及负载均衡配置
  10. Teiid:数据虚拟化Data Virtualization平台