我有一份 Jenkins 的工作,应该创建一个 Cordova 应用程序,但它失败了一些我无法确定的原因。 Jenkins 的工作就是这样做的:
cordova platform add android
cordova prepare android
cordova build android --debug --verbose
第一个命令 ( cordova platform add android
) 导致以下错误:ENOENT: no such file or directory, mkdir 'platforms/android/app/src/main'
Error: ENOENT: no such file or directory, mkdir 'platforms/android/app/src/main'
at Object.mkdirSync (fs.js:738:3)
at Object.module.exports.makeDirSync (/Users/me/Documents/Jenkins/sharedspace/apps/my-app/cordova/node_modules/fs-extra/lib/mkdirs/make-dir.js:23:13)
at /Users/me/Documents/Jenkins/sharedspace/apps/my-app/cordova/node_modules/cordova-android/lib/create.js:231:16
+ /Users/me/.nvm/versions/node/v16.13.2/bin/cordova prepare android
(node:23901) ExperimentalWarning: The fs.promises API is experimental
Discovered platform "android". Adding it to the project
EEXIST: file already exists, mkdir '/Users/me/Documents/Jenkins/sharedspace/apps/my-app/cordova/platforms'
+ /Users/me/.nvm/versions/node/v16.13.2/bin/cordova build android --debug --verbose
(node:23902) ExperimentalWarning: The fs.promises API is experimental
No platforms added to this project. Please use `cordova platform add <platform>`.
CordovaError: No platforms added to this project. Please use `cordova platform add <platform>`.
at Object.preProcessOptions (/Users/me/.nvm/versions/node/v16.13.2/lib/node_modules/cordova/node_modules/cordova-lib/src/cordova/util.js:275:15)
at /Users/me/.nvm/versions/node/v16.13.2/lib/node_modules/cordova/node_modules/cordova-lib/src/cordova/build.js:29:31
at process._tickCallback (internal/process/next_tick.js:68:7)
at Function.Module.runMain (internal/modules/cjs/loader.js:745:11)
at startup (internal/bootstrap/node.js:236:19)
at bootstrapNodeJSCore (internal/bootstrap/node.js:560:3)
Build step 'Execute shell' marked build as failure
当我查看 platforms
内部时 Jenkins 盒子上的目录是空的。它能够创建 platforms
文件夹本身,只是下面没有其他内容。据我所知,这似乎不是许可问题。如果我以 jenkins 使用的同一用户的身份 ssh 进入该框,我可以正常运行 cordova 命令并且一切正常。此外,如果我通过 ssh 手动添加平台,然后让 jenkins 在
android
之后接管文件夹已经存在,工作正常。所以我猜由于某种原因它无法添加android项目。如果有帮助,这就是
cordova requirements
给出:cordova requirements
Requirements check results for android:
Java JDK: installed 1.8.0
Android SDK: installed true
Android target: installed android-30,android-29,android-28
Gradle: installed /usr/local/Cellar/gradle/7.3.3/bin/gradle
最佳答案
好吧,我终于想通了!在休息了几个星期后,我注意到作业配置中有一个名为“共享工作区”的设置,我将其设置为值 ()
.我不知道那是什么意思,但它的效果是把这个项目的代码放在
/Users/me/Documents/Jenkins/sharedspace
文件夹,这显然导致了 Cordova 的问题。一旦我将共享工作区值设置为 NONE
,它将项目移至/Users/trident/Documents/Jenkins/workspace/my-app
文件夹,这是我所期望的。在那之后,你瞧,一切正常。
关于android - Jenkins 无法创建 Cordova 平台,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/70988189/