Назад | Перейти на главную страницу

Jenkins maven java 7 проблема с разрешением

Я получаю эту ошибку при попытке сборки Maven в Jenkins,

Building in workspace /var/lib/jenkins/workspace/xxxxprojectnamedeletedforprivacyxxxx
java.nio.file.AccessDeniedException: /usr/share/maven/lib/maven-settings-3.x.jar
    at sun.nio.fs.UnixException.translateToIOException(UnixException.java:84)
    at sun.nio.fs.UnixException.rethrowAsIOException(UnixException.java:102)
    at sun.nio.fs.UnixException.rethrowAsIOException(UnixException.java:107)
    at sun.nio.fs.UnixFileSystemProvider.implDelete(UnixFileSystemProvider.java:244)
    at sun.nio.fs.AbstractFileSystemProvider.delete(AbstractFileSystemProvider.java:103)
    at java.nio.file.Files.delete(Files.java:1079)
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
    at java.lang.reflect.Method.invoke(Method.java:606)
    at hudson.Util.deleteFile(Util.java:247)
    at hudson.FilePath.deleteRecursive(FilePath.java:1202)
    at hudson.FilePath.deleteContentsRecursive(FilePath.java:1211)
    at hudson.FilePath.deleteRecursive(FilePath.java:1193)
    at hudson.FilePath.deleteContentsRecursive(FilePath.java:1211)
    at hudson.FilePath.deleteRecursive(FilePath.java:1193)
    at hudson.FilePath.access$1000(FilePath.java:191)
    at hudson.FilePath$14.invoke(FilePath.java:1172)
    at hudson.FilePath$14.invoke(FilePath.java:1169)
    at hudson.FilePath.act(FilePath.java:989)
    at hudson.FilePath.act(FilePath.java:967)
    at hudson.FilePath.deleteRecursive(FilePath.java:1169)
    at hudson.tools.JDKInstaller.performInstallation(JDKInstaller.java:130)
    at hudson.tools.InstallerTranslator.getToolHome(InstallerTranslator.java:68)
    at hudson.tools.ToolLocationNodeProperty.getToolHome(ToolLocationNodeProperty.java:107)
    at hudson.tools.ToolInstallation.translateFor(ToolInstallation.java:205)
    at hudson.model.JDK.forNode(JDK.java:130)
    at hudson.model.AbstractProject.getEnvironment(AbstractProject.java:351)
    at hudson.model.Run.getEnvironment(Run.java:2219)
    at hudson.model.AbstractBuild.getEnvironment(AbstractBuild.java:917)
    at hudson.maven.AbstractMavenBuild.getEnvironment(AbstractMavenBuild.java:56)
    at hudson.maven.MavenModuleSetBuild.getEnvironment(MavenModuleSetBuild.java:167)
    at hudson.plugins.git.GitSCM.checkout(GitSCM.java:977)
    at hudson.scm.SCM.checkout(SCM.java:484)
    at hudson.model.AbstractProject.checkout(AbstractProject.java:1270)
    at hudson.model.AbstractBuild$AbstractBuildExecution.defaultCheckout(AbstractBuild.java:609)
    at jenkins.scm.SCMCheckoutStrategy.checkout(SCMCheckoutStrategy.java:86)
    at hudson.model.AbstractBuild$AbstractBuildExecution.run(AbstractBuild.java:531)
    at hudson.model.Run.execute(Run.java:1718)
    at hudson.maven.MavenModuleSetBuild.run(MavenModuleSetBuild.java:531)
    at hudson.model.ResourceController.execute(ResourceController.java:89)
    at hudson.model.Executor.run(Executor.java:240)
Finished: FAILURE

Я следил по ссылкам, и они принадлежат root, но с разрешениями 777, поэтому разрешите всем переходить по ссылке, настоящий файл читается для всех ... поэтому не уверен, почему это происходит. какие-нибудь советы?

Вы запускаете Jenkins вручную или через службу? Не рекомендуется запускать его вручную через java -jar /usr/share/jenkins/jenkins.war но с сервис jenkins start | stop. Когда вы запускаете вручную, он меняет владельца на пользователя, который запустил jenkins.war через java, служба запускается под пользователем: group jenkins.

Путь по умолчанию для службы jenkins (Debian / Ubuntu) должен быть / var / lib / jenkins / jobs / ProjectName / workspace, а все внутри / var / lib / jenkins / должно принадлежать пользователю jenkins и группе jenkins (chown -R дженкинс: дженкинс / var / lib / jenkins /)

Также проверьте, правильно ли вы установили JDK и настроили в своем проекте Jenkins.

Если мне нужно было догадаться, похоже, что maven был установлен, скорее всего, root, и, следовательно, принадлежал root.

Если jenkins был установлен через какой-либо менеджер пакетов, скорее всего, он работает как пользователь jenkins, у которого не будет доступа к этой установке maven.

Просто подумайте - почему бы не настроить jenkins для установки / управления версией maven, которую вы хотите использовать?

Jenkins поместит версию maven, которую вы ищете, в место (на основе пути / tools), к которому у нее будет доступ.

Похоже, вы пытаетесь удалить файл как часть своей сборки:

at java.nio.file.Files.delete(Files.java:1079)

Вам нужно будет соответствующим образом настроить свои разрешения, чтобы разрешить доступ для записи, а также для родительского пути и файла (ов), о котором идет речь. Лично я бы рекомендовал вам установить владельцем того же пользователя, от имени которого работает Jenkins, и использовать chmod -R u+w,go-w <directory> чтобы установить разрешения, позволяющие только этому пользователю вносить изменения.