java - 无法使用 gradle 节点插件运行节点
问题描述
我们正在使用 gradle 节点插件从 gradle 构建我们的节点项目。我们选择的 gitlab ci 模板使用了 gradle:alpine docker 镜像。在我们的工作中,我们运行 gradle 包装器。构建失败并显示“env: can't execute 'node': No such file or directory”。它在我们的 linux 开发盒上构建良好。
这是堆栈跟踪:
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
at net.rubygrapefruit.platform.internal.DefaultProcessLauncher.start(DefaultProcessLauncher.java:25)
... 6 more
Caused by: java.io.IOException: error=2, No such file or directory
以下是来自 gitlab-ci.yml 的相关内容:
image: gradle:alpine
variables:
GRADLE_OPTS: "-Dorg.gradle.daemon=false"
GIT_STRATEGY: clone
before_script:
- export GRADLE_USER_HOME=`pwd`/.gradle
- export PATH=`pwd`/.gradle/nodejs/node-v10.11.0-linux-x64/bin:$PATH
deploy-ui:
stage: deploy
script: ./gradlew --build-cache assemble deploymyprojWeb --debug
cache:
key: "$CI_COMMIT_REF_NAME"
policy: pull
paths:
- build
- .gradle
此外,以下内容来自 build.gradle 文件:
plugins {
id "com.moowork.node" version "1.2.0"
id 'com.adarshr.test-logger' version '1.5.0'
}
apply plugin: "java"
apply plugin: "groovy"
repositories {
jcenter()
}
dependencies {
testCompile(
'junit:junit:4.12',
'org.codehaus.groovy:groovy-all:2.4.15',
'org.spockframework:spock-core:1.1-groovy-2.4',
gradleTestKit()
)
}
node {
version = '10.11.0'
download = true
}
npm_install {
args = ["$project.projectDir/myproj", '--prefix',"$project.projectDir/myproj"]
}
task deploymyprojWeb(type: NpmTask) {
args = ['run','deploy', '--prefix',"$project.projectDir/myproj"]
}
deploymyprojWeb.dependsOn npm_install
wrapper {
gradleVersion = '4.10.2' //version required
}
节点分发文件夹的内容(/builds/myuser/myproj/.gradle/nodejs/node-v10.11.0-linux-x64/bin):
/builds/myuser/myproj/.gradle/nodejs/node-v10.11.0-linux-x64/bin/npx
Exec: true
Write: true
Read: true
/builds/myuser/myproj/.gradle/nodejs/node-v10.11.0-linux-x64/bin/node
Exec: true
Write: true
Read: true
/builds/myuser/myproj/.gradle/nodejs/node-v10.11.0-linux-x64/bin/npm
Exec: true
Write: true
Read: true
此外,它在 PATH 变量中:
PATH=/builds/myuser/myproj/.gradle/nodejs/node-v10.11.0-linux-x64/bin:
解决方案
该gradle:alpine
图像在使用节点时出现问题。我通过切换到gradle:slim
图像解决了这个问题;它适用于节点和 gradle 节点插件。
推荐阅读
- gunicorn - 像服务一样运行 gunicorn
- grails - Grails createCriteria 语法错误
- sap - UDM_DISPUTE:模板第一次没有加载
- angular - 动画不保持最终状态,切换回原始状态
- amazon-web-services - 从 DynamoDB 中的嵌套结构创建索引
- c# - WPF - WinForms ReportViewer 未在 RadWindow / Telerik 容器上显示 RDLC
- ruby-on-rails - ruby on rails - 按类别中的计数产品列排序
- sql - 如何在 postgres 数据库中仅获取具有最大 version_id 的行而无需昂贵的子查询?
- c# - 如何通过保留 IGroupings 过滤 IGrouping 的 IEnumerable 的元素
- php - 我有两个表第一个表有一些数据另一个表第二个有所有数据现在加入查询空值显示在 json 响应中