Дженкинс мавен 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, поэтому разрешите всем переходить по ссылке, реальный файл читается для всех.. поэтому не уверен, почему это происходит. какие-нибудь советы?

4 ответа

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

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

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

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

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

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

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

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

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

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

Я создал папку в/optи установите разрешения, но этот путь должен быть настроен в вашем Jenkins:

      sudo mkdir /opt/deploy_jenkins
sudo chmod -R a+rw deploy_jenkins/
Другие вопросы по тегам