Sha*_*der 3 jetbrains-ide teamcity-8.0 teamcity-9.0
我team city 9.1.7在Windows 2012服务器上使用版本.作为构建步骤的一部分,我使用命令行构建基于nodejs的应用程序.输出是一堆Javascript和html文件.
在下一步中(在构建结束并生成输出之后),我想执行以下操作:
找到这个 <script src="bundle.js"></script>和
用...来代替 <script src="bundle.js?time=getTime()"></script>
将导致 <script src="bundle.js?time=4324324324"></script>
请尝试以下方法
添加PowerShell步骤并将以下内容作为源代码运行
$versionNumber = "%build.number%"
$filePath = "%teamcity.agent.work.dir%\path\file.txt"
(GC $filePath).Replace("<head>", "<head><meta http-equiv='X-Version-Number' content='$versionNumber'>").Replace("bundle.js", "bundle.js?time=getTime()") | Set-Content $filePath
Run Code Online (Sandbox Code Playgroud)
这将读取文件内容并对其执行两次替换,然后写回文件.
不确定您的文件路径是什么或者您希望标题调用的是什么,但您应该能够根据您的要求进行更改.
希望这可以帮助
要捕获任何异常,请尝试将代码包装在try catch块中
try {
(GC $filePath).Replace("<head>", "<head><meta http-equiv='X-Version-Number' content='$versionNumber'>").Replace("bundle.js", "bundle.js?time=getTime()") | Set-Content $filePath
}
catch [System.Exception] {
Write-Output $_
Exit 1
}
Run Code Online (Sandbox Code Playgroud)
要打破缓存,您可以使用版本号,因为这将增加每个构建,因此是唯一的
try {
(GC $filePath).Replace("<head>", "<head><meta http-equiv='X-Version-Number' content='$versionNumber'>").Replace("bundle.js", "bundle.js?v=$versionNumber") | Set-Content $filePath
}
catch [System.Exception] {
Write-Output $_
Exit 1
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
2455 次 |
| 最近记录: |