android - Jenkins 无法创建 Cordova 平台

标签 android cordova jenkins

我有一份 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/

相关文章:

android - 在 Android 模拟器上模拟 GPS 速度和航向

jenkins - Jenkins 中的 NullPointerException

jenkins - 万一开始新的工作,请停止 Jenkins (Jenkins)的工作

java - 不安全或未经检查的操作警告

java - Java同时访问同一个对象的不同成员

android - 如何在 Visual Studio 中创建用于开发 Xamarin UI 测试的 Apk 文件?

javascript - 在 node-sass@0.9.6 安装脚本 'node build.js' 失败

java - Activity 不加载布局

javascript - 如何在 HTML 脚本标签中导入 JavaScript 变量

jenkins - 如何在 Dockerfile 中为 LDAPS 的 Jenkins 添加 SSL 自签名证书?