Docker Git插件中的Jenkins允许本地 checkout

sg3maiej  于 2023-11-17  发布在  Jenkins
关注(0)|答案(4)|浏览(179)

同样的问题也被问到了,但不是在Docker容器Jenkins: allow local checkout中的jenkins。
我让jenkins在一个docker容器中运行,并且能够毫无问题地执行管道作业。最近在一台新机器上安装容器后,我得到了:

  1. ERROR: Checkout of Git remote 'file:///usr/src/' aborted because it references a local directory, which may be insecure. You can allow local checkouts anyway by setting the system property 'hudson.plugins.git.GitSCM.ALLOW_LOCAL_CHECKOUT' to true.
  2. ERROR: Maximum checkout retry attempts reached, aborting
  3. Finished: FAILURE

字符串
我在init.d中尝试了这个脚本

  1. import jenkins.model.Jenkins
  2. import java.util.logging.LogManager
  3. /* Jenkins home directory */
  4. def jenkinsHome = Jenkins.instance.getRootDir().absolutePath
  5. def logger = LogManager.getLogManager().getLogger("")
  6. /* Replace the Key and value with the values you want to set.*/
  7. /* System.setProperty(key, value) */
  8. System.setProperty("hudson.plugins.git.GitSCM.ALLOW_LOCAL_CHECKOUT", "true")
  9. logger.info("Jenkins Startup Script: set GitSCM.ALLOW_LOCAL_CHECKOUT to true . Script location : ${jenkinsHome}/init.groovy.d ")


我在Docker容器中尝试了这个

  1. jenkins@3d5e0ebf919e:/$ java -D"hudson.plugins.git.GitSCM.ALLOW_LOCAL_CHECKOUT=true" -jar /usr/share/jenkins/jenkins.war
  2. Running from: /usr/share/jenkins/jenkins.warns.git.GitSCM.ALLOW_LOCAL_CHECKOUT=true" -jar /usr/share/jenkins/jenkins.war
  3. webroot: EnvVars.masterEnvVars.get("JENKINS_HOME")
  4. 2022-05-28 20:26:27.644+0000 [id=1] INFO org.eclipse.jetty.util.log.Log#initialized: Logging initialized @758ms to org.eclipse.jetty.util.log.JavaUtilLog
  5. 2022-05-28 20:26:27.744+0000 [id=1] INFO winstone.Logger#logInternal: Beginning extraction from war file
  6. 2022-05-28 20:26:27.792+0000 [id=1] WARNING o.e.j.s.handler.ContextHandler#setContextPath: Empty contextPath
  7. 2022-05-28 20:26:27.876+0000 [id=1] INFO org.eclipse.jetty.server.Server#doStart: jetty-9.4.43.v20210629; built: 2021-06-30T11:07:22.254Z; git: 526006ecfa3af7f1a27ef3a288e2bef7ea9dd7e8; jvm 11.0.15+10
  8. 2022-05-28 20:26:28.162+0000 [id=1] INFO o.e.j.w.StandardDescriptorProcessor#visitServlet: NO JSP Support for /, did not find org.eclipse.jetty.jsp.JettyJspServlet
  9. 2022-05-28 20:26:28.204+0000 [id=1] INFO o.e.j.s.s.DefaultSessionIdManager#doStart: DefaultSessionIdManager workerName=node0
  10. 2022-05-28 20:26:28.204+0000 [id=1] INFO o.e.j.s.s.DefaultSessionIdManager#doStart: No SessionScavenger set, using defaults
  11. 2022-05-28 20:26:28.205+0000 [id=1] INFO o.e.j.server.session.HouseKeeper#startScavenging: node0 Scavenging every 600000ms
  12. 2022-05-28 20:26:28.694+0000 [id=1] INFO hudson.WebAppMain#contextInitialized: Jenkins home directory: /var/jenkins_home found at: EnvVars.masterEnvVars.get("JENKINS_HOME")
  13. 2022-05-28 20:26:28.869+0000 [id=1] INFO o.e.j.s.handler.ContextHandler#doStart: Started w.@36c54a56{Jenkins v2.332.3,/,file:///var/jenkins_home/war/,AVAILABLE}{/var/jenkins_home/war}
  14. 2022-05-28 20:26:28.892+0000 [id=1] INFO o.e.j.server.AbstractConnector#doStop: Stopped ServerConnector@206a70ef{HTTP/1.1, (http/1.1)}{0.0.0.0:8080}
  15. 2022-05-28 20:26:28.893+0000 [id=1] INFO o.e.j.server.session.HouseKeeper#stopScavenging: node0 Stopped scavenging
  16. 2022-05-28 20:26:28.901+0000 [id=1] INFO hudson.WebAppMain#contextDestroyed: Shutting down a Jenkins instance that was still starting up
  17. java.lang.Throwable: reason
  18. at hudson.WebAppMain.contextDestroyed(WebAppMain.java:386)
  19. at org.eclipse.jetty.server.handler.ContextHandler.callContextDestroyed(ContextHandler.java:1074)
  20. at org.eclipse.jetty.servlet.ServletContextHandler.callContextDestroyed(ServletContextHandler.java:584)
  21. at org.eclipse.jetty.server.handler.ContextHandler.contextDestroyed(ContextHandler.java:1037)
  22. at org.eclipse.jetty.servlet.ServletHandler.doStop(ServletHandler.java:319)
  23. at org.eclipse.jetty.util.component.AbstractLifeCycle.stop(AbstractLifeCycle.java:94)
  24. at org.eclipse.jetty.util.component.ContainerLifeCycle.stop(ContainerLifeCycle.java:180)
  25. at org.eclipse.jetty.util.component.ContainerLifeCycle.doStop(ContainerLifeCycle.java:201)
  26. at org.eclipse.jetty.server.handler.AbstractHandler.doStop(AbstractHandler.java:108)
  27. at org.eclipse.jetty.security.SecurityHandler.doStop(SecurityHandler.java:437)
  28. at org.eclipse.jetty.security.ConstraintSecurityHandler.doStop(ConstraintSecurityHandler.java:423)
  29. at org.eclipse.jetty.util.component.AbstractLifeCycle.stop(AbstractLifeCycle.java:94)
  30. at org.eclipse.jetty.util.component.ContainerLifeCycle.stop(ContainerLifeCycle.java:180)
  31. at org.eclipse.jetty.util.component.ContainerLifeCycle.doStop(ContainerLifeCycle.java:201)
  32. at org.eclipse.jetty.server.handler.AbstractHandler.doStop(AbstractHandler.java:108)
  33. at org.eclipse.jetty.server.session.SessionHandler.doStop(SessionHandler.java:520)
  34. at org.eclipse.jetty.util.component.AbstractLifeCycle.stop(AbstractLifeCycle.java:94)
  35. at org.eclipse.jetty.util.component.ContainerLifeCycle.stop(ContainerLifeCycle.java:180)
  36. at org.eclipse.jetty.util.component.ContainerLifeCycle.doStop(ContainerLifeCycle.java:201)
  37. at org.eclipse.jetty.server.handler.AbstractHandler.doStop(AbstractHandler.java:108)
  38. at org.eclipse.jetty.server.handler.ContextHandler.stopContext(ContextHandler.java:1060)
  39. at org.eclipse.jetty.servlet.ServletContextHandler.stopContext(ServletContextHandler.java:386)
  40. at org.eclipse.jetty.webapp.WebAppContext.stopWebapp(WebAppContext.java:1454)
  41. at org.eclipse.jetty.webapp.WebAppContext.stopContext(WebAppContext.java:1420)
  42. at org.eclipse.jetty.server.handler.ContextHandler.doStop(ContextHandler.java:1114)
  43. at org.eclipse.jetty.servlet.ServletContextHandler.doStop(ServletContextHandler.java:297)
  44. at org.eclipse.jetty.webapp.WebAppContext.doStop(WebAppContext.java:547)
  45. at org.eclipse.jetty.util.component.AbstractLifeCycle.stop(AbstractLifeCycle.java:94)
  46. at org.eclipse.jetty.util.component.ContainerLifeCycle.stop(ContainerLifeCycle.java:180)
  47. at org.eclipse.jetty.util.component.ContainerLifeCycle.doStop(ContainerLifeCycle.java:201)
  48. at org.eclipse.jetty.server.handler.AbstractHandler.doStop(AbstractHandler.java:108)
  49. at org.eclipse.jetty.server.Server.doStop(Server.java:470)
  50. at org.eclipse.jetty.util.component.AbstractLifeCycle.stop(AbstractLifeCycle.java:94)
  51. at winstone.Launcher.shutdown(Launcher.java:318)
  52. at winstone.Launcher.<init>(Launcher.java:205)
  53. at winstone.Launcher.main(Launcher.java:369)
  54. at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
  55. at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
  56. at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
  57. at java.base/java.lang.reflect.Method.invoke(Method.java:566)
  58. at Main._main(Main.java:304)
  59. at Main.main(Main.java:108)
  60. 2022-05-28 20:26:28.905+0000 [id=1] INFO o.e.j.s.handler.ContextHandler#doStop: Stopped w.@36c54a56{Jenkins v2.332.3,/,null,STOPPED}{/var/jenkins_home/war}
  61. Exception in thread "Jenkins initialization thread" java.lang.NoClassDefFoundError: hudson/util/HudsonFailedToLoad
  62. at hudson.WebAppMain$3.run(WebAppMain.java:261)
  63. Caused by: java.lang.ClassNotFoundException: hudson.util.HudsonFailedToLoad
  64. at java.base/java.net.URLClassLoader.findClass(URLClassLoader.java:476)
  65. at java.base/java.lang.ClassLoader.loadClass(ClassLoader.java:589)
  66. at java.base/java.lang.ClassLoader.loadClass(ClassLoader.java:522)
  67. at org.eclipse.jetty.webapp.WebAppClassLoader.loadClass(WebAppClassLoader.java:538)
  68. at java.base/java.lang.ClassLoader.loadClass(ClassLoader.java:522)
  69. ... 1 more
  70. 2022-05-28 20:26:28.908+0000 [id=1] INFO winstone.Logger#logInternal: Jetty shutdown successfully
  71. java.io.IOException: Failed to start Jetty
  72. at winstone.Launcher.<init>(Launcher.java:194)
  73. at winstone.Launcher.main(Launcher.java:369)
  74. at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
  75. at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
  76. at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
  77. at java.base/java.lang.reflect.Method.invoke(Method.java:566)
  78. at Main._main(Main.java:304)
  79. at Main.main(Main.java:108)
  80. Caused by: java.io.IOException: Failed to bind to 0.0.0.0/0.0.0.0:8080
  81. at org.eclipse.jetty.server.ServerConnector.openAcceptChannel(ServerConnector.java:349)
  82. at org.eclipse.jetty.server.ServerConnector.open(ServerConnector.java:310)
  83. at org.eclipse.jetty.server.AbstractNetworkConnector.doStart(AbstractNetworkConnector.java:80)
  84. at org.eclipse.jetty.server.ServerConnector.doStart(ServerConnector.java:234)
  85. at org.eclipse.jetty.util.component.AbstractLifeCycle.start(AbstractLifeCycle.java:73)
  86. at org.eclipse.jetty.server.Server.doStart(Server.java:401)
  87. at org.eclipse.jetty.util.component.AbstractLifeCycle.start(AbstractLifeCycle.java:73)
  88. at winstone.Launcher.<init>(Launcher.java:192)
  89. ... 7 more
  90. Caused by: java.net.BindException: Address already in use
  91. at java.base/sun.nio.ch.Net.bind0(Native Method)
  92. at java.base/sun.nio.ch.Net.bind(Net.java:459)
  93. at java.base/sun.nio.ch.Net.bind(Net.java:448)
  94. at java.base/sun.nio.ch.ServerSocketChannelImpl.bind(ServerSocketChannelImpl.java:227)
  95. at java.base/sun.nio.ch.ServerSocketAdaptor.bind(ServerSocketAdaptor.java:80)
  96. at org.eclipse.jetty.server.ServerConnector.openAcceptChannel(ServerConnector.java:344)
  97. ... 14 more
  98. 2022-05-28 20:26:28.909+0000 [id=1] SEVERE winstone.Logger#logInternal: Container startup failed
  99. java.net.BindException: Address already in use
  100. at java.base/sun.nio.ch.Net.bind0(Native Method)
  101. at java.base/sun.nio.ch.Net.bind(Net.java:459)
  102. at java.base/sun.nio.ch.Net.bind(Net.java:448)
  103. at java.base/sun.nio.ch.ServerSocketChannelImpl.bind(ServerSocketChannelImpl.java:227)
  104. at java.base/sun.nio.ch.ServerSocketAdaptor.bind(ServerSocketAdaptor.java:80)
  105. at org.eclipse.jetty.server.ServerConnector.openAcceptChannel(ServerConnector.java:344)
  106. Caused: java.io.IOException: Failed to bind to 0.0.0.0/0.0.0.0:8080
  107. at org.eclipse.jetty.server.ServerConnector.openAcceptChannel(ServerConnector.java:349)
  108. at org.eclipse.jetty.server.ServerConnector.open(ServerConnector.java:310)
  109. at org.eclipse.jetty.server.AbstractNetworkConnector.doStart(AbstractNetworkConnector.java:80)
  110. at org.eclipse.jetty.server.ServerConnector.doStart(ServerConnector.java:234)
  111. at org.eclipse.jetty.util.component.AbstractLifeCycle.start(AbstractLifeCycle.java:73)
  112. at org.eclipse.jetty.server.Server.doStart(Server.java:401)
  113. at org.eclipse.jetty.util.component.AbstractLifeCycle.start(AbstractLifeCycle.java:73)
  114. at winstone.Launcher.<init>(Launcher.java:192)
  115. Caused: java.io.IOException: Failed to start Jetty
  116. at winstone.Launcher.<init>(Launcher.java:194)
  117. at winstone.Launcher.main(Launcher.java:369)
  118. at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
  119. at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
  120. at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
  121. at java.base/java.lang.reflect.Method.invoke(Method.java:566)
  122. at Main._main(Main.java:304)
  123. at Main.main(Main.java:108)


在jenkins系统属性中,我看到hudson.plugins.git.GitSCM.ALLOW_LOCAL_CHECKOUT true
问题仍然存在运行Jenkins 2.332.3
Dockerfile:

  1. FROM jenkins/jenkins:lts
  2. ARG user
  3. ARG password
  4. ARG git_password
  5. ARG branch
  6. USER jenkins
  7. RUN /usr/local/bin/install-plugins.sh \
  8. cloudbees-folder \
  9. antisamy-markup-formatter \
  10. build-timeout \
  11. credentials-binding \
  12. timestamper \
  13. ws-cleanup \
  14. ant \
  15. gradle \
  16. workflow-aggregator \
  17. github-organization-folder \
  18. pipeline-stage-view \
  19. git \
  20. subversion \
  21. ssh-slaves \
  22. matrix-auth \
  23. pam-auth \
  24. ldap \
  25. email-ext \
  26. mailer \
  27. ssh \
  28. build-user-vars-plugin \
  29. yet-another-build-visualizer \
  30. rebuild
  31. ENV JENKINS_USER ${user}
  32. ENV JENKINS_PASS ${password}
  33. ENV GIT_PASS ${git_password}
  34. ENV CURRENT_BRANCH ${branch}
  35. ENV JAVA_OPTS -Dhudson,plugins.git.GitSCM.ALLOW_LOCAL_CHECKOUT=true
  36. ENV JAVA_OPTS -Djenkins.install.runSetupWizard=false
  37. COPY init.groovy.d/dev/*.groovy /usr/share/jenkins/ref/init.groovy.d/
  38. VOLUME /var/jenkins_home


问题仍然存在:有什么办法可以解决这个问题吗?有什么办法可以让我的git目录不是“本地目录”吗?

zazmityj

zazmityj1#

我也是偶然发现这个问题的,根据这个答案,你只需要在启动容器时添加env变量。

  1. docker run ... --env JAVA_OPTS="-Dhudson.plugins.git.GitSCM.ALLOW_LOCAL_CHECKOUT=true"

字符串

rpppsulh

rpppsulh2#

对我来说,答案在init.groovy.d/dev/jobs.groovy文件中
在这一行之后:
第一个月
我加了这一行
scm.ALLOW_LOCAL_CHECKOUT=true

kninwzqo

kninwzqo3#

你的ENV JAVA_OPTs互相重叠了。试着把它们放在同一行上。
第一个月
我这么说的原因是我把下面的代码添加到了我的dockerfile中,它工作得很好。
ENV JAVA_OPTS -Dhudson,plugins.git.GitSCM.ALLOW_LOCAL_CHECKOUT=true

xwbd5t1u

xwbd5t1u4#

如果你使用的是docker-compose,那么你需要添加system属性,如下所示-

  1. environment:
  2. - "JAVA_OPTS=-Dhudson.plugins.git.GitSCM.ALLOW_LOCAL_CHECKOUT=true"

字符串

相关问题