1、API.Keys

  使用Nuget.Server时,需要用到API.Keys,在 nuget.org 上创建密钥。详细内容可以参考的链接Nuget 通过 dotnet 命令行发布。(文章中的dotnet nuget 应该只适用于.net core(没有验证,暂这么记录))

2、docker + jenkins 启动nuget-server服务。

  docker 设置

#创建挂载文件夹
sudo mkdir -p /data/docker/nuget/{database,packages}

#获取镜像,也可以在jenkins中启动容器时自动拉取。
docker pull sunside/simple-nuget-server

jenkins->shell脚本

#jenkins shell代码

# 第一次启动时要注释掉,后期改下判断,用inspect,当容器不存在时运行会报错
docker stop nuget-server
docker rm nuget-server

docker run --detach=true \
 --publish 5500:80 \
 --env NUGET_API_KEY=你的APIKey \
 --volume /data/docker/nuget/database:/var/www/db \
 --volume /data/docker/nuget/packages:/var/www/packagefiles \
 --name nuget-server \
sunside/simple-nuget-server
#如果以后忘记了NUGET_API_KEY,可以通过以下命令查看:
docker inspect <CONTAINER-NAME> OR <CONTAINER-ID>
#然后在结果里找到 Config/Env/NUGET_API_KEY节点。

在浏览器中输入:http://你的服务器:5500/,可以查看到页面如下:

3、打包并上传

项目右键增加【打包并上传】的自定义菜单,使用bat命令完成对项目打包,生成nupkg包并上传到nuget-server服务。

3.1 项目增加版本信息(.net core,.net framework 还没试过)

<Project Sdk="Microsoft.NET.Sdk">
  <PropertyGroup>
    <TargetFramework>netstandard2.0</TargetFramework>
    <Version>1.0.1.1</Version>
    <AssemblyVersion>1.2.0.0</AssemblyVersion>
    <FileVersion>1.3.0.0</FileVersion>
  </PropertyGroup>
</Project>

3.2 bat命令行

.net core 项目,将下边命令保存到本地bat文件中。
第一行是打包,第二行是把打包的文件上传;第三行是把包从temp文件夹拷贝到本地Nuget包(可要可不要)。

dotnet pack %1  -c Release  --include-source -o E:\Develop\TFS\Nuget\Temp
dotnet nuget push -s http://yournugetsiite:8088 -k yourapikey E:\Develop\TFS\Nuget\Temp\%~2.*.nupkg
move E:\Develop\TFS\Nuget\Temp\*.nupkg E:\Develop\TFS\Nuget\

 .net framework项目
   1、下载nuget.exe,本地存储路径:D:\Tools\Nuget\nuget.exe(非必须,和后边保持一致即可),将D:\Tools\Nuget增加到环境变量PATH
   2、bat文件.和.net core 类似,忽略了第三步的拷贝

nuget pack %1 -Build -Symbols -Prop Configuration=Release -OutputDirectory  E:\Develop\TFS\Nuget\Temp
nuget push  E:\Develop\TFS\Nuget\Temp\%~2.*.nupkg 你的apikey -Source http://你的服务ip:5500 

3.3、创建自定义菜单【打包并上传】

    工具-》外部工具-》添加  


【标题】 可以随意填写,83是我的服务器
【命令】 上边bat文件的路径
【参数】 $(ProjectDir)$(ProjectFileName) $(TargetName)
!!!注意第三个$前有一个空格,建议原封不动的贴过去!!!(应该是避免命令执行过程中没有没有空格分割问题)
勾选了【使用输出窗口】是因为可以直接在下面的output窗口输出,可以看到生成的过程

3.4 将自定义菜单【打包并上传】添加到项目右键

	工具-》自定义-》命令-》上下文菜单-》项目和解决方案上下文菜单|项目-》添加命令-》工具-》右侧外部命令

image

3.5 右键点击【打包并上传】,在输出窗口能看到如下信息

image

3.6 设置nuget包源

image

3.7 选择创建的程序包源。

  可以看到已经推送上去的包,第一次加载可能慢点,多刷新几次。实在不行就重启一次。
image