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?`);
            });