Дженкинс мавен 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/