Jenkins 构建错误 文件未找到 / 权限被拒绝。

3

在学习了很多与Jenkins和Android有关的教程后,我仍然无法实现错误自由构建。

我按照这些教程进行操作:
http://www.vogella.com/articles/Jenkins/article.html https://wiki.jenkins-ci.org/display/JENKINS/Building+an+Android+app+and+test+project

唯一不同的是我的设置不是从存储库检出代码。我将代码导入到作业本身中,所以在我的“作业”目录中,我有一个包含2个项目(普通Android和Android单元测试项目)的工作区。

尝试构建时,我得到了这个日志:

-build-setup:
[getbuildtools] Using latest Build Tools: 18.0.1
     [echo] Resolving Build Target for MainActivity...
[gettarget] Project Target:   Android 4.0
[gettarget] API level:        14
     [echo] ----------
     [echo] Creating output directories if needed...
     [echo] ----------
     [echo] Resolving Dependencies for MainActivity...
[dependency] Library dependencies:
[dependency] No Libraries
[dependency] 
[dependency] ------------------
[dependency] API<=15: Adding annotations.jar to the classpath.
[dependency] WARNING: unable to write jarlist cache file /Users/Shared/Jenkins/Home/jobs/Jenkins4AndroidTest/workspace/XJenkins/bin/jarlist.cache
     [echo] ----------
     [echo] Building Libraries with 'debug'...
   [subant] No sub-builds to iterate on

-code-gen:
[mergemanifest] Found Deleted Target File
[mergemanifest] Merging AndroidManifest files into one.
[mergemanifest] Manifest merger disabled. Using project manifest only.'

导致这个错误的结果是:
/Users/Shared/android-sdks/tools/ant/build.xml:644: java.io.FileNotFoundException: /Users/Shared/Jenkins/Home/jobs/Jenkins4AndroidTest/workspace/XJenkins/bin/AndroidManifest.xml (Permission denied)
        at java.io.FileOutputStream.open(Native Method)

我觉得它忽略了我在Invoke Ant中使用的相对路径("./XJenkins/build.xml",目标:debug)

有人有任何提示、技巧或解决方案吗?那将非常棒!

编辑: 我之前遇到过不同的错误(我按照教程使用了更多的ant参数)。错误是这样的:/Users/Shared/android-sdks/tools/ant/build.xml:392: Problem: failed to create task or type checkenv ... 那会是一个更好的方法吗?


“无法编写jarlist缓存文件”表明您可能没有该文件,或者您没有权限。尝试将SDK移动到具有写入权限的不同位置。 - gunar
我在/shared目录下有SDK,并且对其拥有777权限,这不应该足够了吗? - Thkru
java.io.FileNotFoundException: /Users/Shared/Jenkins/Home/jobs/Jenkins4AndroidTest/workspace/XJenkins/bin/AndroidManifest.xml (Permission denied) 看起来很明显。 - gunar
你在哪里安装了 Jenkins? - gunar
文件未找到:该文件确实存在 - 权限被拒绝:权限为777,应该可以工作 - Jenkins已安装:"/Users/Shared/Jenkins/Home/" - 下一步尝试:配置一些用户 - Thkru
似乎这与我的问题有关:https://dev59.com/aXXYa4cB1Zd3GeqP9bih - Thkru
1个回答

1

在我看来,这似乎是源代码所有权的问题。

前往:/Users/Shared/Jenkins/Home/jobs/Jenkins4AndroidTest/workspace/XJenkins/bin/ 并执行:ls -rtl

您应该会看到类似以下内容:

-rw-r--r-- 1 jenkins jenkins AndroidManifest.xml 

如果没有,使用chown命令将其授权给Jenkins。我会亲自在所有目录上执行此操作。
sudo chown -R jenkins:jenkins /Users/Shared/Jenkins

这个命令会将Jenkins目录中的所有内容的所有权转移给Jenkins用户。
注意:这假定Jenkins作为Jenkins用户的服务启动。如果您在例如tomcat7上启动jenkins作为Web应用程序,则Jenkins用户将是tomcat7,并且您应授予tomcat7所有权。

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