centos7环境基于jenkins、nuget、nexus的netcore持续集成

原创 2017年12月16日 18:09:42

基础环境配置

netcore安装文档:https://www.microsoft.com/net/learn/get-started/linuxcentos

jenkins相关配置:http://blog.csdn.net/xqj198404/article/details/78093590

jenkins项目配置

  1. service jenkins start 启动服务
  2. 域名:8080(默认,可配置修改)登录jenkins
  3. 配置BUILD过程的执行脚本需要注意通过jenkins的宏指定dotnet执行的正确路径,并且不同操作系统的宏是不一样的。windows是 %宏名%,linux则是 ${宏名}
  4. 项目编译的路径在linux下为:
        其中WORKSPACE是jenkins规定的工作空间的宏名
  5. 编译以及发布脚本  :【见修正后的脚本】
    dotnet restore ${WORKSPACE}/git项目的项目名
    dotnet build ${WORKSPACE}/git项目的项目名
    dotnet publish ${WORKSPACE}/git项目的目录名 -o ${WORKSPACE}/publish
    
  6. 上面的-o产生的publish目录有一个问题,就是产生在git项目的目录下,不知道是dotnet的问题还是对于宏的理解有错误
  7. dotnet publish 默认发布为debug,所以需要按照自己需求配置publish相关参数 相关文档:https://docs.microsoft.com/zh-cn/dotnet/core/tools/dotnet-publish?tabs=netcore2x

nuget发布

  1. 使用yum isntall nuget安装nuget
  2. 参考文档:https://docs.microsoft.com/en-us/nuget/create-packages/creating-a-package
  3. 配置文件参考:https://docs.microsoft.com/en-us/nuget/schema/nuget-config-file
  4. nexus相关文档:https://help.sonatype.com/display/NXRM2/.NET+Package+Repositories+with+NuGet
  5. 在~/.nuget/NuGet/NuGet.Config文件中添加自定义的源
  6. 需要将nuspec文件中的模板替换,可以采用sed 也可以写一个替换程序使用shell执行。如果没有完全替换会有警告信息。
  7. 使用dll生成nuspec文件需要注意,id会根据执行路径生成,所以最好使用cd命令切换执行路径,防止ID名称非法的情况,如果含有\符号会被认为不合法。
  8. 执行nuget命令注意执行的路径问题。
  9. 执行脚本【不再需要】
  10. cd ${WORKSPACE}/publish/
    nuget spec xxxx.dll
    sed -i 's!http://LICENSE_URL_HERE_OR_DELETE_THIS_LINE!http://url/hayaaai.txt!' ${WORKSPACE}/publish/xxxxx.dll.nuspec
    sed -i 's!http://PROJECT_URL_HERE_OR_DELETE_THIS_LINE!http://url/nexus/service/local/nuget/xxxxx/!' ${WORKSPACE}/publish/xxxxx.dll.nuspec
    sed -i 's!http://ICON_URL_HERE_OR_DELETE_THIS_LINE!http://url/ico/xxxx.ico!' ${WORKSPACE}/publish/xxxxx.dll.nuspec
    sed -i '20i<files><file src="Hayaa.BaseModel.dll" target="lib/\" /></files>' ${WORKSPACE}/publish/xxxxx.dll.nuspec
    nuget pack ${WORKSPACE}/publish/xxxxx.dll.nuspec
    nuget push ${WORKSPACE}/publish/xxxxx.dll.1.0.0.nupkg -Source http://url/repository/nuget-hosted -ApiKey nexus用户的key
    


问题

理论是可行的,但是使用nuget发布总是失败,本以为是nexus配置错误,但是使用nuget Package Explorer在windows上测试却是可以的。证明nexus服务器配置没有问题,有问题的是nuget在centos上存在bug,爆出对象错误,无法传输文件,但是这是由于打包文件错误造成还是却是nuget确实存在问题,还需要实验。

后进行了实验,将nuget以及nuget依赖的mono进行了重装,首先完全重装了mono,而非采用依赖方式安装,然后又安装了nuget,然后就可以了。所以爆出的错误是mono应该缺少库造成的。

后续

仔细阅读相关工具文档

https://docs.microsoft.com/zh-cn/dotnet/core/tools/?tabs=netcore2x

其实donet和nuget有一体化的命令,无需分开处理。

修正后的发布脚本

dotnet restore ${WORKSPACE}/Hayaa.BaseModel
dotnet build ${WORKSPACE}/Hayaa.BaseModel
dotnet pack ${WORKSPACE}/Hayaa.BaseModel  -o  ${WORKSPACE}/publish
echo 'find |grep "nupkg" >var'
dotnet nuget push ${WORKSPACE}/publish/$var -k 0552fb3b-cf12-3c21-28ea-5b04f8878d -s http://url/repository/nuget-hosted/


版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/xqj198404/article/details/78811422

使用 JDBC 创建数据库对象 2

构建更高级别的 JDBC 对象从上面的例子可以明显看出,如果可以将我们使用过的一些方法封装在几个更高级别对象中,那将非常有帮助,我们不仅可以封装 try 程序块,而且可以更简单地访问 ResultSe...
  • wxyxl
  • wxyxl
  • 2001-05-04 13:45:00
  • 792

为 Jenkins 配置 .NET 持续集成环境

去年年底,得益于公司引入 Jenkins,让我们在持续集成方面迈出了第一步,本文不赘述如何安装 Jenkins,主要关注点在于配置 .Net 环境。另外本文是在 Windows 环境下安装的 Jenk...
  • wma664620
  • wma664620
  • 2017-01-25 11:47:58
  • 1722

CentOS7安装配置Nexus

最近闲来没事,就自己在linux上试着安装配置了Nexus,原以为很难的样子,主要自己动了手才发现其实也就那么一回事。 下载          Nexus下载地址:http://www.sonatyp...
  • dandanzmc
  • dandanzmc
  • 2016-07-17 22:17:38
  • 3593

使用NuGet管理自己的包

如果我有一个早已封装好的包,要让其他人使用,         NuGet是一个Visual Studio的扩展,通过这个扩展,我们可以非常方便地在Visual Studio中安装或更新项目中所需要的第...
  • dandanzmc
  • dandanzmc
  • 2014-12-28 22:18:51
  • 6158

【Jenkins系列之二】利用Jenkins+Github进行自动化测试的步骤

上一篇文章中,我们已经搭建了jenkins的持续集成环境,本文将指导我们如何利用jenkins进行自动化构建。 新建JOB 在Jenkins首页点击“新建”,进入到新建JOB的页面。这里我们先选择“构...
  • liuchunming033
  • liuchunming033
  • 2015-02-02 17:39:14
  • 13017

Linux Centos7下自动构建工具Jenkins安装及使用

前置条件 1.安装JDK1.7或以上版本安装 添加Jenkins库到yum库,Jenkins将从这里下载安装sudo wget -O /etc/yum.repos.d/jenkins.repo h...
  • RobertoHuang
  • RobertoHuang
  • 2017-02-22 09:46:00
  • 1150

Nexus Repository Manager 3.0 安装与包上传 Maven、Nuget

前言 The latest version of Nexus Repository OSS, providing cutting-edge support for the formats belo...
  • a87922072
  • a87922072
  • 2017-09-12 21:31:47
  • 704

持续集成~Jenkins构建dotnetCore的项目

上周一个大件就是dotnet core2.0发布了,伴随着.NET Standard2.0也发布了,整个微软的生态环境大好,当然也有一个BUG出来了,比如EFCore对Mysql的支持比起1.1来说,...
  • qq4165498
  • qq4165498
  • 2017-08-22 19:39:12
  • 428

Jenkins与Visual Studio的自动编译和发布

一、Jenkins在Windows下的安装 1、下载地址:可以到https://jenkins.io/download/下载Jenkins的最新版本,目前为2.64。正式环境最好使用2.46.3版本...
  • qq_32782059
  • qq_32782059
  • 2017-06-15 15:33:45
  • 2649

使用Nexus Repository 3的十二个理由

随着Nexus Repository Manager OSS 3的发布(目前更新至3.2.1),虽然目前还是Nexus 2和Nexus 3并行的状态,但是Nexus 3在很多方面已经显现出很大的优势,...
  • liumiaocn
  • liumiaocn
  • 2017-03-14 20:20:43
  • 8907
收藏助手
不良信息举报
您举报文章:centos7环境基于jenkins、nuget、nexus的netcore持续集成
举报原因:
原因补充:

(最多只允许输入30个字)