我正在尝试使用Chef从Perforce中提取文件,方法是从PowerShell脚本调用p4 sync
。正如标题所示,我被这个失败所困扰:“你的会话已经过期,请再次登录。”根据我收集的内容,它与通过Chef运行PowerShell脚本的方式有关(使用Invoke-Command
?)
这就是我所拥有的不工作:(
powershell_script 'P4Sync' do
cwd "C:\\Program Files\\Perforce"
code <<-EOH
&".\\p4.exe" set P4PORT=server:1234
&".\\p4.exe" set P4USER=AUTOMATION_USER
set shallNotPass 'AUTOMATION_USER_PASSWORD_TICKET'
&".\\p4.exe" -d c:\\temp -P $shallNotPass client -o | &".\\p4.exe" -P $shallNotPass client -i
set rootdir '//root/scripts'
&".\\p4.exe" -P $shallNotPass sync $rootdir/script.bat
&".\\p4.exe" -P $shallNotPass sync $rootdir/script.sh
EOH
end
我使用过的其他powershell_script资源( 正在工作)只涉及PowerShell cmdlet,而不涉及外部可执行文件。
任何建议将不胜感激!此外,如果您愿意共享我可能自己发现此信息的任何其他资源,那么它也会有所帮助。我花了不少时间在这个错误上搜索互联网,并且没有太多运气。
答案 0 :(得分:1)
错误消息是Perforce身份验证失败,并表明您的AUTOMATION_USER_PASSWORD_TICKET存在问题。如果这实际上是一张票(它应该看起来像是一个哈希而不是明文),问题很可能是它已过期 - 默认情况下,登录票只在用于获取它的“p4登录”命令后的12小时内有效。
有关票证如何工作的更多信息,请参阅“p4登录”的文档:
http://www.perforce.com/perforce/r15.1/manuals/cmdref/p4_login.html
最简单的解决方案可能是将AUTOMATION_USER置于具有无限超时的组中,然后重新运行“p4 login”以获取新票证(永不过期)并将其放入脚本中。