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

基础环境配置

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. 编译以及发布脚本  :【见修正后的脚本】,虽然会隐式调用restore,但是有多个源时最好显式调用,并且采用publish而不是单纯依赖build输出。如果源指定缺少的话,可能会存在一个问题,即使编译发布正常,但是会缺少隐式引用的dll
    dotnet restore ${WORKSPACE}/git项目的项目名 -s 源的地址(如果是公用源和私有源都存在需要多个-s参数)
    dotnet build ${WORKSPACE}/git项目的项目名 -r  centos.7-x64(centos7运行时环境)
    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文件中添加自定义的源,如果没有安装nuget则需要在dotnet nuget命令中指定源的配置文件
  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 nexus的key -s http://url/repository/nuget-hosted/


评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值