GoCD故障排除问题

这个页面主要是针对GoCD的新用户,以帮助解决问题。

没有在GoCD服务器注册的GoCD代理

此问题显示为未在“代理”页面上显示的代理或 显示出“失踪”的状态。 如果发生这种情况,开始排除故障 查看代理日志文件。

查看安装文档页面的末尾 为您的操作系统找到日志文件的位置。 将有 代理的日志文件,agent-bootstrapper和agent-launcher。 任何错误 在这些文件的结尾可能会很有趣。 一些常见的错误是:

  1. 无法到达GoCD服务器

    这表现为go-agent-launcher.log中的日志,其行与此类似:

    ERROR go.agent.launcher.ServerCall:69 - Couldn't access Go Server with base url: http://YOUR_SERVER:8153/go/admin/agent-launcher.jar: java.net.ConnectException: Connection refused

    ERROR go.agent.launcher.ServerBinaryDownloader:116 - Couldn't update admin/agent-launcher.jar. Sleeping for 1m. Error: java.lang.Exception: Couldn't access Go Server with base url: http://YOUR_SERVER:8153/go/admin/agent-launcher.jar: java.net.ConnectException: Connection refused
    INFO  apache.commons.httpclient.HttpMethodDirector:438 - I/O exception (java.net.ConnectException) caught when processing request: Connection refused
    INFO  apache.commons.httpclient.HttpMethodDirector:444 - Retrying request
    

    这里的问题是代理无法访问服务器,或者是因为网络有问题,或者服务器使用的端口不对由于防火墙限制,可访问。GoCD服务器使用两个端口8153和8154(默认)。这两个端口需要由代理访问。

  1. 无法连接 - SSL握手错误或连接重置

    这表现为go-agent-bootstrapper.out.log中的日志,其行类似于:

     180679 [main] ERROR com.thoughtworks.go.agent.launcher.ServerCall  - Couldn't access Go Server with base url: https://YOUR_SERVER:8154/go/admin/agent-launcher.jar: javax.net.ssl.SSLHandshakeException: Remote host closed connection during handshake
     java.lang.Exception: Couldn't access Go Server with base url: https://YOUR_SERVER:8154/go/admin/agent-launcher.jar: javax.net.ssl.SSLHandshakeException: Remote host closed connection during handshake
             at com.thoughtworks.go.agent.launcher.ServerCall.invoke(ServerCall.java:78)
             at com.thoughtworks.go.agent.launcher.ServerBinaryDownloader.headers(ServerBinaryDownloader.java:130)
             at com.thoughtworks.go.agent.launcher.ServerBinaryDownloader.downloadIfNecessary(ServerBinaryDownloader.java:106)
             at com.thoughtworks.go.agent.launcher.AgentLauncherImpl.launch(AgentLauncherImpl.java:78)
             at com.thoughtworks.go.agent.bootstrapper.AgentBootstrapper.go(AgentBootstrapper.java:72)
             at com.thoughtworks.go.agent.bootstrapper.AgentBootstrapper.main(AgentBootstrapper.java:54)
             at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
             at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
             at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
             at java.lang.reflect.Method.invoke(Unknown Source)
             at com.simontuffs.onejar.Boot.run(Boot.java:306)
             at com.simontuffs.onejar.Boot.main(Boot.java:159)
     Caused by: javax.net.ssl.SSLHandshakeException: Remote host closed connection during handshake
             at sun.security.ssl.SSLSocketImpl.readRecord(Unknown Source)
             at sun.security.ssl.SSLSocketImpl.performInitialHandshake(Unknown Source)
             at sun.security.ssl.SSLSocketImpl.startHandshake(Unknown Source)
             at sun.security.ssl.SSLSocketImpl.startHandshake(Unknown Source)
             at org.apache.http.conn.ssl.SSLConnectionSocketFactory.createLayeredSocket(SSLConnectionSocketFactory.java:394)
             at org.apache.http.conn.ssl.SSLConnectionSocketFactory.connectSocket(SSLConnectionSocketFactory.java:353)
             at org.apache.http.impl.conn.DefaultHttpClientConnectionOperator.connect(DefaultHttpClientConnectionOperator.java:141)
             at org.apache.http.impl.conn.PoolingHttpClientConnectionManager.connect(PoolingHttpClientConnectionManager.java:353)
             at org.apache.http.impl.execchain.MainClientExec.establishRoute(MainClientExec.java:380)
             at org.apache.http.impl.execchain.MainClientExec.execute(MainClientExec.java:236)
             at org.apache.http.impl.execchain.ProtocolExec.execute(ProtocolExec.java:184)
             at org.apache.http.impl.execchain.RetryExec.execute(RetryExec.java:88)
             at org.apache.http.impl.execchain.RedirectExec.execute(RedirectExec.java:110)
             at org.apache.http.impl.client.InternalHttpClient.doExecute(InternalHttpClient.java:184)
             at org.apache.http.impl.client.CloseableHttpClient.execute(CloseableHttpClient.java:82)
             at org.apache.http.impl.client.CloseableHttpClient.execute(CloseableHttpClient.java:107)
             at com.thoughtworks.go.agent.launcher.ServerCall.invoke(ServerCall.java:55)
             ... 11 more
     Caused by: java.io.EOFException: SSL peer shut down incorrectly
             at sun.security.ssl.InputRecord.read(Unknown Source)
             ... 28 more
    

    or this:

     2986 [main] ERROR com.thoughtworks.go.agent.launcher.ServerCall  - Couldn't access Go Server with base url: https://YOUR_SERVER:8154/go/admin/agent-launcher.jar: java.net.SocketException: Connection reset
     java.lang.Exception: Couldn't access Go Server with base url: https://YOUR_SERVER:8154/go/admin/agent-launcher.jar: java.net.SocketException: Connection reset
             at com.thoughtworks.go.agent.launcher.ServerCall.invoke(ServerCall.java:78)
             ...
    

    这里的问题是代理不能安全地连接到服务器,它指向一个无效的证书。 这可能会发生,如果一个代理已连接到一个GoCD服务器,然后指向另一个GoCD服务器。 它会尝试使用证书连接到新的服务器是旧的服务器,它会失败。

    解决方法是移动或重命名中找到的agent.jks文件代理的config /目录并重新启动代理。 这应该做到这一点使用正确的证书进行连接。

    如果你使用完整端到端传输安全,这个错误可能意味着服务器的证书已经改变,你需要提供更新证书。

  2. 不兼容的Java版本

    这表现为go-agent-bootstrapper.log中的日志,其行类似于:

    242 [main] INFO com.thoughtworks.go.util.PerfTimer  - Performance: Downloading new admin/agent-launcher.jar with md5 signature: e9SXM6cdV5kSkpVEmymHIg== took 37ms
    Exception in thread "main" java.lang.reflect.InvocationTargetException
      at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
      at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
      at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
      at java.lang.reflect.Method.invoke(Method.java:622)
      at com.simontuffs.onejar.Boot.run(Boot.java:306)
      at com.simontuffs.onejar.Boot.main(Boot.java:159)
    Caused by: java.lang.UnsupportedClassVersionError: com/thoughtworks/cruise/agent/launcher/AgentLauncherImpl : Unsupported major.minor version 51.0
      at java.lang.ClassLoader.defineClass1(Native Method)
      at java.lang.ClassLoader.defineClass(ClassLoader.java:643)
      at java.security.SecureClassLoader.defineClass(SecureClassLoader.java:142)
    

    这里的问题是代理使用的Java版本太旧了。 在这个例子中,一个代理使用了Java 6,一个16.2.0的GoCD服务器需要Java 7。

Command not found (git, svn, mvn, ant or others)

这个问题以三种方式之一显示,如下所示。 所有三个问题的解决方案是相同的 - 确保PATH环境变量是正确的。

  1. 在“检查连接”

    这也可能发生在其他版本控制系统,如SVN,TFS等

    解析度: 检查GoCD Server的java进程的PATH环境变量。确保该命令可用的目录在列表中。在Windows上 procexp 从微软的Windows SysInternals工具可能是有用的检查这一点。 它以简单的方式显示了每个进程的环境变量。

  2. 在材料轮询期间

    在任何页面的右下角寻找错误消息,如下所示:

    点击显示一个这样的错误:

    GoCD服务器日志,go-server。日志(位置可以在安装文档页面的底部找到)安装文件页面的操作系统)将会有如下信息:

    这也可能发生在其他版本控制系统,如SVN、TFS等。

    解决: 检查GoCD 服务器的java的“PATH”环境变量。的过程。确保命令可用的目录在列表。在Windows上,procexp微软的Windows系统内部的工具可能对检查这一点很有用。它以一种简单的方式显示每个进程的环境变量。

  3. 在运行任务时,在控制台输出中

    这在控制台输出中显示为一条消息,如下所示:

    这也可能发生在其他版本控制系统,如SVN、TFS等。它也可以发生在任务中使用的任何其他命令,如Maven、Ant、Rake,甚至任何其他shell脚本,在“PATH”中无法找到它。

    解决: 检查GoCD 代理的 java进程的“PATH”环境变量。确保命令可用的目录在列表中。在Windows上,procexp工具从微软的Windows SysInternals检查这很有用。它以一种简单的方式显示每个进程的环境变量。

代理没有被分配或者“没有任何东西被构建”"

这是一个在“建筑”(黄色)状态下一直停留的管道:

单击stage bar,然后单击作业,到达控制台日志,您可能会看到一个构建,其状态为“调度”,代理状态为“尚未分配”("Not yet assigned"),如下所示:

解决: 如果发生这种情况,就意味着没有找到合适的代理。原因可能是:

  1. 没有可用的代理(免费且不建立)。检查“代理”页面,看看是否所有代理都很忙。如果这样,一旦其中一个获得了自由,那么这个构建就会开始。

  2. 如果您确实看到了可用的代理,那么请检查该作业是否具有在配置中定义的资源。如果是,这意味着该工作正在寻找具有这些资源的代理。检查“代理”页面,看看是否有代理,这些代理有工作所需的资源,并且是可用的(不是构建)。

  3. 如果前两个选项不能解决问题,那么检查管道是否属于环境的一部分(在“环境”页面中或配置中(in the "Environments" page or in the config))。如果是,那么任何能够从管道中找到工作的代理都需要成为该环境的一部分。

与Java 1.7有关的Mac OS X消息

如果你想在Mac OSX上使用GoCD,你会收到这样的信息:

Mac installer - Java 1.7+ message

您可能在非标准位置或大于Java 1.7的地方安装了Java安装。GoCD Mac应用程序试图找到正确的Java安装,使用以下命令:

/usr/libexec/java_home -v "1.7+"

如果失败,则可以看到上面显示的消息。

如果您确信您已经安装了Java 1.7或更新版本,并且应用程序根本找不到它,那么应用程序就可以使用GO_JAVA_HOME的“环境变量”来强制使用您选择的Java安装。假设Go Server.app 文件在 /Applications,你希望GoCD使用的Java安装在:/Library/MY_Java/Contents/Home,然后你可以使用这个(在终端模拟器中)使用这个Java启动GoCD服务器

GO_JAVA_HOME="/Library/MY_Java/Contents/Home" open "/Applications/Go Server.app"

请注意,这是用来设置Java home的,而不是用于java可执行”的路径。通常,GO_JAVA_HOME/bin/java 需要是一个工作的java 1.7+可执行文件。

在升级到17.x版本时,Java版本不兼容

Java 7支持作为17.1版本的一部分被删除。这意味着现有的GoCD安装将在升级后停止工作,如果它被配置为与Java 7一起运行。

在这种情况下,会在日志中看到以下错误消息之一:

Unrecognized VM option "MaxMetaSpaceSize=256m"

or

不支持的 major.minor version 52.0

On Windows:

如果由于Java版本的不兼容而导致启动失败,那么这个错误将被记录在服务器上的<GO_INSTALLATION_DIR>/go-server-wrapper.log和代理的<GO_INSTALLATION_DIR>/go-agent-bootstrapper-wrapper.log上。

On Linux:

如果由于Java版本的不兼容而导致启动失败,那么这个错误将被记录在服务器上的<GO_LOG_DIR>/go-server.out.log以及代理上是<GO_LOG_DIR>/go-agent-bootstrapper.log。 解决: 将环境变量JAVA_HOME设置为/etc/default/go-server, /etc/default/go-agent到Java 8路径,并重新启动GoCD服务器/代理。

results matching ""

    No results matching ""