Docker中搭建Nuget,结合GitLab(CI/CD)实现推送项目时自动打包

1. 搭建Nuget服务

  1. 创建baget.env文件
cd /data/
nano /data/baget.env
  1. 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
####################################################
  1. 运行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 
  1. 访问:http://192.168.1.75:8081

image.png

创建NuGet包

均使用其中一个 CLI 工具(nuget.exe 或 dotnet.exe)我这里用的是dotnet CLI
若要安装 NuGet CLI 工具,请参阅安装 NuGet 客户端工具

  1. 生成——>预生成事件(删除所有.nupkg文件)
del $(ProjectDir)$(OutDir)..\*.nupkg /s/q
exit 0
  1. .csporj文件添加
		<Version>1.0.3</Version>
		<GenerateDocumentationFile>true</GenerateDocumentationFile>
		<GeneratePackageOnBuild>true</GeneratePackageOnBuild>

image.png

  1. 在项目目录下执行打包命令
dotnet pack --no-restore  # --no-restore 不需要还原包
  1. 生成.nupkg文件

image.png

  1. 在.nupkg文件所在目录执行推送命令,推送到nuget服务中
# cmd 推送包:
dotnet nuget push *.nupkg -k yangwen_nuget_key -s http://192.168.1.75:8081/v3/index.json

image.png

  1. 查看包管理,可以看到我们的包已经推上去了

image.png

引用Nuget包

配置nuget源(这里是我们自己的Nuget服务 即”192.168.1.75:8081“)

  1. nuget管理器——>设置

image.png

  1. 添加

image.png

  1. 这样你的项目就可以使用这个Nuget包了。

image.png

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.遇到的问题:

  1. 无法还原包

image.png
解决方案:
项目根目录中添加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:
image.png

  1. 流水线 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
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

晒黑的绵羊

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值