角落的白板报

通过 Myget 从 GitHub 持续集成发布 Nuget 包

2018-12-27  本文已影响6人  角落的白板笔

通过 Myget 从 GitHub 持续集成发布 Nuget 包-A

本文推荐阅读地址:https://www.52abp.com/BlogDetails/8

通过 myget 快速体验持续集成功能,从而实现管理自己的开源项目。
52abp.com 所做的很多开源组件,都需要进行 nuget 包的管理和发布,正好我们也在做微信端的集成,所以就把这个系列写一写了。
这次作为说明的开源组件,是yoyo-abp-modules里面集成了.net core 版本的 log4net 和微信端的众多组件,内容组件一致在持续更新和增加中。

我尽量系统性的讲解下 如何从 Github 自动编译和发布到 Nuget 以便有更多人使用。
我自己评估的时候,有 Jenkins 和 myget 等选择。都可以,个人建议开源内容,使用免费的,因为更为稳定。
整体来说,发布一个开源项目到 Nuget 还是很方便的。

yoyo-abp-modules,持续更新中,欢迎使用 ABP 框架的同学来一起使用和完善,期待大家给我们 star打星 😍

准备工作

感谢Bil Simser的推文,不过推文是 2014 年的了,是时候更新下内容了,给我的思路,吐槽下 Myget 的官网对我来说,真心不友好,当然,也有可能是我英文太菜了。

准备工作如下:

MyGet 开始动手

MyGet 是一个 Secure DevOps 从安全的通用软件包管理
构建服务,漏洞扫描和许可证合规性开始,以实现安全的 DevOps 自动化。
提供的方式是开源免费,私有收费的模式,也支持本地化的部署,当然他的特点是 本地化私有部署,功能比 nuget 强大的多。

MyGetFeed 处理

首先我们要创建属于一个自己的MyGet Feed包,可以参考下图来进行创建,在您头像旁边的顶部栏和首页右侧菜单都可以创建独立的 Feed。

image.png image.png

接下来我们创建属于自己的“Feed”包‘52ABP’,写上我们的描述。同时会生成唯一的 URL 地址,这个会提供给你私有的地址信息。

image.png

关于 Feed 版本说明,它分为三个版本:
This is a public feed 公共版本,相对开放
每个人都可以从此 Feed 中搜索和下载包,只有管理员可以进行修改包的信息。

This is a community feed 社区版本,无限开放
每个人都可以从此 Feed 中搜索和下载包。此外,任何用户都可以在此 Feed 上推送和管理自己的包,可以理解为公共的广场,所有人都可以处理。

This is a private feed 私有版本,需要进行收费服务
没有人可以访问。我将邀请能够访问此 Feed 的用户。

获取源代码

单击“添加源”按钮以完成设置。创建 Feed 后,您将转储到程序包的主页面,您可以在其中选择各种设置来配置程序包源。默认情况下没有任何东西,所以我们将构建我们的包。


image.png

在这里,您可以看到可以添加 GitHub 存储库,BitBucket,Visual Studio Online 服务(或者您可以手动添加一个自己的私有地址信息)。

我们选择使用 GitHub 仓库,仓库地址:https://github.com/52ABP/yoyo-abp-modules

选择GitHub,您将被要求授权 MyGet 与 GitHub 交互(如果没有登录会被要求登录 GitHub)。一旦您授权它,授权的时候请注意如果是组织,请授权给组织,否则选择项目的时候无法看到组织中的项目,您将在 GitHub 上显示一个存储库列表,您可以从中进行选择。通过单击链接选择您要构建包的那个?

选择复选框并单击“添加”(下面的某些存储库被遮挡但您的存储库不会被遮挡)。

image.png

然后进入编译

image.png

Webhooks 钩子

在存储库中的 GitHub 上,转到“设置”,然后单击“Webhooks 和服务”。单击添加 webhook 以显示此对话框:

image.png

Payload Url 的来源于 MyGet 的Hook (HTTP POST):的 URL 链接。将 Content 类型保留为application / json,单击按钮触发器以解决推送事件,然后单击 Add webhook。
这样带来的好处是我们的 commit 一旦提交的时候,就可以自动触发 Myget 的构建环境,生成自己的独立 Myget 包文件。

还可以从 Status badge:中,选择 Copy Markdown ,取得 [图片上传失败...(image-cb80d-1545973400619)]当前仓库的构建状态信息。

通过点击 Edit 按钮,我们可以自定义版本号有关的信息,而且 Myget 的版本号是可以和 github 的 tag 标记互通。


image.png

构建完毕后回到Package菜单栏

image.png
可以看到我们自动构建出来的属于自己的 Nuget 包文件。

如何使用呢

现在我们有了属于自己的包,我们可以将它添加到Visual Studio中的包源并安装它。
这样带来的好处是,我们是使用Myget作为自己的个人存储库的角度来使用的,有一定的私有化,我们在将他们发布到 Nuget.org 作为公众服务之前,我们可以使用 MyGet 上的默认(和免费)版本,还可以继续将预发布版本推送到 MyGet,直到您对它满意为止然后将其“推广”到 NuGet。

在 MyGet 中,从菜单中选择 Feed Details。你会看到这样的界面:


image.png

我们打开自己的 Visual Studio 2017 ,注意你的版本哦。VS2015 不支持 API 哦。
工具选择 Nuget 包管理器,然后选择涉虚报管理器设置,点击右上角的加号,然后输入好对应你的 API 信息哦~

image.png
记得点击更新,保存好我们的配置文件。
image.png

包管理器设置中,将其添加为包源。我只是在开发和测试包时添加它然后禁用它(因此它不会与“官方”NuGet 服务器混淆)。您可以通过这种方式轻松地在私有包和公有包之间来进行切换。

image.png

测试下,打开解决方案,Nuget 包管理,然后选择数据源为myget_52abp,搜素 yoyo,可以看到对应的版本内容信息。

image.png

小总结

以上就是我们使用 Myget 通过拉取 github 仓库源代码来进行编译属于自己的 Nuget 包,内容
下一篇我们来讲如何推送到 Nuget.org 服务器中,让所有人都能够使用。

期待您参与协作开发

【本文的原文在 github,如果您发现了错漏,欢迎参与协同哦~】

协同地址:(https://github.com/52ABP/Documents/blob/master/src/articles/MygetCIGithub/MyGet-Automatically-Publishing-NuGet-packages-from-GitHub-A.md)

我们创建的 52ABP 框架,已经开始有很多小伙伴开始使用了。如果您对这套基于.net core +angular 的前后端分离的框架感兴趣的话,欢迎来找我们哦~

传送门: 2019 年起如何开始学习 ABP 框架系列文章-开篇有益

上一篇下一篇

猜你喜欢

热点阅读