-
-
Save jedi4ever/898114 to your computer and use it in GitHub Desktop.
$ java -jar jenkins-cli.jar -s http://localhost:9000 install-plugin findbugs | |
findbugs is neither a valid file, URL, nor a plugin artifact name in the update center | |
No update center data is retrieved yet from: http://updates.jenkins-ci.org/update-center.json | |
findbugs looks like a short plugin name. Did you mean 'null'? | |
# Specifying a full URL works! | |
$ java -jar jenkins-cli.jar -s http://localhost:9020 install-plugin http://updates.jenkins-ci.org/download/plugins/AdaptivePlugin/0.1/AdaptivePlugin.hpi | |
# Get the update center ourself | |
$ wget -O default.json http://updates.jenkins-ci.org/update-center.json | |
# remove first and last line javascript wrapper | |
# Now push it to the update URL | |
curl -X POST -H "Accept: application/json" -d @default.json http://localhost:9020/updateCenter/byId/default/postBack --verbose | |
* About to connect() to localhost port 9020 (#0) | |
* Trying ::1... connected | |
* Connected to localhost (::1) port 9020 (#0) | |
> POST /updateCenter/byId/default/postBack HTTP/1.1 | |
> User-Agent: curl/7.19.7 (universal-apple-darwin10.0) libcurl/7.19.7 OpenSSL/0.9.8l zlib/1.2.3 | |
> Host: localhost:9020 | |
> Accept: application/json | |
> Content-Length: 253822 | |
> Content-Type: application/x-www-form-urlencoded | |
> Expect: 100-continue | |
> | |
* Done waiting for 100-continue | |
< HTTP/1.1 200 OK | |
< Server: Winstone Servlet Engine v0.9.10 | |
< Content-Type: text/plain;charset=UTF-8 | |
< Connection: Close | |
< Date: Fri, 01 Apr 2011 13:03:41 GMT | |
< X-Powered-By: Servlet/2.5 (Winstone/0.9.10) | |
# Now it finds the plugin by name | |
$ java -jar jenkins-cli.jar -s http://localhost:9020 install-plugin findbugs | |
Installing findbugs from update center | |
$ java -jar jenkins-cli.jar -s http://localhost:9020 safe-restart | |
hudson.lifecycle.RestartNotSupportedException: Restart is not supported on Mac OS X | |
$ java -jar jenkins-cli.jar -s http://localhost:9020 reload-configuration |
This was extremely helpful. I derived a bit simpler single line version without the need for saving to a file:
curl -L http://updates.jenkins-ci.org/update-center.json | sed '1d;$d' | curl -X POST -H 'Accept: application/json' -d @- http://localhost:9020/updateCenter/byId/default/postBack
Here a chef recipe to automate this:
include_recipe 'jenkins'
plugins_to_install = node[:jenkins][:server][:plugins]
# Ensure jenkins user home dir exists
directory "#{node[:jenkins][:server][:home]}" do
owner "#{node[:jenkins][:server][:user]}"
group "#{node[:jenkins][:server][:user]}"
action :create
end
# Fixes possible error:
# STDOUT: `git` is neither a valid file, URL, nor a plugin artifact name in the update center
# No update center data is retrieved yet from: http://updates.jenkins-ci.org/update-center.json
directory "#{node[:jenkins][:server][:home]}/updates" do
owner "#{node[:jenkins][:server][:user]}"
group "#{node[:jenkins][:server][:user]}"
action :create
end
execute "update jenkins update center" do
command "wget http://updates.jenkins-ci.org/update-center.json -qO- | sed '1d;$d' > #{node[:jenkins][:server][:home]}/updates/default.json"
user "#{node[:jenkins][:server][:user]}"
group "#{node[:jenkins][:server][:user]}"
creates "#{node[:jenkins][:server][:home]}/updates/default.json"
end
# Install all plugins and restart once
jenkins_cli "install-plugin #{plugins_to_install.join(' ')}"
jenkins_cli "safe-restart"
Thanks a lot
Why do you need to update UpdateCenter?
This does not work behind a proxy. I always end up getting WARNING: No valid crumb was included in request for /updateCenter/byId/default/postBack. Returning 403.
@sayantandas: This does not work behind a proxy. I always end up getting WARNING: No valid crumb was included in request for /updateCenter/byId/default/postBack. Returning 403.
I don't think that's related to a proxy, rather that Jenkins' CSRF protection is enabled. You should add the crumb as header as well: https://wiki.jenkins-ci.org/display/JENKINS/Remote+access+API
This is still helping people (me). Although it wasn't a direct fix, it made sure I was being sane.
Nice, this solved a problem for me while writing a Chef recipe to install Jenkins.