Jenkins无法创建 cordova 平台

dy2hfwbg  于 2022-11-15  发布在  Jenkins
关注(0)|答案(1)|浏览(173)

我有一个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
e1xvtsh3

e1xvtsh31#

好了,我终于弄明白这个问题了!在休息了几周之后,我注意到在作业配置中有一个名为“共享工作区”的设置,我把它设置为()。我不知道这是什么意思,但它的效果是把这个项目的代码放在

/Users/me/Documents/Jenkins/sharedspace

文件夹,这显然是cordova的问题。一旦我将共享工作区的值设置为NONE,它就将项目移动到

/Users/trident/Documents/Jenkins/workspace/my-app

文件夹,这是更多的我所期望的。之后,你看,一切工作。

相关问题