我正在努力挖掘团队城市的深度,以便更好地了解它在幕后做什么(并提高我自己的构建知识)。我注意到,当我运行一个构建步骤时,它会执行它自己的.cmd,我认为它包装了msbuild脚本。问题是,每当我查看指定的目录时,文件都不存在,因为我猜它几乎是立即创建、执行然后删除的。对如何访问该文件有什么建议吗?或者里面是什么?
Starting:D:\TeamCity\buildAgent\temp\agentTmp\custom_script5990675507156014131.cmd
发布于 2016-12-02 20:05:52
当您以运行者身份运行add a Command Line Build Step with "Custom script“时,TeamCity会创建临时文件。
此文件的内容将是您在用户界面中指定的Custom script。

产生的输出将是:
Step 1/1: Command Line (1s)
Starting: D:\TeamCity\buildAgent\temp\agentTmp\custom_script2362934300799611461.cmd
in directory: D:\TeamCity\buildAgent\work\c72dca7a7355b5de
Hello World
Process exited with code 0发布于 2018-07-02 06:15:29
如果任何人仍然对此感到疑惑,您可以强制重新打开echo。作为自定义脚本中的第一件事
@echo on这将撤消默认为teamcity的静默命令。
发布于 2016-12-08 22:27:44
我看了一段时间,但TeamCity中似乎没有允许保存生成文件的配置变量。现在如果执行命令需要一些时间,例如超过几秒,你可以在资源管理器中打开临时目录,从构建开始的那一刻开始点击F5 (刷新),直到你看到.cmd文件出现,然后快速右击它并选择“编辑”在文本编辑器中打开它。如果这太难了,您可以尝试使用here提供的解决方案:使用如下代码创建一个Powershell脚本:
$watcher = New-Object System.IO.FileSystemWatcher
$watcher.Path = "D:\TeamCity\buildAgent\temp\agentTmp"
$watcher.Filter = "*.cmd"
$watcher.IncludeSubdirectories = $false
$watcher.EnableRaisingEvents = $true
$action = { $path = $Event.SourceEventArgs.FullPath
Add-content "D:\log.txt" -value (Get-Content $path)
}
Register-ObjectEvent $watcher "Created" -Action $action
Register-ObjectEvent $watcher "Changed" -Action $action
while ($true) {sleep 1}然后运行它。当构建开始并创建cmd文件时,powershell脚本会将内容复制到d:\log.txt。不过,这仍然不适用于生命周期非常短的脚本。在这种情况下,我可以通过添加如下内容来延长脚本的使用时间
ping 127.0.0.1 -n 5 -w 1000 > NUL这将使它至少持续5秒。
https://stackoverflow.com/questions/40909457
复制相似问题