您的位置:首页 > 运维架构 > Linux

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

2017-12-16 18:09 676 查看

基础环境配置

netcore安装文档:https://www.microsoft.com/net/learn/get-started/linuxcentos
jenkins相关配置:http://blog.csdn.net/xqj198404/article/details/78093590

jenkins项目配置

service jenkins start 启动服务

域名:8080(默认,可配置修改)登录jenkins
配置BUILD过程的执行脚本需要注意通过jenkins的宏指定dotnet执行的正确路径,并且不同操作系统的宏是不一样的。windows是 %宏名%,linux则是 ${宏名}
项目编译的路径在linux下为:
    其中WORKSPACE是jenkins规定的工作空间的宏名
编译以及发布脚本  :【见修正后的脚本】
dotnet restore ${WORKSPACE}/git项目的项目名
dotnet build ${WORKSPACE}/git项目的项目名
dotnet publish ${WORKSPACE}/git项目的目录名 -o ${WORKSPACE}/publish

上面的-o产生的publish目录有一个问题,就是产生在git项目的目录下,不知道是dotnet的问题还是对于宏的理解有错误

dotnet publish 默认发布为debug,所以需要按照自己需求配置publish相关参数 相关文档:https://docs.microsoft.com/zh-cn/dotnet/core/tools/dotnet-publish?tabs=netcore2x

nuget发布

使用yum isntall nuget安装nuget
参考文档:https://docs.microsoft.com/en-us/nuget/create-packages/creating-a-package
配置文件参考:https://docs.microsoft.com/en-us/nuget/schema/nuget-config-file
nexus相关文档:https://help.sonatype.com/display/NXRM2/.NET+Package+Repositories+with+NuGet

需要将nuspec文件中的模板替换,可以采用sed 也可以写一个替换程序使用shell执行。如果没有完全替换会有警告信息。

使用dll生成nuspec文件需要注意,id会根据执行路径生成,所以最好使用cd命令切换执行路径,防止ID名称非法的情况,如果含有\符号会被认为不合法。
执行nuget命令注意执行的路径问题。
执行脚本【不再需要】
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/
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  jenkins nexus netcore nuget