1. 搭建Nuget服务
- 创建baget.env文件
cd /data/
nano /data/baget.env
- baget.env文件内容:
#####################baget.env#####################
ApiKey=yangwen_nuget_key
Storage__Type=FileSystem
Storage__Path=/var/baget/packages
Database__Type=Sqlite
Database__ConnectionString=Data Source=/var/baget/baget.db
Search__Type=Database
####################################################
- 运行docker容器
docker run -p 8081:80 --restart=always -d --env-file /data/baget.env -v "/data/baget-data:/var/baget" --name nuget-server loicsharma/baget:latest
- 访问:http://192.168.1.75:8081
创建NuGet包
均使用其中一个 CLI 工具(nuget.exe 或 dotnet.exe)我这里用的是dotnet CLI
若要安装 NuGet CLI 工具,请参阅安装 NuGet 客户端工具
- 生成——>预生成事件(删除所有.nupkg文件)
del $(ProjectDir)$(OutDir)..\*.nupkg /s/q
exit 0
- .csporj文件添加
<Version>1.0.3</Version>
<GenerateDocumentationFile>true</GenerateDocumentationFile>
<GeneratePackageOnBuild>true</GeneratePackageOnBuild>
- 在项目目录下执行打包命令
dotnet pack --no-restore # --no-restore 不需要还原包
- 生成.nupkg文件
- 在.nupkg文件所在目录执行推送命令,推送到nuget服务中
# cmd 推送包:
dotnet nuget push *.nupkg -k yangwen_nuget_key -s http://192.168.1.75:8081/v3/index.json
- 查看包管理,可以看到我们的包已经推上去了
引用Nuget包
配置nuget源(这里是我们自己的Nuget服务 即”192.168.1.75:8081“)
- nuget管理器——>设置
- 添加
- 这样你的项目就可以使用这个Nuget包了。
2. GitLab自动打包(NuGet版本号自增)
ci文件(指定版本):
tags:
- buildall
script:
- dotnet build -p:Version=1.0.5 # 这里指定版本号时csproj文件就不用指定了
- ls
- cd ./CommonService/bin/Debug
- ls
- dotnet nuget push *.nupkg -k yangwen_nuget_key -s http://192.168.1.75:8081/v3/index.json --skip-duplicate
ci文件(利用 $CI_PIPELINE_ID变量实现NuGet包自增)
tags:
- buildall
script:
- dotnet build -p:Version=$CI_PIPELINE_ID # 这里指定版本号时csproj文件就不用指定了
- ls
- cd ./CommonService/bin/Debug
- ls
- dotnet nuget push *.nupkg -k yangwen_nuget_key -s http://192.168.1.75:8081/v3/index.json --skip-duplicate
缺点:每执行一次就会递增1(无论流水线是否执行成功)
3.遇到的问题:
- 无法还原包
解决方案:
项目根目录中添加NuGet.Config文件,然后再Dockerfile文件中添加 COPY [“NuGet.Config”, “.”]
NuGet.Config:
<?xml version="1.0" encoding="utf-8"?>
<configuration>
<packageSources>
<add key="BlazoriseMyGet" value="https://www.myget.org/F/blazorise/api/v3/index.json" />
<add key="NuGet official package source" value="https://api.nuget.org/v3/index.json" />
<add key="yangwen_nuget_key" value="http://192.168.1.75:8081/v3/index.json" />
</packageSources>
</configuration>
Dockerfile:
- 流水线 dotnet命令找不到
解决方案:
安装.Net SDK
在安装.NET之前,需要注册产品存储库并安装所需的依赖关系。
打开Linux命令提示符并运行以下命令:
sudo rpm -Uvh https://packages.microsoft.com/config/rhel/7/packages-microsoft-prod.rpm
更新可用于安装的产品,然后安装.NET SDK。
在命令提示符下,运行以下命令:
sudo yum update sudo yum install dotnet-sdk-6.0