我通过 Tomcat 将 Hudson 作为 Windows 服务运行,不涉及任何从站。作业中的最后一个构建步骤是调用一些 Java 代码的批处理文件。该代码使用 PostgreSQL 的命令行工具 psql(通过 Runtime.exec())在本地机器上创建一个数据库,并最终针对它运行一些测试。
该作业将进行到这一点,然后无限期地挂起而不开始创建数据库。如果我从命令行运行批处理文件,它会完美运行。我认为http://hudson.gotdns.com/wiki/display/HUDSON/Spawning+processes+from+build不适用,因为生成的进程似乎还没有开始执行,但我对此并不陌生所以如果我错了,请告诉我。
编辑@anjanb:批处理文件的唯一目的是调用 Java 代码,唯一的用户输入作为命令行参数传入,我可以看到它直接通过构建的控制台输出进入。
Process Explorer 显示 psql 正在启动,但它显然没有被执行,因为给出的第一个命令 psql 是创建一个新数据库,但这并没有发生。
编辑 2:我从 Hudson 用户邮件列表中获得了一些提示,我将在周一试用并报告。
编辑 3:Java 代码已经在使用输出流,我在开发代码时使用了那篇文章。我不知道发生了什么,所以我正在重新开发代码以使用 JDBC 来创建数据库,而不是依赖 psql 和 Runtime.exec()