一. 前言
Nuget 作为一个. NET 研发人员, 我想你都不会陌生, 他为我们提供非常方便的程序包管理, 不管是版本, 还是包的依赖都能轻松应对, 可以说是我们的好助手. 而 Nuget 除了官方 nuget.org 以外, 我们也可以用起提供的程序包快速构建一个 Nuget Server, 打造企业内部的私有 Nuget, 用来管理项目的 package 是十分方便的, 相对于我们直接引用 DLL, 他可以方便的控制程序集版本和依赖. 今天讲讲 Nuget 如何进行持续集成, 部署, 可以减少我们更新 package 所需时间.
对 nuget 上传包以及使用 nuget 命令有不了解的朋友可以花几分钟看下这两篇文章:
发布你的程序包到 Nuget
使用 dotnet cli 命令上传 nuget 程序包
二. 为什么用 github?
如果用过持续集成的朋友都应该知道持续集成工具从代码仓库拉去代码, 今天我选用 github 来进行讲解, 因为 github 作为全球最大的开源社区, 聚集了非常多的项目代码, 你是否有注意 Nuget 上面的程序包很大一部分都是开源的, 而且大部分都是开源在 github 的, 所以 github 结合 Nuget 是非常不错的.
三. Jenkin 从配置 github 拉去代码
Jenkins 算是使用量比较多的一个持续集成工具, 关于它我们写了一个系列, 可以参考下 http://www.cnblogs.com/stulzq/p/8629165.html
1. 创建 github AccessToken
(1) 选择 用户下拉列表选项中的 "Setting"
(2) 选择 "Developer settings"
(3) 选择 "Personal access tokens"->"Generate new token"
(4) 选择下图的权限
然后点生成就可以了, 一定要保存好这个 token
2. 配置 Jenkins
(1) 进入 "系统管理"->"管理插件" 安装 Github Plugin 插件
(2) 然后进入 "系统管理"->"系统设置 ->Github Server" 添加如下信息
Credentials 那里点击 Add 添加如下信息
添加完毕之后记得选择我们刚刚添加的信息
最后点击 "Test Connection" 如果配置正确应当有如下显示:
3. 创建任务
(1) 创建一个自由风格的任务:
(2) 勾选 Github Project 填入 github 仓库 url
(3) 源码管理选择 git, 填写仓库 git 地址, 选择需要构建的分支, 我这里选择 master (** 为选择所有分支)
(4) 构建触发器选择
GitHub hook trigger for GITScm polling
(5) 然后添加构建步骤 Shell , 填入构建和部署的命令
(6) 如何编写构建命令 按照如下格式编写
- # 编译项目
- echo "begin build..."
- dotnet build Alipay.AopSdk.Core.sln -c Release
- echo "build success"
- # 创建 nuget 临时存放目录和归档目录
- mkdir /publish/nuget/aopsdk/$(date +%Y%m%d) -p
- mkdir /publish/archives/$(date +%Y%m%d) -p
- echo "begin pack..."
- # 打包项目 Alipay.AopSdk.Core 并输出到临时存放目录
- echo "pack Alipay.AopSdk.Core..."
- dotnet pack Alipay.AopSdk.Core/Alipay.AopSdk.Core.csproj -c Release -o /publish/nuget/aopsdk/$(date +%Y%m%d)
- echo "pack Alipay.AopSdk.Core success"
- # 发布到 nuget.org
- echo "begin push..."
- dotnet nuget push /publish/nuget/aopsdk/$(date +%Y%m%d)/*.nupkg -k < 你的 api key>-s https://api.nuget.org/v3/index.json
- echo "push success"
- # 归档 package
- mv /publish/nuget/aopsdk/$(date +%Y%m%d)/*/publish/archives/$(date +%Y%m%d)
最后点击保存.
4. 最后一步, 注册 webhook 钩子
回到我们的 "系统管理"-> 系统设置 "->"Github Server" 选择高级 (有两个高级 别选择错了)
然后进行如下操作为我们的仓库创建钩子
如果创建成功, 到我们 github 仓库 "Setting"->"Webhooks" 应当可以看见 github 插件已经为我们自动创建了一个钩子:
到此, 我们的配置就结束了, 如果提交代码到对应分支, 就会触发构建, 如果构建成功就会上传 package 到我们的 Nuget, 十分方便, 好了赶紧去享受吧.
如果出错, 我们可以 控制台日志来查出错误.
四. 常见问题
如果部署到企业内部的私有 Nuget Server, 只需修改
dotnet nuget push -s
参数后的地址就行了.
如果采用我前面写的系列教程安装的 Jenkins 由于是采用 Docker 容器运行的, 所以自带没有 dotnet core 的环境, 需要进入 Docker 容器, 安装才行, 在 dotnet core 官网下选择安装的时候, 系统选择 Debian 9 https://www.microsoft.com/net/learn/get-started/linux/debian9
搭建私有 Nuget , 请看这篇文章 https://www.jianshu.com/p/08e43b822137
五. 写在最后
配置看似很繁琐, 其实很简单, 配置过一次, 再配置第二次就是手到擒来, 祝大家配置成功, 如果有什么问题也可以加入下方 QQ 群进行提问. 最后想说一句话, NET Core 的生态构建需要你的参与, 希望大家能共同支持. NET Core 成长. 欢迎大家加入 NCC https://github.com/dotnetcore
NCC 全称 .NET Core Community(同时保有 .NET China Community 的名称, 其缩写为 dotnet-china), 成立于 2016 年年中. NCC(时名为 .NET Core 中国学习小组) 最初项目为微软 ASP.NET Core 文档翻译项目, 为第一批学习 ASP.NET Core 的中文圈开发人员提供了巨大便利, 后微软逐步文档国际化, 该翻译项目完成全部历史使命. 后经历多次调整, 最终更名为 .NET Core Community, 是一个目前包括 12 个成员项目 (含 1 个外部项目),4 个子团队的正不断成长, 完善, 并正加速前进的 .NET/.NET Core 开源社区组织.
来源: https://www.cnblogs.com/stulzq/p/8877652.html