利用 Azure Devops 创建和发布 Nuget 包
利用 Azure Devops 创建和发布 Nuget 包
- 原 Visual Studio Team Service ,简称 VSTS,能够创建 pipelines 管道以构建应用程序,并将其部署到任何平台、云或应用商店,其他平台可能就没有 Azure Devops 对 windows 支持这么
好了 - 这个平台还集成了项目管理、版本控制、BUG 跟踪,与 VS 无缝对接,简直强大
 - 收费吗?开源项目免费,小型团队有用户和时长限制,详情请看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,权限设置为读取和读写 hook
 

- 填写 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 包的更多相关文章
- 【Azure DevOps系列】Azure DevOps构建并发布Nuget程序包
		
在Azure DevOps中,管道可以用来构建解决方案,O(∩_∩)O哈哈~快万能了,本章主要介绍如何创建Nuget包并且将其发布到Nuget服务器的过程. 前面我创建了一个非常简单的类库,这边我不做 ...
 - Azure Terraform(九)利用 Azure DevOps Pipeline 的审批来控制流程发布
		
一,引言 Azure Pipeline 管道是一个自动化过程:但是往往我们由于某种原因,需要在多个阶段之前获得批准之后再继续下一步流程,所以我们可以向Azure Pipeline 管道添加审批!批准流 ...
 - Azure Terraform(十)利用 Azure DevOps 的条件语句选择发布环境
		
一,引言 之前我讲过的所有的案例中,都是将整个Azure Resource 部署到同一个订阅下,没有做到灵活的在 Azure Pipeline 在运行前选择需要部署的环境.在实际的项目开发中,我们也会 ...
 - Azure Terraform(五)利用Azure DevOps 实现自动化部署基础资源
		
一,引言 上一篇我们结合学习 Azure Traffic Manger 的内容,做了一个负载均衡的基础设施架构.通过 Terraform 部署执行计划,将整个 Azure Traffic Manage ...
 - Azure Terraform(七)利用Azure DevOps 实现自动化部署基础资源(补充)
		
一,引言 之前一篇文章有讲解到利用 利用Azure DevOps 实现自动化部署基础资源,当时 TF 代码没有针对 Azure 各个资源的封装,所有的资源代码全部写在一个 main.tf 文件中.然后 ...
 - Azure Terraform(八)利用Azure DevOps 实现Infra资源和.NET CORE Web 应用程序的持续集成、持续部署
		
一,引言 上一篇讲解到利用 Azure DevOps 将整个 Azure Web App,Azure Traffic Manager profile,Azure Storage Account,Azu ...
 - Azure App Service(一)利用Azure DevOps Pipeline 构建镜像,部署应用程序
		
一,引言 起因是前两天项目上做测试,需要我把写好的基于.NET 5 的 Web 测试程序作成 Docker 镜像.当我在本地验证完功能后,准备利用 Docker 构建应用程序镜像的时候,发现系统不支持 ...
 - Azure DevOps(一)利用Azure DevOps Pipeline 构建应用程序镜像到AWS ECR
		
一,引言 最近项目上让开始学习AWS,作为一名合格的开发人员,当然也是学会利用Azure DevOps Pipeline 将应用程序部署到 AWS ECS(完全托管的容器编排服务).我们要学会将应用程 ...
 - Azure DevOps(二)利用Azure DevOps Pipeline 构建基础设施资源
		
一,引言 上一篇文章记录了利用 Azure DevOps 跨云进行构建 Docker images,并且将构建好的 Docker Images 推送到 AWS 的 ECR 中.今天我们继续讲解 Azu ...
 
随机推荐
- python输出格式对齐问题
			
采用.format打印输出时,可以定义输出字符串的输出宽度,在 ':' 后传入一个整数, 可以保证该域至少有这么多的宽度. 用于美化表格时很有用. >>> table = {'Goo ...
 - 【搜索】 Prime Path
			
#include<cstdio> #include<cstring> #include<cmath> #include<queue> #include& ...
 - 8月的list
			
多校的list: 第一周的多校list: k路归并 (思想大概理解了,还没实现 莫比乌斯 树归 第三场的多校list: 斯坦纳树 第四场多校: Pollard_rho算法和Miller_Rabin ...
 - 01.Java 开发简单的计算器
			
难度为一般,适合具有 Java 基础和 Swing 组件编程知识的用户学习一. 实验介绍1.1 实验内容本次实验利用Java开发一个可以进行简单的四则运算的图形化计算器,会使用到 Java Swing ...
 - crt转cer ,6.0以上的android系统证书请求配置
			
1.在服务器人员,给你发送的crt证书后,进到证书路径,执行下面语句 openssl x509 -in 你的证书.crt -out 你的证书.cer -outform der 这样你就可以得到cer ...
 - Vue自定义指令报错:Failed to resolve directive: xxx
			
Vue自定义指令报错 Failed to resolve directive: modle 这个报错有2个原因: 1.指令单词拼错 2.Vue.directive() 这个方法没有写在 new Vue ...
 - ACM-ICPC 2018 徐州赛区网络预赛 G Trace(逆向,两颗线段树写法)
			
https://nanti.jisuanke.com/t/31459 思路 凡是后面的轨迹对前面的轨迹有影响的,可以尝试从后往前扫 区间修改需要push_down,单点更新所以不需要push_up(用 ...
 - linux  source命令的用法
			
source命令用法:source FileName作用:在当前bash环境下读取并执行FileName中的命令.(如把ls写入a.txt,然后source a.txt 就会执行ls命令,列出目录)注 ...
 - IntelliJ IDEA 2017版 spring-boot2.0.2 搭建 JPA springboot DataSource JPA环境搭建,JPA注解@ManyToOne使用详情;JPA外键设置
			
一.数据库原型 数据库模型如图所示,而现在需要根据数据库模型,建立对应的实体类,这在项目重构老数据库,采用新的框架重构上应该是比较常见的. 数据库脚本如下: CREATE TABLE `bomsub` ...
 - 为什么行内元素不能设置margin-top/margin-bottom/padding-top/padding-bottom?
			
HTML 里的元素分为替换元素(replaced element)和非替换元素(non-replaced element).- 替换元素是指用作为其他内容占位符的一个元素.最典型的就是img,它只是指 ...