使用Azure Pipelines来实现Teams App的CI

我在之前的文章里介绍了如何一步步配置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 pipelinespipelines_step1

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

3、选择项目代码的Repos pipelines_step3

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

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

到此整个自动化Build的过程就已经配置好了,和之前最大的一个不同是,回到Code Repos, 看到在我们的项目代码中,自动生成了一个名为azure-pipelines.yml文件
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的脚本配置,结合微软的官方文档, 如下截图:
yaml_model

designer_model

我们可以这样去理解,相当于以前从可视化的界面进行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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/278067.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

004-React入门概述

一、概述 参考地址&#xff1a;https://reactjs.org/docs/try-react.html 1.1、本地快速体验 <!DOCTYPE html> <html><head><meta charset"UTF-8" /><title>Hello World</title><script src"https://unpkg.com/react16/…

开发Teams Tabs应用程序

什么是Teams Tabs Tabs是微软Teams的一种十分有用的扩展方式。可以非常方便的和现有的网站或者网页应用进行整合。具体的说明不在这里展开了。可以阅读微软官方的详细说明&#xff1a; https://docs.microsoft.com/en-gb/microsoftteams/platform/concepts/tabs/tabs-overvie…

(转)关于SimpleDateFormat安全的时间格式化线程安全问题

想必大家对SimpleDateFormat并不陌生。SimpleDateFormat 是 Java 中一个非常常用的类&#xff0c;该类用来对日期字符串进行解析和格式化输出&#xff0c;但如果使用不小心会导致非常微妙和难以调试的问题&#xff0c;因为 DateFormat 和 SimpleDateFormat 类不都是线程安全的&…

IDEA开发工具的学习

1.设置jdk的版本 &#xff0c;快捷键&#xff1a;ctrl shirt alt s 打开项目的设置&#xff0c;选择Project 进行 jdk版本的设置。 2.鼠标移到项目上&#xff0c;右键&#xff0c;Show in Explorer 定位到当前项目对应的文件夹中 3.每次关闭项目时&#xff0c;需要手动选择Fi…

顺利达成微软HacktoberFest 2018

昨天收到邮件&#xff0c;我的HacktoberFest 2018奖品终于从美国寄出来了&#xff0c;不知道飘洋过海多久可以寄到。 今年的HacktoberFest 2018除了微软官方博客的宣传&#xff0c;连Channel 9的美女主播也在TWC上大肆宣传。 活动内容是在整个10月份需要给微软的开源代码贡献5…

更新!在线状态和用户的共存模式保持一致

根据用户反馈&#xff0c;我们正在改进&#xff1a;当组织同时使用Microsoft Teams和Skype for Business时的用户在线状态。通过此更新&#xff0c;路由和在线状态将完全保持一致。为确保路由能跟随用户的在线状态&#xff0c;所以在线状态的更新现在会基于用户的共存模式。 如…

centos上安装supervisor来管理dotnetcore等应用程序

supervisor 介绍&#xff1a;这是一款用python编写的进程管理工具&#xff0c;可以守护他管理的所有进程&#xff0c;防止异常退出&#xff0c;以及提供一个可视化的web界面来手动管理&#xff0c;打开关闭重启各种应用&#xff0c;界面如下&#xff1a;关于在centos上安装supe…

新增功能!Trello个人应用程序登陆 Microsoft Teams

从初创企业到《财富》500强公司, Trello是团队在任何项目上进行合作的视觉方式。在Microsoft Teams中, 我们发现围绕项目进行大量对话和协作的方式。因此, 一个首屈一指的项目管理工具应该与团队协作的终极枢纽进行合作, 以便让员工更好地一起工作。 如你所知, 我们已经为Micr…

Linux bc 命令简单学习

1. bash里面能够实现比较简单的四则运算 echo $((10*20)) 注意是 双括号 $ 地址符号. 2. 但是比较复杂的 可能就难以为继了 比如不支持精度 3. 所以这里面需要使用 bc 命令来执行相关的操作. man 内容: usage: bc [options] [file ...] -h --help print this usage and exit…

终于收到HacktoberFest的奖品啦

去年10月份给微软repo提交了5个PR&#xff0c;达成了HacktoberFest 2018&#xff0c;今天终于收到了从美国到澳洲&#xff0c;飘洋过海&#xff0c;姗姗来迟的T-shirt&#xff0c;不过大小正好。算是新年礼物了&#xff0c;哈哈

三、SpringBoot-application.properties配置文件和application.yml配置文件

其实SpringBoot的配置文件有.properties和.yml两种形式&#xff0c;两种配置文件的效果类似&#xff0c;只不过是格式不同而已&#xff0c;孩儿们可以根据下面这几种张截图&#xff0c;通过对比端口号的配置&#xff0c;以及连接SQLServer数据库的配置的书写格式来自己体会两者…

Teams中的快捷键让沟通协作更加高效

使用Teams的快捷键可以帮助我们提高日常沟通协作的效率。 一、快捷键分类 1.常规2.导航3.聊天输入界面4.团队和会议 1.常规 功能桌面版本快捷键WebApp版本快捷键搜索CtrlECtrlE显示命令CtrlSlash (/)CtrlSlash (/)gotoCtrlGCtrlShiftG开始新聊天CtrlNAltN打开设置CtrlComma …

线程间的协作(2)——生产者与消费者模式

2019独角兽企业重金招聘Python工程师标准>>> 1.何为生产者与消费者 在线程世界里&#xff0c;生产者就是生产数据的线程&#xff0c;消费者就是消费数据的线程。 import java.util.concurrent.Executor; import java.util.concurrent.ExecutorService; import java.…

一位面试者提到直接调用vuex中mutations方法

简述是用this.$store.mutations.xxx(xx)方式调用&#xff0c;因从未见过此种调用方式&#xff0c;回来就搜索了一下&#xff0c;查询结果如下 首先前文&#xff1a; 获取 state 的方式有两种&#xff0c;分别是 this.$store.state.num 这种直接获取的方式&#xff0c;以及通过 …

从无到有到完善 - Teams抽奖机器人开发历程

我没有写博客有2&#xff0c;3个月了&#xff0c;好几个朋友来问我怎么不继续了。实际上这几个月我受到微软好友的鼓舞和鼓励&#xff0c;再加上今年2月1日有幸成为了微软中国区第一位Teams的MVP&#xff0c;所以决定不再停留于技术demo&#xff0c;而是使用微软最新的技术开发…

残差网络

作用&#xff1a;使得深层网络可以获得更好的性能&#xff0c;没有它&#xff0c;即使加深网络的层数无法直接获得性能的提升。 我的理解&#xff1a;1、使得低层的特征表示可以越层传递。 2、在反向传播时LOSS可以直接训练低层特征。 3、浅层网络的恒等映射&#xff0c;深层网…

Teams的MessageExtension最新功能:Initiate actions

官方文档到目前为止对这个initiate action的说明比较简洁&#xff0c;由于没有一步步的截图和说明&#xff0c;从头到尾看一遍可能还在云里雾里。 我一步步摸索着走了一遍&#xff0c;发现这个initiate action的功能如此强大&#xff0c;不敢独享&#xff0c;所以写此博文&…

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

今天我们来聊一下&#xff0c;一个Teams app的infrastructure&#xff0c;我在考虑LuckyDraw的主要出于这么几个出发点&#xff1a; 可管理性。因为这是一个个人产品&#xff0c;以后维护工作也只有我一个人&#xff0c;所以我希望整个infrastructure简单、易管理&#xff0c;不…

如何做Teams Bot的测试覆盖

在我昨天的文章中介绍了如果对Teams bot做service level的测试&#xff0c;那到底要写多少的测试代码才算够&#xff1f;如何才算测试到位了&#xff1f;这个时候我们就需要用”测试覆盖率”来衡量&#xff0c;虽然覆盖率高并不一定代表着就可以高枕无忧的以为我们软件质量高了…

Spring Boot开发MongoDB应用实践

本文继续上一篇定时任务中提到的邮件服务&#xff0c;简单讲解Spring Boot中如何使用MongoDB进行应用开发。 上文中提到的这个简易邮件系统大致设计思路如下&#xff1a; 1、发送邮件支持同步和异步发送两种 2、邮件使用MongDB进行持久化保存 3、异步发送&#xff0c;直接将邮件…