odavid / my-bloody-jenkins Goto Github PK
View Code? Open in Web Editor NEWSelf Configured Jenkins Docker image based on Jenkins-LTS
License: MIT License
Self Configured Jenkins Docker image based on Jenkins-LTS
License: MIT License
We have a few plugins for the tools section e.g. custom-tools-plugin, nodejs, sbt, xcode. These are added to the tools section in the UI once installed. All these look outside the support, is there a generic way of using installing these tools?
On the latest LTS image (2.190.1) "durable-task" plugin was upgraded to 1.31.
This plugin is breaking the use of "docker.inside" (https://issues.jenkins-ci.org/browse/JENKINS-59903).
According to the issue reverting to 1.30 fixed the problem.
Currently it is only defined in cloud level. Let the user control it within template
First of all great Container Image, I like your groovy based approach!!
As a Kubernetes user I natively mount in ssh keys from secrets into the jenkins container. Thus I reference my ssh key as a file reference on the master. Currently the CredsConfig does not support this kind of settings e.g.
credentials:
my-ssh-key:
type: sshkey
description: "SSH key"
username: foo
fileOnMaster: /.ssh/id_rsa <--- not supported yet
Here is a code snippet which I use for my custom build image. It would be great if you adapt this in your base image so I can drop my custom images.
def sshKeyCred(config) {
def key
if (config.fileOnMaster) {
key = new BasicSSHUserPrivateKey.FileOnMasterPrivateKeySource(config.fileOnMaster)
} else if (config.privatekey) {
key = new BasicSSHUserPrivateKey.DirectEntryPrivateKeySource(new String(config.base64?.decodeBase64(), 'UTF-8'))
}
config.with{
return new BasicSSHUserPrivateKey(CredentialsScope.GLOBAL,
id,
username,
key,
passphrase,
description
)
}
}
The config.yml should support ${ENV_VAR}
values that will be replaced during init and update.
Also we need to define regex pattern for variables that should be shown in the System Info page
Support for https://github.com/jenkinsci/configuration-as-code-groovy-plugin would be excellent.
Instead of JENKINS_ENV_CONFIG_YML_S3_URL, use JENKINS_ENV_CONFIG_YML_URL so the mechanism of watching configuration changes cab be applied also for http/https endpoints as well as file:// endpoint so the source can be a volume such as k8s secrets volume of k8s configMaps.
Currently it is defined as environment variable. Trying to be consistent
I wanted this to become an ENV var which I can basically add to kubernetes via secret ...
Hipchat reached EOL
Although not optimal, will give the ability to use the image as is without building a new Docker image.
Added environment variable to configure with protocols are enabled
When it happens, tools such as JDK and Maven cannot be downloaded
Custom plugins to be installed after Jenkins is up might be useful
@odavid , the remove_master_envvars statement is not working. I tried two test cases: including it as a root element (as shown in the readme) and including it under the security element (as depicted in https://github.com/odavid/my-bloody-jenkins/blob/master/examples/docker/config.yml#L5).
Is there something I'm missing here? Also, do you have any other suggestions for keeping the environment variables, but not having them show up on the Configure System page in the UI? Coming from a security infrastructure guy, not a seasoned Jenkins pro like yourself.
Thanks in advance for your help. I've included the config and stack traces for both cases below.
security:
remotingCLI:
enabled: false
remove_master_envvars:
- '.*PASSWORD.*'
- 'KINNAIRD_TEST_ENVVAR'
Stack trace
io.jenkins.plugins.casc.ConfiguratorException: Invalid configuration elements for type class jenkins.model.GlobalConfigurationCategory$Security : remove_master_envvars.
Available attributes : apiToken, crumb, downloadSettings, envInjectPluginConfiguration, globalJobDslSecurityConfiguration, masterKillSwitchConfiguration, queueItemAuthenticator, remotingCLI, sSHD, updateSiteWarningsConfiguration
at io.jenkins.plugins.casc.BaseConfigurator.handleUnknown(BaseConfigurator.java:374)
at io.jenkins.plugins.casc.BaseConfigurator.configure(BaseConfigurator.java:363)
at io.jenkins.plugins.casc.BaseConfigurator.check(BaseConfigurator.java:284)
at io.jenkins.plugins.casc.ConfigurationAsCode.lambda$checkWith$8(ConfigurationAsCode.java:657)
at io.jenkins.plugins.casc.ConfigurationAsCode.invokeWith(ConfigurationAsCode.java:620)
Caused: io.jenkins.plugins.casc.ConfiguratorException: security: error configuring 'security' with class io.jenkins.plugins.casc.impl.configurators.GlobalConfigurationCategoryConfigurator configurator
at io.jenkins.plugins.casc.ConfigurationAsCode.invokeWith(ConfigurationAsCode.java:626)
at io.jenkins.plugins.casc.ConfigurationAsCode.checkWith(ConfigurationAsCode.java:657)
at io.jenkins.plugins.casc.ConfigurationAsCode.configureWith(ConfigurationAsCode.java:642)
at io.jenkins.plugins.casc.ConfigurationAsCode.configureWith(ConfigurationAsCode.java:545)
at io.jenkins.plugins.casc.ConfigurationAsCode.configure(ConfigurationAsCode.java:275)
at io.jenkins.plugins.casc.ConfigurationAsCode.doReload(ConfigurationAsCode.java:154)
at java.lang.invoke.MethodHandle.invokeWithArguments(MethodHandle.java:627)
at org.kohsuke.stapler.Function$MethodFunction.invoke(Function.java:396)
at org.kohsuke.stapler.Function$InstanceFunction.invoke(Function.java:408)
at org.kohsuke.stapler.interceptor.RequirePOST$Processor.invoke(RequirePOST.java:77)
at org.kohsuke.stapler.PreInvokeInterceptedFunction.invoke(PreInvokeInterceptedFunction.java:26)
at org.kohsuke.stapler.Function.bindAndInvoke(Function.java:212)
at org.kohsuke.stapler.Function.bindAndInvokeAndServeResponse(Function.java:145)
at org.kohsuke.stapler.MetaClass$11.doDispatch(MetaClass.java:537)
at org.kohsuke.stapler.NameBasedDispatcher.dispatch(NameBasedDispatcher.java:58)
at org.kohsuke.stapler.Stapler.tryInvoke(Stapler.java:739)
at org.kohsuke.stapler.Stapler.invoke(Stapler.java:870)
at org.kohsuke.stapler.MetaClass$9.dispatch(MetaClass.java:458)
at org.kohsuke.stapler.Stapler.tryInvoke(Stapler.java:739)
at org.kohsuke.stapler.Stapler.invoke(Stapler.java:870)
at org.kohsuke.stapler.Stapler.invoke(Stapler.java:668)
at org.kohsuke.stapler.Stapler.service(Stapler.java:238)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:790)
at org.eclipse.jetty.servlet.ServletHolder.handle(ServletHolder.java:865)
at org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1655)
at hudson.util.PluginServletFilter$1.doFilter(PluginServletFilter.java:154)
at org.jenkinsci.plugins.ssegateway.Endpoint$SSEListenChannelFilter.doFilter(Endpoint.java:243)
at hudson.util.PluginServletFilter$1.doFilter(PluginServletFilter.java:151)
at io.jenkins.blueocean.ResourceCacheControl.doFilter(ResourceCacheControl.java:134)
at hudson.util.PluginServletFilter$1.doFilter(PluginServletFilter.java:151)
at io.jenkins.blueocean.auth.jwt.impl.JwtAuthenticationFilter.doFilter(JwtAuthenticationFilter.java:61)
at hudson.util.PluginServletFilter$1.doFilter(PluginServletFilter.java:151)
at jenkins.metrics.impl.MetricsFilter.doFilter(MetricsFilter.java:125)
at hudson.util.PluginServletFilter$1.doFilter(PluginServletFilter.java:151)
at jenkins.telemetry.impl.UserLanguages$AcceptLanguageFilter.doFilter(UserLanguages.java:128)
at hudson.util.PluginServletFilter$1.doFilter(PluginServletFilter.java:151)
at hudson.util.PluginServletFilter.doFilter(PluginServletFilter.java:157)
at org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1642)
at hudson.security.csrf.CrumbFilter.doFilter(CrumbFilter.java:99)
at org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1642)
at hudson.security.ChainedServletFilter$1.doFilter(ChainedServletFilter.java:84)
at hudson.security.UnwrapSecurityExceptionFilter.doFilter(UnwrapSecurityExceptionFilter.java:51)
at hudson.security.ChainedServletFilter$1.doFilter(ChainedServletFilter.java:87)
at jenkins.security.ExceptionTranslationFilter.doFilter(ExceptionTranslationFilter.java:117)
at hudson.security.ChainedServletFilter$1.doFilter(ChainedServletFilter.java:87)
at org.acegisecurity.providers.anonymous.AnonymousProcessingFilter.doFilter(AnonymousProcessingFilter.java:125)
at hudson.security.ChainedServletFilter$1.doFilter(ChainedServletFilter.java:87)
at org.acegisecurity.ui.rememberme.RememberMeProcessingFilter.doFilter(RememberMeProcessingFilter.java:142)
at hudson.security.ChainedServletFilter$1.doFilter(ChainedServletFilter.java:87)
at org.acegisecurity.ui.AbstractProcessingFilter.doFilter(AbstractProcessingFilter.java:271)
at hudson.security.ChainedServletFilter$1.doFilter(ChainedServletFilter.java:87)
at jenkins.security.BasicHeaderProcessor.doFilter(BasicHeaderProcessor.java:93)
at hudson.security.ChainedServletFilter$1.doFilter(ChainedServletFilter.java:87)
at org.acegisecurity.context.HttpSessionContextIntegrationFilter.doFilter(HttpSessionContextIntegrationFilter.java:249)
at hudson.security.HttpSessionContextIntegrationFilter2.doFilter(HttpSessionContextIntegrationFilter2.java:67)
at hudson.security.ChainedServletFilter$1.doFilter(ChainedServletFilter.java:87)
at hudson.security.ChainedServletFilter.doFilter(ChainedServletFilter.java:90)
at hudson.security.HudsonFilter.doFilter(HudsonFilter.java:171)
at org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1642)
at org.kohsuke.stapler.compression.CompressionFilter.doFilter(CompressionFilter.java:49)
at org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1642)
at hudson.util.CharacterEncodingFilter.doFilter(CharacterEncodingFilter.java:82)
at org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1642)
at org.kohsuke.stapler.DiagnosticThreadNameFilter.doFilter(DiagnosticThreadNameFilter.java:30)
at org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1642)
at org.eclipse.jetty.servlet.ServletHandler.doHandle(ServletHandler.java:533)
at org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:146)
at org.eclipse.jetty.security.SecurityHandler.handle(SecurityHandler.java:524)
at org.eclipse.jetty.server.handler.HandlerWrapper.handle(HandlerWrapper.java:132)
at org.eclipse.jetty.server.handler.ScopedHandler.nextHandle(ScopedHandler.java:257)
at org.eclipse.jetty.server.session.SessionHandler.doHandle(SessionHandler.java:1595)
at org.eclipse.jetty.server.handler.ScopedHandler.nextHandle(ScopedHandler.java:255)
at org.eclipse.jetty.server.handler.ContextHandler.doHandle(ContextHandler.java:1340)
at org.eclipse.jetty.server.handler.ScopedHandler.nextScope(ScopedHandler.java:203)
at org.eclipse.jetty.servlet.ServletHandler.doScope(ServletHandler.java:473)
at org.eclipse.jetty.server.session.SessionHandler.doScope(SessionHandler.java:1564)
at org.eclipse.jetty.server.handler.ScopedHandler.nextScope(ScopedHandler.java:201)
at org.eclipse.jetty.server.handler.ContextHandler.doScope(ContextHandler.java:1242)
at org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:144)
at org.eclipse.jetty.server.handler.HandlerWrapper.handle(HandlerWrapper.java:132)
at org.eclipse.jetty.server.Server.handle(Server.java:503)
at org.eclipse.jetty.server.HttpChannel.handle(HttpChannel.java:364)
at org.eclipse.jetty.server.HttpConnection.onFillable(HttpConnection.java:260)
at org.eclipse.jetty.io.AbstractConnection$ReadCallback.succeeded(AbstractConnection.java:305)
at org.eclipse.jetty.io.FillInterest.fillable(FillInterest.java:103)
at org.eclipse.jetty.io.ChannelEndPoint$2.run(ChannelEndPoint.java:118)
at org.eclipse.jetty.util.thread.strategy.EatWhatYouKill.runTask(EatWhatYouKill.java:333)
at org.eclipse.jetty.util.thread.strategy.EatWhatYouKill.doProduce(EatWhatYouKill.java:310)
at org.eclipse.jetty.util.thread.strategy.EatWhatYouKill.tryProduce(EatWhatYouKill.java:168)
at org.eclipse.jetty.util.thread.strategy.EatWhatYouKill.run(EatWhatYouKill.java:126)
at org.eclipse.jetty.util.thread.ReservedThreadExecutor$ReservedThread.run(ReservedThreadExecutor.java:366)
at org.eclipse.jetty.util.thread.QueuedThreadPool.runJob(QueuedThreadPool.java:765)
at org.eclipse.jetty.util.thread.QueuedThreadPool$2.run(QueuedThreadPool.java:683)
at java.lang.Thread.run(Thread.java:748)
security:
remotingCLI:
enabled: false
remove_master_envvars:
- '.*PASSWORD.*'
- 'KINNAIRD_TEST_ENVVAR'
Stack trace
io.jenkins.plugins.casc.ConfiguratorException: No configurator for root element <remove_master_envvars>
at io.jenkins.plugins.casc.ConfigurationAsCode.invokeWith(ConfigurationAsCode.java:634)
at io.jenkins.plugins.casc.ConfigurationAsCode.checkWith(ConfigurationAsCode.java:657)
at io.jenkins.plugins.casc.ConfigurationAsCode.configureWith(ConfigurationAsCode.java:642)
at io.jenkins.plugins.casc.ConfigurationAsCode.configureWith(ConfigurationAsCode.java:545)
at io.jenkins.plugins.casc.ConfigurationAsCode.configure(ConfigurationAsCode.java:275)
at io.jenkins.plugins.casc.ConfigurationAsCode.doReload(ConfigurationAsCode.java:154)
at java.lang.invoke.MethodHandle.invokeWithArguments(MethodHandle.java:627)
at org.kohsuke.stapler.Function$MethodFunction.invoke(Function.java:396)
at org.kohsuke.stapler.Function$InstanceFunction.invoke(Function.java:408)
at org.kohsuke.stapler.interceptor.RequirePOST$Processor.invoke(RequirePOST.java:77)
at org.kohsuke.stapler.PreInvokeInterceptedFunction.invoke(PreInvokeInterceptedFunction.java:26)
at org.kohsuke.stapler.Function.bindAndInvoke(Function.java:212)
at org.kohsuke.stapler.Function.bindAndInvokeAndServeResponse(Function.java:145)
at org.kohsuke.stapler.MetaClass$11.doDispatch(MetaClass.java:537)
at org.kohsuke.stapler.NameBasedDispatcher.dispatch(NameBasedDispatcher.java:58)
at org.kohsuke.stapler.Stapler.tryInvoke(Stapler.java:739)
at org.kohsuke.stapler.Stapler.invoke(Stapler.java:870)
at org.kohsuke.stapler.MetaClass$9.dispatch(MetaClass.java:458)
at org.kohsuke.stapler.Stapler.tryInvoke(Stapler.java:739)
at org.kohsuke.stapler.Stapler.invoke(Stapler.java:870)
at org.kohsuke.stapler.Stapler.invoke(Stapler.java:668)
at org.kohsuke.stapler.Stapler.service(Stapler.java:238)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:790)
at org.eclipse.jetty.servlet.ServletHolder.handle(ServletHolder.java:865)
at org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1655)
at hudson.util.PluginServletFilter$1.doFilter(PluginServletFilter.java:154)
at org.jenkinsci.plugins.ssegateway.Endpoint$SSEListenChannelFilter.doFilter(Endpoint.java:243)
at hudson.util.PluginServletFilter$1.doFilter(PluginServletFilter.java:151)
at io.jenkins.blueocean.ResourceCacheControl.doFilter(ResourceCacheControl.java:134)
at hudson.util.PluginServletFilter$1.doFilter(PluginServletFilter.java:151)
at io.jenkins.blueocean.auth.jwt.impl.JwtAuthenticationFilter.doFilter(JwtAuthenticationFilter.java:61)
at hudson.util.PluginServletFilter$1.doFilter(PluginServletFilter.java:151)
at jenkins.metrics.impl.MetricsFilter.doFilter(MetricsFilter.java:125)
at hudson.util.PluginServletFilter$1.doFilter(PluginServletFilter.java:151)
at jenkins.telemetry.impl.UserLanguages$AcceptLanguageFilter.doFilter(UserLanguages.java:128)
at hudson.util.PluginServletFilter$1.doFilter(PluginServletFilter.java:151)
at hudson.util.PluginServletFilter.doFilter(PluginServletFilter.java:157)
at org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1642)
at hudson.security.csrf.CrumbFilter.doFilter(CrumbFilter.java:99)
at org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1642)
at hudson.security.ChainedServletFilter$1.doFilter(ChainedServletFilter.java:84)
at hudson.security.UnwrapSecurityExceptionFilter.doFilter(UnwrapSecurityExceptionFilter.java:51)
at hudson.security.ChainedServletFilter$1.doFilter(ChainedServletFilter.java:87)
at jenkins.security.ExceptionTranslationFilter.doFilter(ExceptionTranslationFilter.java:117)
at hudson.security.ChainedServletFilter$1.doFilter(ChainedServletFilter.java:87)
at org.acegisecurity.providers.anonymous.AnonymousProcessingFilter.doFilter(AnonymousProcessingFilter.java:125)
at hudson.security.ChainedServletFilter$1.doFilter(ChainedServletFilter.java:87)
at org.acegisecurity.ui.rememberme.RememberMeProcessingFilter.doFilter(RememberMeProcessingFilter.java:142)
at hudson.security.ChainedServletFilter$1.doFilter(ChainedServletFilter.java:87)
at org.acegisecurity.ui.AbstractProcessingFilter.doFilter(AbstractProcessingFilter.java:271)
at hudson.security.ChainedServletFilter$1.doFilter(ChainedServletFilter.java:87)
at jenkins.security.BasicHeaderProcessor.doFilter(BasicHeaderProcessor.java:93)
at hudson.security.ChainedServletFilter$1.doFilter(ChainedServletFilter.java:87)
at org.acegisecurity.context.HttpSessionContextIntegrationFilter.doFilter(HttpSessionContextIntegrationFilter.java:249)
at hudson.security.HttpSessionContextIntegrationFilter2.doFilter(HttpSessionContextIntegrationFilter2.java:67)
at hudson.security.ChainedServletFilter$1.doFilter(ChainedServletFilter.java:87)
at hudson.security.ChainedServletFilter.doFilter(ChainedServletFilter.java:90)
at hudson.security.HudsonFilter.doFilter(HudsonFilter.java:171)
at org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1642)
at org.kohsuke.stapler.compression.CompressionFilter.doFilter(CompressionFilter.java:49)
at org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1642)
at hudson.util.CharacterEncodingFilter.doFilter(CharacterEncodingFilter.java:82)
at org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1642)
at org.kohsuke.stapler.DiagnosticThreadNameFilter.doFilter(DiagnosticThreadNameFilter.java:30)
at org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1642)
at org.eclipse.jetty.servlet.ServletHandler.doHandle(ServletHandler.java:533)
at org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:146)
at org.eclipse.jetty.security.SecurityHandler.handle(SecurityHandler.java:524)
at org.eclipse.jetty.server.handler.HandlerWrapper.handle(HandlerWrapper.java:132)
at org.eclipse.jetty.server.handler.ScopedHandler.nextHandle(ScopedHandler.java:257)
at org.eclipse.jetty.server.session.SessionHandler.doHandle(SessionHandler.java:1595)
at org.eclipse.jetty.server.handler.ScopedHandler.nextHandle(ScopedHandler.java:255)
at org.eclipse.jetty.server.handler.ContextHandler.doHandle(ContextHandler.java:1340)
at org.eclipse.jetty.server.handler.ScopedHandler.nextScope(ScopedHandler.java:203)
at org.eclipse.jetty.servlet.ServletHandler.doScope(ServletHandler.java:473)
at org.eclipse.jetty.server.session.SessionHandler.doScope(SessionHandler.java:1564)
at org.eclipse.jetty.server.handler.ScopedHandler.nextScope(ScopedHandler.java:201)
at org.eclipse.jetty.server.handler.ContextHandler.doScope(ContextHandler.java:1242)
at org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:144)
at org.eclipse.jetty.server.handler.HandlerWrapper.handle(HandlerWrapper.java:132)
at org.eclipse.jetty.server.Server.handle(Server.java:503)
at org.eclipse.jetty.server.HttpChannel.handle(HttpChannel.java:364)
at org.eclipse.jetty.server.HttpConnection.onFillable(HttpConnection.java:260)
at org.eclipse.jetty.io.AbstractConnection$ReadCallback.succeeded(AbstractConnection.java:305)
at org.eclipse.jetty.io.FillInterest.fillable(FillInterest.java:103)
at org.eclipse.jetty.io.ChannelEndPoint$2.run(ChannelEndPoint.java:118)
at org.eclipse.jetty.util.thread.strategy.EatWhatYouKill.runTask(EatWhatYouKill.java:333)
at org.eclipse.jetty.util.thread.strategy.EatWhatYouKill.doProduce(EatWhatYouKill.java:310)
at org.eclipse.jetty.util.thread.strategy.EatWhatYouKill.tryProduce(EatWhatYouKill.java:168)
at org.eclipse.jetty.util.thread.strategy.EatWhatYouKill.run(EatWhatYouKill.java:126)
at org.eclipse.jetty.util.thread.ReservedThreadExecutor$ReservedThread.run(ReservedThreadExecutor.java:366)
at org.eclipse.jetty.util.thread.QueuedThreadPool.runJob(QueuedThreadPool.java:765)
at org.eclipse.jetty.util.thread.QueuedThreadPool$2.run(QueuedThreadPool.java:683)
at java.lang.Thread.run(Thread.java:748)
Page generated: Mar 6, 2019 11:24:26 PM ESTREST APIJenkins ver. 2.150.3
Currently i see support to use jenkins_database security and set admin user's password.
Would like to request a feature here where i can specify a user and set a password for that user.
Eg: I would like to have non-admin user say 'userA' and set a password for the user.
Please let me know if you have any alternate solutions. Thanks.
Would be nice to not have all of these plugins installed by default. Suggestion: provide environment variable to specify the pre-installed plugins to uninstall.
Great repo, by the way. Love the work you’re doing.
Relates to odavid/k8s-helm-charts#14.
In order to keep backward compatibility, moving the behaviour from helm chart to image (which is the right place anyway).
The next change would be within the chart, one this will be released
Since not all credential types are supported as first citizen, let the user define the class name and the arguments of a credential that is not a first citizen.
The config handler should use java reflection to create the credential
credentials:
my-custom-cred:
type: custom
classname: com.whatever.cred.CredImpl
args:
- arg1
- arg2
Keep only one at a time with the same name
Create multiple image distributions:
This will help implement #132 later on.
They are appended as a single volume
As a user of this (awesome) project, I'd like to be able and opt for using the more advanced Jenkins with Java 11 image.
As described in https://jenkins.io/blog/2018/12/14/java11-preview-availability/, it's already possible.
It would be a great feature to allow users to opt for the java 11 preview image.
On Jenkins "2.190.1" with K8s plugin "1.20.2", can't start agents.
The problem related to Jenkins_url not being passed to the agent.
directConnection is the reason for the plugin not passing this enviroment.
To overcome this, need to ability to set the "directConnection" flag to false.
Support configuring bitbucket server. This will enable using a bitbucket organisation folder
Looks like ECS is only supported at this time. @odavid this would be super useful to us...
A bug in the git plugin causes the stash-notifier plugin to not work properly.
According to this issue - jenkinsci/stashnotifier-plugin#219, downgrading the git to 3.9.1 would solve this issue. WDTY? @odavid
Listen to consul key changes and update jenkins based on it
For every release (v\d\.\d.)-(.) create:
Add a new section in configuration to enable running direct jobDSL "scriptlets" without the need to have a repository or pipeline configured. Sometimes jobDSL is enough
Sometimes there is a need for having in the main yaml file some configurations that are not supported by the image.
We need to have a customConfig
section and a configuration handler that is contributed by the user.
Iterate over all docker clouds options and cover them for giving max flexibility.
not able to download plugins if docker host is behind firewal.
[$ bloodyjenkins]# cat setup-env
#!/bin/bash
...
export http_proxy='http://***.***.com:8080'
export https_proxy='http://***.***.com:8080'
export no_proxy='127.0.0.1,.***.com,*.***.com'
[$ bloodyjenkins]# cat docker-compose.yml
version: '2'
services:
jenkins-master:
...
environment:
...
JENKINS_ENV_PLUGINS: ansible:1.0
here are the logs with Downloading plugins and Attempt 5 failed and there are no more attempts left!
[$ bloodyjenkins]# docker-compose up -d
WARNING: The MY_HOST_IP variable is not set. Defaulting to a blank string.
bloodyjenkins_jenkins-master_1 is up-to-date
[$ bloodyjenkins]# docker logs bloodyjenkins_jenkins-master_1 -f
adding: JAVA_OPTS_CSP to JAVA_OPTS
adding: JAVA_OPTS_DISABLE_WIZARD to JAVA_OPTS
adding: JAVA_OPTS_LOAD_STATS_CLOCK to JAVA_OPTS
adding: JAVA_OPTS_MEM to JAVA_OPTS
Fetching config from URL: file:///config.yml
2018-05-08 07:53:59 - /usr/bin/watch-file.sh started
2018-05-08 07:53:59 - URL = file:///config.yml
2018-05-08 07:53:59 - URL_TYPE = file
2018-05-08 07:53:59 - CACHE_DIR = /dev/shm/.jenkins-config-cache
2018-05-08 07:53:59 - POLLING_INTERVAL = 30
2018-05-08 07:53:59 - FILENAME = /dev/shm/jenkins-config.yml
2018-05-08 07:53:59 - COMMAND =
2018-05-08 07:53:59 - SKIP_WATCH = YES
2018-05-08 07:53:59 - DEBUG =
2018-05-08 07:53:59 - Fetching /dev/shm/jenkins-config.yml for the first time...
2018-05-08 07:53:59 - SKIP_WATCH = YES, Going out...
Watching config from URL: file:///config.yml in the backgroud
Installing additional plugins ansible:1.0
2018-05-08 07:53:59 - /usr/bin/watch-file.sh started
2018-05-08 07:53:59 - URL = file:///config.yml
2018-05-08 07:53:59 - URL_TYPE = file
2018-05-08 07:53:59 - CACHE_DIR = /dev/shm/.jenkins-config-cache
2018-05-08 07:53:59 - POLLING_INTERVAL = 30
2018-05-08 07:53:59 - FILENAME = /dev/shm/jenkins-config.yml
2018-05-08 07:53:59 - COMMAND = update-config.sh
2018-05-08 07:53:59 - SKIP_WATCH =
2018-05-08 07:53:59 - DEBUG =
2018-05-08 07:53:59 - Fetching /dev/shm/jenkins-config.yml for the first time...
2018-05-08 07:53:59 - Entering watch loop
Creating initial locks...
Analyzing war...
Registering preinstalled plugins...
Downloading plugins...
Downloading plugin: ansible from https://updates.jenkins.io/download/plugins/ansible/1.0/ansible.hpi
Attempt 1 failed! Trying again in 1 seconds...
Attempt 2 failed! Trying again in 2 seconds...
Attempt 3 failed! Trying again in 3 seconds...
Attempt 4 failed! Trying again in 4 seconds...
Attempt 5 failed and there are no more attempts left!
This could be extremely powerful and maybe a bloody-jenkins per org?
When the configuration changes, we want the old items to be removed
I think you should add the bitbucket notifier plugin to the base plugins
jenkins-master_1 | WARNING: Failed to run script file:/var/jenkins_home/init.groovy.d/JenkinsConfigLoader.groovy
jenkins-master_1 | groovy.lang.MissingPropertyException: No such property: jenkins for class: JenkinsConfigLoader
jenkins-master_1 | at org.codehaus.groovy.runtime.ScriptBytecodeAdapter.unwrap(ScriptBytecodeAdapter.java:53)
jenkins-master_1 | at org.codehaus.groovy.runtime.callsite.PogoGetPropertySite.getProperty(PogoGetPropertySite.java:52)
jenkins-master_1 | at org.codehaus.groovy.runtime.callsite.AbstractCallSite.callGroovyObjectGetProperty(AbstractCallSite.java:307)
Not sure why I see a bunch of these upon startup have a similar docker-compose.yml like your exmaple ...
A declarative, efficient, and flexible JavaScript library for building user interfaces.
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google ❤️ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.