【问题标题】:Linux: Agent Side Checkout fails - Perforce password (P4PASSWD) invalid or unsetLinux:代理端签出失败 - Perforce 密码 (P4PASSWD) 无效或未设置
【发布时间】:2017-06-27 01:44:41
【问题描述】:

使用 Team City 2017.1

由于以下错误,我无法在我的 Ubuntu 14.04 构建代理中使用代理端结帐:

[2017-06-22 13:41:12,779]   INFO -   jetbrains.buildServer.VCS.P4 - Running p4 login for user myUserId in [P4Port: redacted-server-address:1666; P4User: myUserId; perforce client mapping with 1 rules, VCSRoot: "ETG" {internal id=170}]
[2017-06-22 14:07:38,029]   INFO -   jetbrains.buildServer.VCS.P4 - Creating P4 workspace TC_p4_LinuxBuildAgent1_964e0a7b4154cd8c_85d77afe3e61a99a
[2017-06-22 14:07:38,225]   INFO -   jetbrains.buildServer.VCS.P4 - Creating/updating Perforce client specification:
Client: TC_p4_LinuxBuildAgent1_964e0a7b4154cd8c_85d77afe3e61a99a
Owner:  myUserId
Description:
        Created by TeamCity for user myUserId.
Root:   /home/someuser/BuildAgent/work/964e0a7b4154cd8c
Options:        noallwrite clobber nocompress unlocked nomodtime rmdir
Host:           ubuntu
SubmitOptions:  revertunchanged
LineEnd:        local

View:

        //ETS/GE_DEV/Build/...  //TC_p4_LinuxBuildAgent1_964e0a7b4154cd8c_85d77afe3e61a99a/...

[2017-06-22 14:07:38,436]   INFO -   jetbrains.buildServer.VCS.P4 - Running p4 login for user myUserId in [P4Port: redacted-server-address:1666; P4User: myUserId; perforce client mapping with 1 rules, VCSRoot: "ETG" {internal id=170}]
[2017-06-22 14:07:39,016]   WARN - l.patch.AbstractSourcesUpdater - Error while checkout on agent: Perforce password (P4PASSWD) invalid or unset. - while running 'p4 -c TC_p4_LinuxBuildAgent1_964e0a7b4154cd8c_85d77afe3e61a99a -u myUserId -p
 redacted-server-address:1666 -H ubuntu client -i'
jetbrains.buildServer.vcs.VcsException: Perforce password (P4PASSWD) invalid or unset. - while running 'p4 -c TC_p4_LinuxBuildAgent1_964e0a7b4154cd8c_85d77afe3e61a99a -u myUserId -p redacted-server-address:1666 -H ubuntu client -i'
        at jetbrains.buildServer.vcs.perforce.PerforceConnection.runCommand(PerforceConnection.java:271)
        at jetbrains.buildServer.vcs.perforce.PerforceConnection.runCommand(PerforceConnection.java:257)
        at jetbrains.buildServer.vcs.perforce.PerforceWorkspacesImpl.createOrUpdateWorkspace(PerforceWorkspacesImpl.java:80)
        at jetbrains.buildServer.vcs.perforce.PerforceAgentSourceUpdater.createOrUpdateLocalWorkspace(PerforceAgentSourceUpdater.java:99)
        at jetbrains.buildServer.vcs.perforce.PerforceAgentSourceUpdater.updateSources(PerforceAgentSourceUpdater.java:68)
        at jetbrains.buildServer.vcs.perforce.PerforceAgentSourceUpdater.updatePerforceSources(PerforceAgentSourceUpdater.java:55)
        at jetbrains.buildServer.vcs.perforce.PerforceSourceUpdatePolicy.updateSources(PerforceSourceUpdatePolicy.java:66)
        at jetbrains.buildServer.agent.impl.vcs.AgentVcsManagerExImpl$CheckoutSupportImpl.updateSources(AgentVcsManagerExImpl.java:108)
        at jetbrains.buildServer.agent.impl.patch.ProjectSourcesOnAgent$1.run(ProjectSourcesOnAgent.java:186)
        at java.lang.Thread.run(Thread.java:745)

我相当肯定我们的 Perforce 服务器使用基于票证的身份验证。在构建机器上,我可以运行 p4 login (提示输入密码)。这是成功的,并允许我运行 p4 客户端,它返回一个包含“AuthMethod:perforce”的用户规范(用户规范包含“密码:”行)。

我尝试了几种不同的解决方法,包括:

  • 创建一个包含 P4PASSWD 的 .p4enviro 文件
  • 为 P4PASSWD 设置环境变量(在 /etc/environment 中)

但是,这些都没有效果......

日志对我来说似乎很奇怪,因为登录似乎成功(至少,没有记录错误)。但是,结帐失败并出现 P4PASSWD 错误。

此外,VCS 根使用客户端映射(但我也尝试过使用客户端 - 存在相同的错误)。

任何帮助将不胜感激!

【问题讨论】:

  • 您是否在运行构建代理的系统上以同一用户身份运行“p4 登录”?票证文件(以及 enviro 文件)默认存储在当前用户的主目录中。
  • 请检查 /Users/buildAgentUser/.p4tickets 文件中运行的帐户构建代理 - 它是否可写且可访问?构建代理应该能够写入文件。另外,您是否将 P4TICKETS 变量设置为某个非默认值?
  • @SamStafford - 我发现构建代理是通过 rc.local 启动的,因此以 root 身份运行,而不是 p4 登录成功使用的 buildAgentUser。所以,我能够纠正这个问题,现在代理端结帐工作正常!
  • @KIR - 请参阅我上面对 Sam Stafford 的评论。本质上,你们猜到了这个问题,我现在有代理端结账工作!但是,这引起了另一个问题。现在,代理在尝试连接到 Team City 服务器以下载工件依赖项时失败(以 root 身份运行时有效)。特权较低的用户是否有任何理由无法下载工件?此外,如果有帮助,Team City 服务器正在单独的 Windows 机器上运行。
  • @Rob 我认为构建代理在root下运行时创建了一些临时目录,现在在普通用户下运行时,构建代理无法将文件写入这些目录。运行“sudo chmod -R buildAgentUser /path/to/buildAgent”,它应该会有所帮助。

标签: teamcity perforce


【解决方案1】:

感谢那些在上面添加了 cmets 的人。

这个问题是自己造成的,由 rc.local 中的一个条目引起,该条目向 agent.sh 发出启动命令(从而导致构建代理以 root 身份运行)。

如果我只有RTFM,我就不会遇到这个问题了:)

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-02-02
    • 1970-01-01
    • 1970-01-01
    • 2020-09-03
    相关资源
    最近更新 更多