我有一个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
当我查看jenkins盒子上的platforms
目录时,它是空的。它能够自己创建platforms
文件夹,只是下面没有其他东西。据我所知,这似乎不是一个权限问题。如果我以jenkins使用的同一个用户的身份ssh进入盒子,我可以很好地运行cordova命令,一切都正常。
此外,如果我通过ssing手动添加平台,然后在android
文件夹已经存在后让jenkins接管,工作就可以正常工作了,所以我猜由于某种原因它不能添加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
1条答案
按热度按时间e1xvtsh31#
好了,我终于弄明白这个问题了!在休息了几周之后,我注意到在作业配置中有一个名为“共享工作区”的设置,我把它设置为
()
。我不知道这是什么意思,但它的效果是把这个项目的代码放在文件夹,这显然是cordova的问题。一旦我将共享工作区的值设置为
NONE
,它就将项目移动到文件夹,这是更多的我所期望的。之后,你看,一切工作。