如何通过 Jenkins 从使用 Octopack 构建的 NuGet 包中排除目录和文件?
How to exclude directory and files from NuGet package built with Octopack via Jenkins?
我有一个 windows 服务,我需要用 OctoPack 打包到一个 nuget 包中,但我必须排除一个名为 "Config" 的目录和一些其他配置文件(这些是特定于实例的并且这将被部署到多个实例。)但是,无论我在 nuspec 文件中放入什么,文件总是包含在内。
项目目录:
Config <dir>
Code <dir>
app.config
settings.config
service.csproj
service.nuspec
Nuspec 文件:
<?xml version="1.0" encoding="utf-8"?>
<package xmlns="http://schemas.microsoft.com/packaging/2010/07/nuspec.xsd">
<metadata>
<!-- Required elements-->
<id>service</id>
<version>0.0.0</version>
<description>service for app</description>
<authors>our team</authors>
</metadata>
<!-- Optional 'files' node -->
<files>
<file src="**" exclude="Config\" />
<file src="**" exclude="**\app.config" />
<file src="**" exclude="**\settings.config" />
</files>
</package>
詹金斯文件:
bat "dotnet-octo pack --id=service --format=NuPkg --basePath=bin\x64\BuildServer --version=0.0.0.${env.BUILD_ID} --overwrite"
我确定我的 nuspec 文件中有错误或其他错误,但我找不到针对我的特定案例的任何文档。谢谢
原来我想多了。我刚刚编辑了 Jenkins 文件以在打包前删除它们。完全忘记了 bat
是一个选项。
bat "del bin\x64\BuildServer\app.config"
bat "del bin\x64\BuildServer\settings.config"
bat "rmdir /s /q bin\x64\BuildServer\Config"
bat "dotnet-octo pack --id=service --format=NuPkg --basePath=bin\x64\BuildServer --version=0.0.0.${env.BUILD_ID} --overwrite"
但是,通过 nuspec 执行此操作的正确方法是
<files>
<file src="bin\x64\BuildServer\**\*.*" exclude="bin\x64\BuildServer\app.config;bin\x64\BuildServer\settings.config;bin\x64\BuildServer\Config\*.xml" />
</files>
src
表示“包含 bin\x64\BuildServer
中的所有目录和文件,其中所有 dll 等都在构建之后。而 exclude
表示 除了 这些文件。注意 所有 路径是相对于你的 nuspec 文件所在的位置(这很重要!!!)。
我有一个 windows 服务,我需要用 OctoPack 打包到一个 nuget 包中,但我必须排除一个名为 "Config" 的目录和一些其他配置文件(这些是特定于实例的并且这将被部署到多个实例。)但是,无论我在 nuspec 文件中放入什么,文件总是包含在内。
项目目录:
Config <dir>
Code <dir>
app.config
settings.config
service.csproj
service.nuspec
Nuspec 文件:
<?xml version="1.0" encoding="utf-8"?>
<package xmlns="http://schemas.microsoft.com/packaging/2010/07/nuspec.xsd">
<metadata>
<!-- Required elements-->
<id>service</id>
<version>0.0.0</version>
<description>service for app</description>
<authors>our team</authors>
</metadata>
<!-- Optional 'files' node -->
<files>
<file src="**" exclude="Config\" />
<file src="**" exclude="**\app.config" />
<file src="**" exclude="**\settings.config" />
</files>
</package>
詹金斯文件:
bat "dotnet-octo pack --id=service --format=NuPkg --basePath=bin\x64\BuildServer --version=0.0.0.${env.BUILD_ID} --overwrite"
我确定我的 nuspec 文件中有错误或其他错误,但我找不到针对我的特定案例的任何文档。谢谢
原来我想多了。我刚刚编辑了 Jenkins 文件以在打包前删除它们。完全忘记了 bat
是一个选项。
bat "del bin\x64\BuildServer\app.config"
bat "del bin\x64\BuildServer\settings.config"
bat "rmdir /s /q bin\x64\BuildServer\Config"
bat "dotnet-octo pack --id=service --format=NuPkg --basePath=bin\x64\BuildServer --version=0.0.0.${env.BUILD_ID} --overwrite"
但是,通过 nuspec 执行此操作的正确方法是
<files>
<file src="bin\x64\BuildServer\**\*.*" exclude="bin\x64\BuildServer\app.config;bin\x64\BuildServer\settings.config;bin\x64\BuildServer\Config\*.xml" />
</files>
src
表示“包含 bin\x64\BuildServer
中的所有目录和文件,其中所有 dll 等都在构建之后。而 exclude
表示 除了 这些文件。注意 所有 路径是相对于你的 nuspec 文件所在的位置(这很重要!!!)。