Java 在 CircleCI 作业中找不到,运行 Node.js 测试
Java not found in CircleCI job, running Node.js tests
对于 运行我的 Node.js 测试(需要 Java)我使用了这个配置:
version: 2.1
orbs:
node: circleci/node@4.7.0
jobs:
build_and_test:
docker:
- image: cimg/openjdk:17.0.2-node
resource_class: large
steps:
- checkout
- run: java --version
- run: node --version
- node/install-packages:
pkg-manager: npm
- run:
command: npm run test
name: Run tests
workflows:
validation:
jobs:
- build_and_test
如您所见,我将 OpenJDK 的语言变体与 Node.js 结合使用。版本检查都成功了,所以 Java 实际上是可用的。
但是,当我在 运行 Java 的测试中生成一个进程时,它失败了:
const java = child_process.spawn("java", parameters, spawnOptions);
if (!java.connected) {
resolve("Java not installed");
return;
}
在 CircleCI 中生成进程时,我是否需要考虑一些特别的事情,或者我还没有做其他事情?
问题出在进程检查上。虽然这在本地运行良好,但在 CircleCI 等环境中却行不通。而是使用子进程的错误事件,如:
java.on("error", (error) => {
resolve(`Error while running Java: "${error.message}". Is Java installed on you machine?`);
});
对于 运行我的 Node.js 测试(需要 Java)我使用了这个配置:
version: 2.1
orbs:
node: circleci/node@4.7.0
jobs:
build_and_test:
docker:
- image: cimg/openjdk:17.0.2-node
resource_class: large
steps:
- checkout
- run: java --version
- run: node --version
- node/install-packages:
pkg-manager: npm
- run:
command: npm run test
name: Run tests
workflows:
validation:
jobs:
- build_and_test
如您所见,我将 OpenJDK 的语言变体与 Node.js 结合使用。版本检查都成功了,所以 Java 实际上是可用的。
但是,当我在 运行 Java 的测试中生成一个进程时,它失败了:
const java = child_process.spawn("java", parameters, spawnOptions);
if (!java.connected) {
resolve("Java not installed");
return;
}
在 CircleCI 中生成进程时,我是否需要考虑一些特别的事情,或者我还没有做其他事情?
问题出在进程检查上。虽然这在本地运行良好,但在 CircleCI 等环境中却行不通。而是使用子进程的错误事件,如:
java.on("error", (error) => {
resolve(`Error while running Java: "${error.message}". Is Java installed on you machine?`);
});