我正在使用"更改程序集版本" Jenkins中的插件,用于更新ASP.NET MVC项目的所有AssemblyInfo.cs文件,以在构建过程中应用版本号。如果我设置"汇编版本"对于硬编码的值,这非常有效。
但我的要求不同 - 我想在版本号中使用内部版本号。例如," 1.1.0.25",其中25是内部版本编号,由Jenkins自动生成。简而言之,版本应该像" 1.1.0。<>"
我可以使用TFS环境变量在TFS构建过程中执行此操作,我是Jenkins的新手,并且不确定如何在Jenkins中实现此目的。 以下是"更改程序集版本" Jenkins的插件供您快速参考:
提前致谢
答案 0 :(得分:7)
以前关于如何使用Jenkins的“更改程序集版本”插件的答案不起作用。 在我的AssemblyInfo.cs文件中,我通常使用自动递增版本来设置它们以帮助本地开发工作。
AssemblyInfo.cs包含:
[assembly: AssemblyVersion("1.0.*")]
[assembly: AssemblyFileVersion("1.0.*")]
如果版本为10,则在Jenkins构建之后,AssemblyInfo.cs将包含:
[assembly: AssemblyVersion("1.0.10")]
[assembly: AssemblyFileVersion("1.0.10")]
这样使用插件来实现上述目的:
Assembly Version: $BUILD_NUMBER
FileName:
RegexPattern: Assembly(\w*)Version\("(\d+).(\d+).(\*)"\)
ReplacementPattern: Assembly$1Version("$2.$3.%s")
我在使用插件时遇到的另一个错误是文件权限不允许写访问。为了解决这个问题,找到AssemblyInfo.cs并禁用“只读”。
希望能帮到任何人。
答案 1 :(得分:6)
对于其他希望仅更新1个版本号但保留其余现有版本号的人,您可以设置“更改程序集版本”插件,如下所示:
汇编版本: $ BUILD_NUMBER
FileName:<项目文件夹> /Properties/AssemblyInfo.cs
RegexPattern:程序集(\ w *)版本\(“((\ d +)。(\ d +)。(\ d +)。(\ d +)”\)
ReplacementPattern:汇编$ 1Version(“$ 2. $ 3.%s”)
这将保留Assembly ??? Version设置中已包含的前两个数字,并将第三个版本号设置为当前的Jenkins内部版本号。
AssemblyInfo.cs包含:
def get_meet_dets(self, cr, uid, ids, meet_ref, context=None):
val = {}
res = []
if meet_ref:
for det in self.pool.get('calendar.event').browse(cr,uid,meet_ref,context=context):
for asst in det.attendee_ids:
emp_id = self.pool.get('hr.employee').search(cr, uid, [('user_id','in',user_id)])
val = {
'empname' : emp_id[0],
'wk_mail': asst.partner_id.email,
'loc' : det.location,
}
res.append(val)
val.update({'matp':res})
如果Jenkins内部版本号为103,则在更改程序集版本插件使用上述设置后,AssemblyInfo.cs将包含:
[assembly: AssemblyVersion("1.40.0.0")]
[assembly: AssemblyFileVersion("1.40.0.0")]
注意
如果您正在使用subversion(可能还有其他源代码控制系统)并使用“尽可能使用SVN更新”的“签出策略”,则必须将其更改为“在更新前使用svn revert尽可能多地使用SVN更新”,以确保为下一次构建重置修改后的AssemblyInfo.cs文件。
答案 2 :(得分:4)
很酷,我自己找到了答案。
基本上,我不得不给#34; 1.0.0。$ BUILD_NUMBER"在"汇编版本" "改变装配版本"插件答案 3 :(得分:1)
我最近不得不在没有“更改程序集版本”插件的情况下执行此操作。我只是使用了 PowerShell 脚本。我会把它贴在这里,因为它可能为那些想要它的人提供更多的灵活性:
if (Test-Path env:BUILD_NUMBER) {
Write-Host "Updating AssemblyVersion to $env:BUILD_NUMBER"
# Get the AssemblyInfo.cs
$assemblyInfo = Get-Content -Path .\MyShinyApplication\Properties\AssemblyInfo.cs
# Replace last digit of AssemblyVersion
$assemblyInfo = $assemblyInfo -replace
"^\[assembly: AssemblyVersion\(`"([0-9]+)\.([0-9]+)\.([0-9]+)\.[0-9]+`"\)]",
('[assembly: AssemblyVersion("$1.$2.$3.' + $env:BUILD_NUMBER + '")]')
Write-Host ($assemblyInfo -match '^\[assembly: AssemblyVersion')
# Replace last digit of AssemblyFileVersion
$assemblyInfo = $assemblyInfo -replace
"^\[assembly: AssemblyFileVersion\(`"([0-9]+)\.([0-9]+)\.([0-9]+)\.[0-9]+`"\)]",
('[assembly: AssemblyFileVersion("$1.$2.$3.' + $env:BUILD_NUMBER + '")]')
Write-Host ($assemblyInfo -match '^\[assembly: AssemblyFileVersion')
$assemblyInfo | Set-Content -Path .\MyShinyApplication\Properties\AssemblyInfo.cs -Encoding UTF8
} else {
Write-Warning "BUILD_NUMBER is not set."
}