利用 Azure Devops 创建和发布 Nuget 包

  • 原 Visual Studio Team Service ,简称 VSTS,能够创建 pipelines 管道以构建应用程序,并将其部署到任何平台、云或应用商店,其他平台可能就没有 Azure Devops 对 windows 支持这么
    好了
  • 这个平台还集成了项目管理、版本控制、BUG 跟踪,与 VS 无缝对接,简直强大
  • 收费吗?开源项目免费,小型团队有用户和时长限制,详情请看Azure DevOps 的定价
  • Azure DevOps 功能时间轴

  • 介绍完之后,下面开始介绍如何使用其打包发布 Nuget 包

注册账号

创建项目

  • 创建组织,创建项目,自行完成,最后面来到下面位置

创建构建流水线

  • 点击 Pipelines,然后再点击 New pipeline

  • 选择 Github

  • 选择仓库,由于项目在组织,所以要特别设置。拉到最底下,选择连接。个人项目直接选择即可

  • 选择已经存在的连接

  • 如果没有的话,点击下面的连接,到 Github 插件市场安装一个,选择一个组织,按提示操作即可

  • 回到上一步选择的连接,之后选择仓库

  • 选择推荐的模板

  • 配置流水线,稍微修改一下Microsoft-hosted agents,以及执行的命令
  • 如果是 build 比较复杂的或者其他语言,可能还需要其他工具,参考pipelines的文档,或者参考这个node 的项目,生成 html 文件并自动提交代码

  • 保存提交,自动添加一个azure-pipelines.yml文件到项目。保存之后,项目自动生成Webhooks,一有提交,就会通知 azure devops 开始执行 build 流水线


  • 运行结果

创建发布流水线

  • 这里才是打包 Nuget,发布 Nuget 的步骤,并且这里提供了很多可用的任务,比如构建、工具箱(复制、下载、压缩,github release)、测试、包管理(npm,nuget)、发布(ssh、k8s)、工具安装(.net core sdk、docker cli、node)。
  • 这里 task 都是定义好的,直接调用和配置参数,就没有 build 流水线那样灵活,build 流水线可全部自己定义在 yml 配置文件

  • 还是新建流水线开始,点击 New pipelines,只不过这回是 release 流水线

  • 没有合适的作业,因此选择一个空的

  • 修改步骤名,所有的步骤连在一起构成一个流水线,比如测试、打包、发布。每个步骤又可以有很多个任务。这里只需要一个就好啦

  • 点击链接,编辑步骤

  • 选择作业运行的代理环境,这里选择有 vs2017 的环境

  • 添加任务,并编辑,修改为 pack 的配置,在这一步就打包成 Nuget 包,打包自动 build

  • 修改为 pack,指定打包的项目,包版本设置以日期命名的格式。注意不要勾选Do not build,除非上一步设置为 build

  • 添加 Nuget 任务

  • 编辑 Nuget 任务为 push,添加自定义 Nuget Server

  • 这里使用 myget 作为测试服务,当然发布到 nuget.org 也是没问题的,都是需要 Feed URL 和 ApiKey。申请之后正确填写即可

  • 保存。完成这一切之后,别忘了最重要的事情,是不是全程没有按过保存按钮

  • 添加需要发布的源,

  • 填写 token

  • 选择目标仓库

  • 设置 dev 分支

  • 测试发布

  • 创建发布,选择某次提交来发布

  • 填写发布信息和标签

  • 点击发布,正常创建发布之后会自动添加发布队列,自动运行,设置触发器之后自动运行

  • 设置触发器,文档,以后每次有 push 操作,会自动执行发布

  • 看下结果,可以看到发布成功了, 至于分支是 master,是因为刚才更新到 master 分支。myget 上也出现了发布的版本,将源https://www.myget.org/F/newlife/api/v3/index.json添加的 VS 的 Nuget 包源即可下载安装,包地址https://www.myget.org/feed/newlife/package/nuget/NewLife.XCode


总结

  • 整个过程比较懵逼的是不知道整个流程是怎么样了,充分理解这个流水线之后,就知道每一步可以干什么了,然后根据自己需求来自定义
  • 手把手图文式教程,对于自己来说加深印象和理解,对于别人来说可以作为参考

利用 Azure Devops 创建和发布 Nuget 包的更多相关文章

  1. 【Azure DevOps系列】Azure DevOps构建并发布Nuget程序包

    在Azure DevOps中,管道可以用来构建解决方案,O(∩_∩)O哈哈~快万能了,本章主要介绍如何创建Nuget包并且将其发布到Nuget服务器的过程. 前面我创建了一个非常简单的类库,这边我不做 ...

  2. Azure Terraform(九)利用 Azure DevOps Pipeline 的审批来控制流程发布

    一,引言 Azure Pipeline 管道是一个自动化过程:但是往往我们由于某种原因,需要在多个阶段之前获得批准之后再继续下一步流程,所以我们可以向Azure Pipeline 管道添加审批!批准流 ...

  3. Azure Terraform(十)利用 Azure DevOps 的条件语句选择发布环境

    一,引言 之前我讲过的所有的案例中,都是将整个Azure Resource 部署到同一个订阅下,没有做到灵活的在 Azure Pipeline 在运行前选择需要部署的环境.在实际的项目开发中,我们也会 ...

  4. Azure Terraform(五)利用Azure DevOps 实现自动化部署基础资源

    一,引言 上一篇我们结合学习 Azure Traffic Manger 的内容,做了一个负载均衡的基础设施架构.通过 Terraform 部署执行计划,将整个 Azure Traffic Manage ...

  5. Azure Terraform(七)利用Azure DevOps 实现自动化部署基础资源(补充)

    一,引言 之前一篇文章有讲解到利用 利用Azure DevOps 实现自动化部署基础资源,当时 TF 代码没有针对 Azure 各个资源的封装,所有的资源代码全部写在一个 main.tf 文件中.然后 ...

  6. Azure Terraform(八)利用Azure DevOps 实现Infra资源和.NET CORE Web 应用程序的持续集成、持续部署

    一,引言 上一篇讲解到利用 Azure DevOps 将整个 Azure Web App,Azure Traffic Manager profile,Azure Storage Account,Azu ...

  7. Azure App Service(一)利用Azure DevOps Pipeline 构建镜像,部署应用程序

    一,引言 起因是前两天项目上做测试,需要我把写好的基于.NET 5 的 Web 测试程序作成 Docker 镜像.当我在本地验证完功能后,准备利用 Docker 构建应用程序镜像的时候,发现系统不支持 ...

  8. Azure DevOps(一)利用Azure DevOps Pipeline 构建应用程序镜像到AWS ECR

    一,引言 最近项目上让开始学习AWS,作为一名合格的开发人员,当然也是学会利用Azure DevOps Pipeline 将应用程序部署到 AWS ECS(完全托管的容器编排服务).我们要学会将应用程 ...

  9. Azure DevOps(二)利用Azure DevOps Pipeline 构建基础设施资源

    一,引言 上一篇文章记录了利用 Azure DevOps 跨云进行构建 Docker images,并且将构建好的 Docker Images 推送到 AWS 的 ECR 中.今天我们继续讲解 Azu ...

随机推荐

  1. [Jmeter] 在jenkins上通过命令行运行时,针对单个listener生成的chart报告,并通过邮件发送出来

    We need to use cmdrunner-2.0.jar Firstly, download cmdrunner-2.0.jar from here:https://jmeter-plugin ...

  2. 使用JavaScript实现表现和数据分离

    <!DOCTYPE html> <html lang="zh"> <head> <meta charset="utf-8&quo ...

  3. 要显示的联系人——>自定义-bug

    自定义中将“电话”下的“所有联系人”不勾选,但是Contacts列表还是显示PHONE联系人. SELECT _id, display_name, agg_presence.mode AS conta ...

  4. 【RabbitMQ】 RabbitMQ安装

    MQ全称为Message Queue, 消息队列(MQ)是一种应用程序对应用程序的通信方法.应用程序通过读写出入队列的消息(针对应用程序的数据)来通信,而无需专用连接来链接它们.消息传递指的是程序之间 ...

  5. [C#]this.Invoke和this.BeginInvoke的区别

    private void button1_Click(object sender, EventArgs e) { "; this.Invoke(new EventHandler(delega ...

  6. response设置编码格式

    response设置编码的三种方式 在java后台的Action代码或者Servlet代码中用response的方法来设置输出内容的编码方式,有以下三个方法: 1.response.setCharac ...

  7. ServiceDesk Plus服务管理软件,减轻帮助台负荷,提高IT效率

  8. 字符串方法 split() & replace()

    split() 语法:stringObject.split(separator) 功能:把一个字符串分割成字符串数组 返回值:Array 说明:separator 是必须的,分隔符. var str= ...

  9. Seaborn图形可视化库

    一.绘图 1)快速生成图 import numpy as np import matplotlib.pyplot as plt def sinplot(filp=): x = np.linspace( ...

  10. android 应用商店

    下面更多 http://wiki.youmi.net/Wiki/PromotionChannelIDs 小米 http://market.xiaomi.com/dev安智市场 http://dev.a ...