利用 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. python输出格式对齐问题

    采用.format打印输出时,可以定义输出字符串的输出宽度,在 ':' 后传入一个整数, 可以保证该域至少有这么多的宽度. 用于美化表格时很有用. >>> table = {'Goo ...

  2. 【搜索】 Prime Path

    #include<cstdio> #include<cstring> #include<cmath> #include<queue> #include& ...

  3. 8月的list

    多校的list: 第一周的多校list: k路归并 (思想大概理解了,还没实现 莫比乌斯 树归 第三场的多校list: 斯坦纳树 第四场多校: Pollard_rho算法和Miller_Rabin   ...

  4. 01.Java 开发简单的计算器

    难度为一般,适合具有 Java 基础和 Swing 组件编程知识的用户学习一. 实验介绍1.1 实验内容本次实验利用Java开发一个可以进行简单的四则运算的图形化计算器,会使用到 Java Swing ...

  5. crt转cer ,6.0以上的android系统证书请求配置

    1.在服务器人员,给你发送的crt证书后,进到证书路径,执行下面语句  openssl x509 -in 你的证书.crt -out 你的证书.cer -outform der 这样你就可以得到cer ...

  6. Vue自定义指令报错:Failed to resolve directive: xxx

    Vue自定义指令报错 Failed to resolve directive: modle 这个报错有2个原因: 1.指令单词拼错 2.Vue.directive() 这个方法没有写在 new Vue ...

  7. ACM-ICPC 2018 徐州赛区网络预赛 G Trace(逆向,两颗线段树写法)

    https://nanti.jisuanke.com/t/31459 思路 凡是后面的轨迹对前面的轨迹有影响的,可以尝试从后往前扫 区间修改需要push_down,单点更新所以不需要push_up(用 ...

  8. linux source命令的用法

    source命令用法:source FileName作用:在当前bash环境下读取并执行FileName中的命令.(如把ls写入a.txt,然后source a.txt 就会执行ls命令,列出目录)注 ...

  9. IntelliJ IDEA 2017版 spring-boot2.0.2 搭建 JPA springboot DataSource JPA环境搭建,JPA注解@ManyToOne使用详情;JPA外键设置

    一.数据库原型 数据库模型如图所示,而现在需要根据数据库模型,建立对应的实体类,这在项目重构老数据库,采用新的框架重构上应该是比较常见的. 数据库脚本如下: CREATE TABLE `bomsub` ...

  10. 为什么行内元素不能设置margin-top/margin-bottom/padding-top/padding-bottom?

    HTML 里的元素分为替换元素(replaced element)和非替换元素(non-replaced element).- 替换元素是指用作为其他内容占位符的一个元素.最典型的就是img,它只是指 ...