无法使用 gradle 节点插件运行节点

Liq*_*tle 5 java gradle node.js gitlab docker

我们\xe2\x80\x99使用gradle节点插件从gradle构建我们的节点项目。我们选择的 gitlab ci 模板使用 gradle:alpine docker 镜像。在我们的工作中,我们运行 gradle 包装器。构建失败,并显示 \xe2\x80\x9cenv: can\xe2\x80\x99t 执行 \xe2\x80\x98node\xe2\x80\x99: 没有这样的文件或目录\xe2\x80\x9d。它在我们的 Linux 开发盒上构建得很好。

\n\n

这是堆栈跟踪:

\n\n
Caused by: java.io.IOException: Cannot run program "/builds/myueser/myproj/.gradle/nodejs/node-v10.11.0-linux-x64/bin/node" (in directory "/builds/myueser/myproj"): error=2, No such file or directory\n    at net.rubygrapefruit.platform.internal.DefaultProcessLauncher.start(DefaultProcessLauncher.java:25)\n    ... 6 more\nCaused by: java.io.IOException: error=2, No such file or directory\n
Run Code Online (Sandbox Code Playgroud)\n\n

以下是 gitlab-ci.yml 中的相关内容:

\n\n
image: gradle:alpine\n\nvariables:\n GRADLE_OPTS: "-Dorg.gradle.daemon=false"\n GIT_STRATEGY: clone\n\nbefore_script:\n - export GRADLE_USER_HOME=`pwd`/.gradle\n - export PATH=`pwd`/.gradle/nodejs/node-v10.11.0-linux-x64/bin:$PATH\n\ndeploy-ui:\n stage: deploy\n script: ./gradlew --build-cache assemble deploymyprojWeb --debug\n cache:\n   key: "$CI_COMMIT_REF_NAME"\n   policy: pull\n   paths:\n     - build\n     - .gradle\n
Run Code Online (Sandbox Code Playgroud)\n\n

另外,以下内容来自 build.gradle 文件:

\n\n
plugins {\n  id "com.moowork.node" version "1.2.0"\n  id \'com.adarshr.test-logger\' version \'1.5.0\'\n}\n\napply plugin: "java"\napply plugin: "groovy"\n\nrepositories {\n    jcenter()\n}\n\ndependencies {\n    testCompile(\n            \'junit:junit:4.12\',\n            \'org.codehaus.groovy:groovy-all:2.4.15\',\n            \'org.spockframework:spock-core:1.1-groovy-2.4\',\n            gradleTestKit()\n    )\n}\n\nnode {\n    version = \'10.11.0\'\n    download = true\n}\n\nnpm_install {\n    args = ["$project.projectDir/myproj", \'--prefix\',"$project.projectDir/myproj"]\n}\n\ntask deploymyprojWeb(type: NpmTask) {\n    args = [\'run\',\'deploy\', \'--prefix\',"$project.projectDir/myproj"]\n}\ndeploymyprojWeb.dependsOn npm_install\n\nwrapper {\n   gradleVersion = \'4.10.2\' //version required\n}\n
Run Code Online (Sandbox Code Playgroud)\n\n

节点分发文件夹的内容(/builds/myuser/myproj/.gradle/nodejs/node-v10.11.0-linux-x64/bin):

\n\n
/builds/myuser/myproj/.gradle/nodejs/node-v10.11.0-linux-x64/bin/npx\nExec: true\nWrite: true\nRead: true\n/builds/myuser/myproj/.gradle/nodejs/node-v10.11.0-linux-x64/bin/node\nExec: true\nWrite: true\nRead: true\n/builds/myuser/myproj/.gradle/nodejs/node-v10.11.0-linux-x64/bin/npm\nExec: true\nWrite: true\nRead: true\n
Run Code Online (Sandbox Code Playgroud)\n\n

另外,它位于 PATH 变量中:

\n\n
PATH=/builds/myuser/myproj/.gradle/nodejs/node-v10.11.0-linux-x64/bin:\n
Run Code Online (Sandbox Code Playgroud)\n

Mar*_* R. 4

gradle:alpine图像在使用节点时出现问题。我通过切换到图像解决了这个问题gradle:slim;它与节点和 gradle 节点插件配合得很好。