Я получаю эту ошибку при попытке сборки 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>
чтобы установить разрешения, позволяющие только этому пользователю вносить изменения.