使用 FAKE 从 TeamCity 内部版本号中提取 NuGet 包版本
Pulling NuGet package version from TeamCity build number using FAKE
我已经创建了我的构建脚本,它从我的项目中生成了一个 NuGet 包,我现在正在尝试从 TeamCity 中提取版本号,而不是在我的脚本中使用静态值。
我现在的代码是这样的(在一个Target中)
NuGet (fun p ->
{p with
Authors = authors
Project = projectName
Description = projectDescription
OutputPath = packagingRoot
Summary = projectSummary
WorkingDir = packagingDir
Version = TeamCityHelper.TeamCityBuildNumber }) "myProject.nuspec"
问题是与 FAKE returns 捆绑在一起的 TeamCity 助手是一个可选字符串而不是字符串,而 NuGet 调用需要一个字符串。
这是我第一次使用 F#,我如何才能将 TeamCityHelper.TeamCityBuildNumber
作为字符串而不是可选的,以便为 NuGet 步骤做好准备?如果 TeamCity 没有返回版本号的任何内容,我最好终止构建,但现在我只想放入一个类似“0.0.1”的占位符。
我只想创建一个像下面这样的函数,并将其放在您的 NuGet
目标之上:
let getTeamCityBuildNumberOrDefault() =
match TeamCityHelper.TeamCityBuildNumber with
| Some v -> v
| None -> "0.0.1"
然后用它代替 NuGet
目标中的 TeamCityHelper.TeamCityBuildNumber
。
你试过类似的东西吗:
NuGet (fun p ->
match TeamCityHelper.TeamCityBuildNumber with
| Some(buildNumber) ->
{p with
Authors = authors
Project = projectName
Description = projectDescription
OutputPath = packagingRoot
Summary = projectSummary
WorkingDir = packagingDir
Version = buildNumber}
| None ->
{p with
Authors = authors
Project = projectName
Description = projectDescription
OutputPath = packagingRoot
Summary = projectSummary
WorkingDir = packagingDir
Version = "0.0.1"}) "myProject.nuspec"
我已经创建了我的构建脚本,它从我的项目中生成了一个 NuGet 包,我现在正在尝试从 TeamCity 中提取版本号,而不是在我的脚本中使用静态值。
我现在的代码是这样的(在一个Target中)
NuGet (fun p ->
{p with
Authors = authors
Project = projectName
Description = projectDescription
OutputPath = packagingRoot
Summary = projectSummary
WorkingDir = packagingDir
Version = TeamCityHelper.TeamCityBuildNumber }) "myProject.nuspec"
问题是与 FAKE returns 捆绑在一起的 TeamCity 助手是一个可选字符串而不是字符串,而 NuGet 调用需要一个字符串。
这是我第一次使用 F#,我如何才能将 TeamCityHelper.TeamCityBuildNumber
作为字符串而不是可选的,以便为 NuGet 步骤做好准备?如果 TeamCity 没有返回版本号的任何内容,我最好终止构建,但现在我只想放入一个类似“0.0.1”的占位符。
我只想创建一个像下面这样的函数,并将其放在您的 NuGet
目标之上:
let getTeamCityBuildNumberOrDefault() =
match TeamCityHelper.TeamCityBuildNumber with
| Some v -> v
| None -> "0.0.1"
然后用它代替 NuGet
目标中的 TeamCityHelper.TeamCityBuildNumber
。
你试过类似的东西吗:
NuGet (fun p ->
match TeamCityHelper.TeamCityBuildNumber with
| Some(buildNumber) ->
{p with
Authors = authors
Project = projectName
Description = projectDescription
OutputPath = packagingRoot
Summary = projectSummary
WorkingDir = packagingDir
Version = buildNumber}
| None ->
{p with
Authors = authors
Project = projectName
Description = projectDescription
OutputPath = packagingRoot
Summary = projectSummary
WorkingDir = packagingDir
Version = "0.0.1"}) "myProject.nuspec"