Jenkins无法创建Cordova平台

4

我有一个 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 命令,并且一切都正常工作。
此外,如果我通过 ssh 手动添加平台,然后在 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

你确定你的设备能够下载 Cordova 平台吗?它已经成功下载了吗? - Eric
是的,我可以登录到服务器并手动完成整个过程。只是当Jenkins尝试执行时,它就无法正常工作。 - d512
你试过sudo吗? - Raul Lapeira Herrero
你在哪里运行这个命令?在项目目录下,对吧? - stuck
1个回答

1
好的,我终于弄清楚了这个问题!在休息了几周后,我回来发现作业配置中有一个名为“共享工作区”的设置,并且我将其设置为()。我不知道这是什么意思,但它导致了将此项目的代码放入其中的效果。
/Users/me/Documents/Jenkins/sharedspace

文件夹似乎会影响 Cordova,因此我将“Shared Workspace”值设置为NONE,这样就可以将项目移动到了。

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

文件夹比我预期的更符合要求。之后,咦,一切正常了。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接