jenkins_launcher 0.0.1
Sign up to get free protection for your applications and to get access to all the features.
- data/.gitignore +18 -0
- data/CHANGELOG.md +6 -0
- data/Gemfile +13 -0
- data/LICENCE +19 -0
- data/README.md +33 -0
- data/Rakefile +23 -0
- data/bin/jlaunch +5 -0
- data/config/sample.yml +6 -0
- data/lib/jenkins_launcher.rb +26 -0
- data/lib/jenkins_launcher/api_interface.rb +90 -0
- data/lib/jenkins_launcher/cli.rb +128 -0
- data/lib/jenkins_launcher/config_loader.rb +50 -0
- data/lib/jenkins_launcher/version.rb +29 -0
- metadata +191 -0
data/.gitignore
ADDED
data/CHANGELOG.md
ADDED
data/Gemfile
ADDED
@@ -0,0 +1,13 @@
|
|
1
|
+
source "http://rubygems.org"
|
2
|
+
|
3
|
+
gem "jenkins_api_client", "~> 0.6.0"
|
4
|
+
gem "json", ">=0"
|
5
|
+
gem "thor", "~> 0.16.0"
|
6
|
+
|
7
|
+
group :development do
|
8
|
+
gem "bundler", ">= 1.0"
|
9
|
+
gem "jeweler", ">= 1.6.4"
|
10
|
+
gem "builder", "~> 3.1.3"
|
11
|
+
gem "simplecov"
|
12
|
+
gem "rspec"
|
13
|
+
end
|
data/LICENCE
ADDED
@@ -0,0 +1,19 @@
|
|
1
|
+
Copyright (c) 2013 Kannan Manickam <arangamani.kannan@gmail.com>
|
2
|
+
|
3
|
+
Permission is hereby granted, free of charge, to any person obtaining a copy
|
4
|
+
of this software and associated documentation files (the "Software"), to deal
|
5
|
+
in the Software without restriction, including without limitation the rights
|
6
|
+
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
7
|
+
copies of the Software, and to permit persons to whom the Software is
|
8
|
+
furnished to do so, subject to the following conditions:
|
9
|
+
|
10
|
+
The above copyright notice and this permission notice shall be included in
|
11
|
+
all copies or substantial portions of the Software.
|
12
|
+
|
13
|
+
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
14
|
+
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
15
|
+
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
16
|
+
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
17
|
+
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
18
|
+
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
|
19
|
+
THE SOFTWARE.
|
data/README.md
ADDED
@@ -0,0 +1,33 @@
|
|
1
|
+
Jenkins Launcher
|
2
|
+
================
|
3
|
+
|
4
|
+
Overview:
|
5
|
+
---------
|
6
|
+
Jenkins launcher makes use of the [jenkins_api_client](https://github.com/arangamani/jenkins_api_client) Rubygem which is an API client/wrapper written in pure Ruby and makes use of the Jenkins's JSON API. This project mainly focusses on performing continuous integration tests on a remote Jenkins CI server and all activities are achieved through a command line interface. This projects acts much like building on Travis CI, but makes use of your organization's own Jenkins server where you may have specialized configuration or you don't want to expose your results publicly.
|
7
|
+
|
8
|
+
Installation:
|
9
|
+
-------------
|
10
|
+
|
11
|
+
```
|
12
|
+
gem install jenkins_launcher
|
13
|
+
```
|
14
|
+
|
15
|
+
Getting Started:
|
16
|
+
----------------
|
17
|
+
Please see [Wiki](http://arangamani.github.com/jenkins_launcher) to get started with up-to-date instructions.
|
18
|
+
|
19
|
+
Author:
|
20
|
+
-------
|
21
|
+
Kannan Manickam <arangamani.kannan@gmail.com>
|
22
|
+
|
23
|
+
CONTRIBUTING:
|
24
|
+
-------------
|
25
|
+
|
26
|
+
If you would like to contribute to this project, just do the following:
|
27
|
+
|
28
|
+
1. Fork the repo on Github.
|
29
|
+
2. Add your features and make commits to your forked repo.
|
30
|
+
3. Make a pull request to this repo.
|
31
|
+
4. Review will be done and changes will be requested.
|
32
|
+
5. Once changes are done or no changes are required, pull request will be merged.
|
33
|
+
6. The next release will have your changes in it.
|
data/Rakefile
ADDED
@@ -0,0 +1,23 @@
|
|
1
|
+
require File.expand_path('../lib/jenkins_launcher', __FILE__)
|
2
|
+
require File.expand_path('../lib/jenkins_launcher/version', __FILE__)
|
3
|
+
require 'rake'
|
4
|
+
require 'jeweler'
|
5
|
+
|
6
|
+
Jeweler::Tasks.new do |gemspec|
|
7
|
+
gemspec.name = 'jenkins_launcher'
|
8
|
+
gemspec.version = JenkinsLauncher::VERSION
|
9
|
+
gemspec.platform = Gem::Platform::RUBY
|
10
|
+
gemspec.date = Time.now.utc.strftime("%Y-%m-%d")
|
11
|
+
gemspec.require_path = 'lib'
|
12
|
+
gemspec.executables = `git ls-files -- bin/*`.split("\n").map{|f| File.basename(f)}
|
13
|
+
gemspec.files = `git ls-files`.split("\n")
|
14
|
+
gemspec.extra_rdoc_files = ['CHANGELOG.md', 'LICENSE', 'README.md']
|
15
|
+
gemspec.authors = [ 'Kannan Manickam' ]
|
16
|
+
gemspec.email = [ 'arangamani.kannan@gmail.com' ]
|
17
|
+
gemspec.homepage = 'https://github.com/arangamani/jenkins_launcher'
|
18
|
+
gemspec.summary = 'Jenkins Jobs Launcher through Jenkins API Client'
|
19
|
+
gemspec.description = %{
|
20
|
+
This is a simple easy-to-use Jenkins jobs launcher that uses jenkins_api_client.}
|
21
|
+
gemspec.test_files = `git ls-files -- {spec}/*`.split("\n")
|
22
|
+
gemspec.rubygems_version = '1.8.17'
|
23
|
+
end
|
data/bin/jlaunch
ADDED
data/config/sample.yml
ADDED
@@ -0,0 +1,26 @@
|
|
1
|
+
#
|
2
|
+
# Copyright (c) 2013 Kannan Manickam <arangamani.kannan@gmail.com>
|
3
|
+
#
|
4
|
+
# Permission is hereby granted, free of charge, to any person obtaining a copy
|
5
|
+
# of this software and associated documentation files (the "Software"), to deal
|
6
|
+
# in the Software without restriction, including without limitation the rights
|
7
|
+
# to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
8
|
+
# copies of the Software, and to permit persons to whom the Software is
|
9
|
+
# furnished to do so, subject to the following conditions:
|
10
|
+
#
|
11
|
+
# The above copyright notice and this permission notice shall be included in
|
12
|
+
# all copies or substantial portions of the Software.
|
13
|
+
#
|
14
|
+
# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
15
|
+
# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
16
|
+
# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
17
|
+
# AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
18
|
+
# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
19
|
+
# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
|
20
|
+
# THE SOFTWARE.
|
21
|
+
#
|
22
|
+
|
23
|
+
require File.expand_path('../jenkins_launcher/config_loader', __FILE__)
|
24
|
+
require File.expand_path('../jenkins_launcher/api_interface', __FILE__)
|
25
|
+
require File.expand_path('../jenkins_launcher/cli', __FILE__)
|
26
|
+
require File.expand_path('../jenkins_launcher/version', __FILE__)
|
@@ -0,0 +1,90 @@
|
|
1
|
+
#
|
2
|
+
# Copyright (c) 2013 Kannan Manickam <arangamani.kannan@gmail.com>
|
3
|
+
#
|
4
|
+
# Permission is hereby granted, free of charge, to any person obtaining a copy
|
5
|
+
# of this software and associated documentation files (the "Software"), to deal
|
6
|
+
# in the Software without restriction, including without limitation the rights
|
7
|
+
# to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
8
|
+
# copies of the Software, and to permit persons to whom the Software is
|
9
|
+
# furnished to do so, subject to the following conditions:
|
10
|
+
#
|
11
|
+
# The above copyright notice and this permission notice shall be included in
|
12
|
+
# all copies or substantial portions of the Software.
|
13
|
+
#
|
14
|
+
# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
15
|
+
# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
16
|
+
# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
17
|
+
# AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
18
|
+
# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
19
|
+
# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
|
20
|
+
# THE SOFTWARE.
|
21
|
+
#
|
22
|
+
|
23
|
+
require 'jenkins_api_client'
|
24
|
+
|
25
|
+
module JenkinsLauncher
|
26
|
+
class APIInterface
|
27
|
+
|
28
|
+
def initialize(options)
|
29
|
+
if options[:username] && options[:server_ip] && (options[:password] || options[:password_base64])
|
30
|
+
creds = options
|
31
|
+
elsif options[:creds_file]
|
32
|
+
creds = YAML.load_file(File.expand_path(options[:creds_file], __FILE__))
|
33
|
+
elsif File.exist?("#{ENV['HOME']}/.jenkins_api_client/login.yml")
|
34
|
+
creds = YAML.load_file(File.expand_path("#{ENV['HOME']}/.jenkins_api_client/login.yml", __FILE__))
|
35
|
+
else
|
36
|
+
puts "Credentials are not set. Please pass them as parameters or set them in the default credentials file"
|
37
|
+
exit 1
|
38
|
+
end
|
39
|
+
@client = JenkinsApi::Client.new(creds)
|
40
|
+
end
|
41
|
+
|
42
|
+
def create_job(params)
|
43
|
+
@client.job.create_freestyle(params) unless @client.job.exists?(params[:name])
|
44
|
+
end
|
45
|
+
|
46
|
+
def build_job(name)
|
47
|
+
@client.job.build(name) unless @client.job.get_current_build_status(name) == 'running'
|
48
|
+
end
|
49
|
+
|
50
|
+
def stop_job(name)
|
51
|
+
@client.job.stop_build(name)
|
52
|
+
end
|
53
|
+
|
54
|
+
def job_exists?(name)
|
55
|
+
@client.job.exists?(name)
|
56
|
+
end
|
57
|
+
|
58
|
+
def job_building?(name)
|
59
|
+
@client.job.get_current_build_status(name) == 'running'
|
60
|
+
end
|
61
|
+
|
62
|
+
def delete_job(name)
|
63
|
+
@client.job.delete(name)
|
64
|
+
end
|
65
|
+
|
66
|
+
def get_job_status(name)
|
67
|
+
@client.job.get_current_build_status(name)
|
68
|
+
end
|
69
|
+
|
70
|
+
def display_progressive_console_output(name, refresh_rate)
|
71
|
+
debug_changed = false
|
72
|
+
if @client.debug == true
|
73
|
+
@client.debug = false
|
74
|
+
debug_changed = true
|
75
|
+
end
|
76
|
+
|
77
|
+
response = @client.job.get_console_output(name)
|
78
|
+
puts response['output'] unless response['more']
|
79
|
+
while response['more']
|
80
|
+
size = response['size']
|
81
|
+
puts response['output'] unless response['output'].chomp.empty?
|
82
|
+
sleep refresh_rate
|
83
|
+
response = @client.job.get_console_output(name, 0, size)
|
84
|
+
end
|
85
|
+
|
86
|
+
@client.toggle_debug if debug_changed
|
87
|
+
end
|
88
|
+
|
89
|
+
end
|
90
|
+
end
|
@@ -0,0 +1,128 @@
|
|
1
|
+
#
|
2
|
+
# Copyright (c) 2013 Kannan Manickam <arangamani.kannan@gmail.com>
|
3
|
+
#
|
4
|
+
# Permission is hereby granted, free of charge, to any person obtaining a copy
|
5
|
+
# of this software and associated documentation files (the "Software"), to deal
|
6
|
+
# in the Software without restriction, including without limitation the rights
|
7
|
+
# to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
8
|
+
# copies of the Software, and to permit persons to whom the Software is
|
9
|
+
# furnished to do so, subject to the following conditions:
|
10
|
+
#
|
11
|
+
# The above copyright notice and this permission notice shall be included in
|
12
|
+
# all copies or substantial portions of the Software.
|
13
|
+
#
|
14
|
+
# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
15
|
+
# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
16
|
+
# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
17
|
+
# AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
18
|
+
# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
19
|
+
# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
|
20
|
+
# THE SOFTWARE.
|
21
|
+
#
|
22
|
+
|
23
|
+
require File.expand_path('../config_loader', __FILE__)
|
24
|
+
require File.expand_path('../api_interface', __FILE__)
|
25
|
+
require 'thor'
|
26
|
+
|
27
|
+
module JenkinsLauncher
|
28
|
+
class CLI < Thor
|
29
|
+
|
30
|
+
class_option :username, :aliases => "-u", :desc => "Name of Jenkins user"
|
31
|
+
class_option :password, :aliases => "-p", :desc => "Password of Jenkins user"
|
32
|
+
class_option :password_base64, :aliases => "-b", :desc => "Base 64 encoded password of Jenkins user"
|
33
|
+
class_option :server_ip, :aliases => "-s", :desc => "Jenkins server IP address"
|
34
|
+
class_option :server_port, :aliases => "-o", :desc => "Jenkins server port"
|
35
|
+
class_option :creds_file, :aliases => "-c", :desc => "Credentials file for communicating with Jenkins server"
|
36
|
+
|
37
|
+
map "-v" => :version
|
38
|
+
|
39
|
+
def initialize(arg1, arg2, arg3)
|
40
|
+
super
|
41
|
+
@api = APIInterface.new(options)
|
42
|
+
@config = ConfigLoader.new
|
43
|
+
end
|
44
|
+
|
45
|
+
desc "version", "Shows current version"
|
46
|
+
def version
|
47
|
+
puts JenkinsLauncher::VERSION
|
48
|
+
end
|
49
|
+
|
50
|
+
desc "create CONFIG", "Load configuration and create a job on jenkins"
|
51
|
+
def create(config_file)
|
52
|
+
params = @config.load_config(config_file)
|
53
|
+
unless @api.job_exists?(params[:name])
|
54
|
+
@api.create_job(params)
|
55
|
+
else
|
56
|
+
puts "The job is already created. Please use 'start' command to build the job."
|
57
|
+
end
|
58
|
+
end
|
59
|
+
|
60
|
+
desc "start CONFIG", "Load configuration, create job on jenkins, and build"
|
61
|
+
method_option :quiet_period, :aliases => "-q", :desc => "Jenkins Quit period to wait before starting to get console output. Default is '5' seconds"
|
62
|
+
method_option :refresh_rate, :aliases => "-r", :desc => "Time to wait between getting console output from server. Default is '5' seconds"
|
63
|
+
method_option :delete_after, :type => :boolean, :aliases => "-d", :desc => "Delete the job from Jenkins after the build is finished"
|
64
|
+
def start(config_file)
|
65
|
+
params = @config.load_config(config_file)
|
66
|
+
@api.create_job(params) unless @api.job_exists?(params[:name])
|
67
|
+
unless @api.job_building?(params[:name])
|
68
|
+
@api.build_job(params[:name])
|
69
|
+
quiet_period = options[:quiet_period] ? options[:quiet_period] : 5
|
70
|
+
sleep quiet_period
|
71
|
+
refresh_rate = options[:refresh_rate] ? options[:refresh_rate].to_i : 5
|
72
|
+
@api.display_progressive_console_output(params[:name], refresh_rate)
|
73
|
+
puts "Build status: #{@api.get_job_status(params[:name])}"
|
74
|
+
@api.delete_job(params[:name]) if options[:delete_after]
|
75
|
+
else
|
76
|
+
puts "Build is already running. Run 'attach' command to attach to existing build and watch progress."
|
77
|
+
end
|
78
|
+
end
|
79
|
+
|
80
|
+
desc "stop CONFIG", "Stop already running build of the job"
|
81
|
+
def stop(config_file)
|
82
|
+
params = @config.load_config(config_file)
|
83
|
+
if !@api.job_exists?(params[:name])
|
84
|
+
puts "The job doesn't exist"
|
85
|
+
elsif !@api.job_building?(params[:name])
|
86
|
+
puts "The job is currently not building or it may have finished already."
|
87
|
+
else
|
88
|
+
@api.stop_job(params[:name])
|
89
|
+
end
|
90
|
+
end
|
91
|
+
|
92
|
+
desc "attach CONFIG", "Attach to already running build if any"
|
93
|
+
method_option :refresh_rate, :aliases => "-r", :desc => "Time to wait between getting console output from server. Default is '5' seconds"
|
94
|
+
method_option :delete_after, :type => :boolean, :aliases => "-d", :desc => "Delete the job from Jenkins after the build is finished"
|
95
|
+
def attach(config_file)
|
96
|
+
params = @config.load_config(config_file)
|
97
|
+
if !@api.job_exists?(params[:name])
|
98
|
+
puts "Job is not created. Please use the 'start' command to create and build the job."
|
99
|
+
elsif !@api.job_building?(params[:name])
|
100
|
+
puts "Job is not running. Please use the 'start' command to build the job."
|
101
|
+
else
|
102
|
+
refresh_rate = options[:refresh_rate] ? options[:refresh_rate].to_i : 5
|
103
|
+
@api.display_progressive_console_output(params[:name], refresh_rate)
|
104
|
+
puts "Build status: #{@api.get_job_status(params[:name])}"
|
105
|
+
@api.delete_job(params[:name]) if options[:delete_after]
|
106
|
+
end
|
107
|
+
end
|
108
|
+
|
109
|
+
desc "destroy CONFIG", "Destroy the job from Jenkins server"
|
110
|
+
method_option :force, :type => :boolean, :aliases => "-f", :desc => "Stop the job if it is already running"
|
111
|
+
def destroy(config_file)
|
112
|
+
params = @config.load_config(config_file)
|
113
|
+
if !@api.job_exists?(params[:name])
|
114
|
+
puts "The job doesn't exist or already destroyed."
|
115
|
+
elsif @api.job_building?(params[:name]) && !options[:force]
|
116
|
+
msg = ''
|
117
|
+
msg << "The job is currently building. Please use the 'stop' command or wait until the build is completed."
|
118
|
+
msg << " The --force option can be used to stop the build and destroy immediately."
|
119
|
+
msg << " If you would like to watch the progress, use the 'attach' command."
|
120
|
+
puts msg
|
121
|
+
else
|
122
|
+
@api.stop_job(params[:name]) if options[:force] && @api.job_building?(params[:name])
|
123
|
+
@api.delete_job(params[:name])
|
124
|
+
end
|
125
|
+
end
|
126
|
+
|
127
|
+
end
|
128
|
+
end
|
@@ -0,0 +1,50 @@
|
|
1
|
+
#
|
2
|
+
# Copyright (c) 2013 Kannan Manickam <arangamani.kannan@gmail.com>
|
3
|
+
#
|
4
|
+
# Permission is hereby granted, free of charge, to any person obtaining a copy
|
5
|
+
# of this software and associated documentation files (the "Software"), to deal
|
6
|
+
# in the Software without restriction, including without limitation the rights
|
7
|
+
# to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
8
|
+
# copies of the Software, and to permit persons to whom the Software is
|
9
|
+
# furnished to do so, subject to the following conditions:
|
10
|
+
#
|
11
|
+
# The above copyright notice and this permission notice shall be included in
|
12
|
+
# all copies or substantial portions of the Software.
|
13
|
+
#
|
14
|
+
# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
15
|
+
# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
16
|
+
# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
17
|
+
# AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
18
|
+
# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
19
|
+
# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
|
20
|
+
# THE SOFTWARE.
|
21
|
+
#
|
22
|
+
|
23
|
+
require 'rubygems'
|
24
|
+
require 'json'
|
25
|
+
require 'fileutils'
|
26
|
+
|
27
|
+
module JenkinsLauncher
|
28
|
+
class ConfigLoader
|
29
|
+
|
30
|
+
def load_config(file)
|
31
|
+
puts "Loading configuration from: #{file}"
|
32
|
+
loaded_params = YAML.load_file(Dir.pwd + "/#{file}")
|
33
|
+
validate_config(loaded_params)
|
34
|
+
end
|
35
|
+
|
36
|
+
def validate_config(loaded_params)
|
37
|
+
valid_params = {}
|
38
|
+
raise "'name' is required and not set in the yml file." unless loaded_params['name']
|
39
|
+
valid_params[:name] = loaded_params['name']
|
40
|
+
if loaded_params['shell_command']
|
41
|
+
valid_params[:shell_command] = ''
|
42
|
+
loaded_params['shell_command'].each do |command|
|
43
|
+
valid_params[:shell_command] << command + "\n"
|
44
|
+
end
|
45
|
+
end
|
46
|
+
valid_params
|
47
|
+
end
|
48
|
+
|
49
|
+
end
|
50
|
+
end
|
@@ -0,0 +1,29 @@
|
|
1
|
+
#
|
2
|
+
# Copyright (c) 2013 Kannan Manickam <arangamani.kannan@gmail.com>
|
3
|
+
#
|
4
|
+
# Permission is hereby granted, free of charge, to any person obtaining a copy
|
5
|
+
# of this software and associated documentation files (the "Software"), to deal
|
6
|
+
# in the Software without restriction, including without limitation the rights
|
7
|
+
# to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
8
|
+
# copies of the Software, and to permit persons to whom the Software is
|
9
|
+
# furnished to do so, subject to the following conditions:
|
10
|
+
#
|
11
|
+
# The above copyright notice and this permission notice shall be included in
|
12
|
+
# all copies or substantial portions of the Software.
|
13
|
+
#
|
14
|
+
# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
15
|
+
# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
16
|
+
# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
17
|
+
# AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
18
|
+
# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
19
|
+
# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
|
20
|
+
# THE SOFTWARE.
|
21
|
+
#
|
22
|
+
|
23
|
+
module JenkinsLauncher
|
24
|
+
MAJOR = 0
|
25
|
+
MINOR = 0
|
26
|
+
TINY = 1
|
27
|
+
PRE = nil
|
28
|
+
VERSION = [MAJOR, MINOR, TINY, PRE].compact.join('.')
|
29
|
+
end
|
metadata
ADDED
@@ -0,0 +1,191 @@
|
|
1
|
+
--- !ruby/object:Gem::Specification
|
2
|
+
name: jenkins_launcher
|
3
|
+
version: !ruby/object:Gem::Version
|
4
|
+
version: 0.0.1
|
5
|
+
prerelease:
|
6
|
+
platform: ruby
|
7
|
+
authors:
|
8
|
+
- Kannan Manickam
|
9
|
+
autorequire:
|
10
|
+
bindir: bin
|
11
|
+
cert_chain: []
|
12
|
+
date: 2013-01-12 00:00:00.000000000 Z
|
13
|
+
dependencies:
|
14
|
+
- !ruby/object:Gem::Dependency
|
15
|
+
name: jenkins_api_client
|
16
|
+
requirement: !ruby/object:Gem::Requirement
|
17
|
+
none: false
|
18
|
+
requirements:
|
19
|
+
- - ~>
|
20
|
+
- !ruby/object:Gem::Version
|
21
|
+
version: 0.6.0
|
22
|
+
type: :runtime
|
23
|
+
prerelease: false
|
24
|
+
version_requirements: !ruby/object:Gem::Requirement
|
25
|
+
none: false
|
26
|
+
requirements:
|
27
|
+
- - ~>
|
28
|
+
- !ruby/object:Gem::Version
|
29
|
+
version: 0.6.0
|
30
|
+
- !ruby/object:Gem::Dependency
|
31
|
+
name: json
|
32
|
+
requirement: !ruby/object:Gem::Requirement
|
33
|
+
none: false
|
34
|
+
requirements:
|
35
|
+
- - ! '>='
|
36
|
+
- !ruby/object:Gem::Version
|
37
|
+
version: '0'
|
38
|
+
type: :runtime
|
39
|
+
prerelease: false
|
40
|
+
version_requirements: !ruby/object:Gem::Requirement
|
41
|
+
none: false
|
42
|
+
requirements:
|
43
|
+
- - ! '>='
|
44
|
+
- !ruby/object:Gem::Version
|
45
|
+
version: '0'
|
46
|
+
- !ruby/object:Gem::Dependency
|
47
|
+
name: thor
|
48
|
+
requirement: !ruby/object:Gem::Requirement
|
49
|
+
none: false
|
50
|
+
requirements:
|
51
|
+
- - ~>
|
52
|
+
- !ruby/object:Gem::Version
|
53
|
+
version: 0.16.0
|
54
|
+
type: :runtime
|
55
|
+
prerelease: false
|
56
|
+
version_requirements: !ruby/object:Gem::Requirement
|
57
|
+
none: false
|
58
|
+
requirements:
|
59
|
+
- - ~>
|
60
|
+
- !ruby/object:Gem::Version
|
61
|
+
version: 0.16.0
|
62
|
+
- !ruby/object:Gem::Dependency
|
63
|
+
name: bundler
|
64
|
+
requirement: !ruby/object:Gem::Requirement
|
65
|
+
none: false
|
66
|
+
requirements:
|
67
|
+
- - ! '>='
|
68
|
+
- !ruby/object:Gem::Version
|
69
|
+
version: '1.0'
|
70
|
+
type: :development
|
71
|
+
prerelease: false
|
72
|
+
version_requirements: !ruby/object:Gem::Requirement
|
73
|
+
none: false
|
74
|
+
requirements:
|
75
|
+
- - ! '>='
|
76
|
+
- !ruby/object:Gem::Version
|
77
|
+
version: '1.0'
|
78
|
+
- !ruby/object:Gem::Dependency
|
79
|
+
name: jeweler
|
80
|
+
requirement: !ruby/object:Gem::Requirement
|
81
|
+
none: false
|
82
|
+
requirements:
|
83
|
+
- - ! '>='
|
84
|
+
- !ruby/object:Gem::Version
|
85
|
+
version: 1.6.4
|
86
|
+
type: :development
|
87
|
+
prerelease: false
|
88
|
+
version_requirements: !ruby/object:Gem::Requirement
|
89
|
+
none: false
|
90
|
+
requirements:
|
91
|
+
- - ! '>='
|
92
|
+
- !ruby/object:Gem::Version
|
93
|
+
version: 1.6.4
|
94
|
+
- !ruby/object:Gem::Dependency
|
95
|
+
name: builder
|
96
|
+
requirement: !ruby/object:Gem::Requirement
|
97
|
+
none: false
|
98
|
+
requirements:
|
99
|
+
- - ~>
|
100
|
+
- !ruby/object:Gem::Version
|
101
|
+
version: 3.1.3
|
102
|
+
type: :development
|
103
|
+
prerelease: false
|
104
|
+
version_requirements: !ruby/object:Gem::Requirement
|
105
|
+
none: false
|
106
|
+
requirements:
|
107
|
+
- - ~>
|
108
|
+
- !ruby/object:Gem::Version
|
109
|
+
version: 3.1.3
|
110
|
+
- !ruby/object:Gem::Dependency
|
111
|
+
name: simplecov
|
112
|
+
requirement: !ruby/object:Gem::Requirement
|
113
|
+
none: false
|
114
|
+
requirements:
|
115
|
+
- - ! '>='
|
116
|
+
- !ruby/object:Gem::Version
|
117
|
+
version: '0'
|
118
|
+
type: :development
|
119
|
+
prerelease: false
|
120
|
+
version_requirements: !ruby/object:Gem::Requirement
|
121
|
+
none: false
|
122
|
+
requirements:
|
123
|
+
- - ! '>='
|
124
|
+
- !ruby/object:Gem::Version
|
125
|
+
version: '0'
|
126
|
+
- !ruby/object:Gem::Dependency
|
127
|
+
name: rspec
|
128
|
+
requirement: !ruby/object:Gem::Requirement
|
129
|
+
none: false
|
130
|
+
requirements:
|
131
|
+
- - ! '>='
|
132
|
+
- !ruby/object:Gem::Version
|
133
|
+
version: '0'
|
134
|
+
type: :development
|
135
|
+
prerelease: false
|
136
|
+
version_requirements: !ruby/object:Gem::Requirement
|
137
|
+
none: false
|
138
|
+
requirements:
|
139
|
+
- - ! '>='
|
140
|
+
- !ruby/object:Gem::Version
|
141
|
+
version: '0'
|
142
|
+
description: ! '
|
143
|
+
|
144
|
+
This is a simple easy-to-use Jenkins jobs launcher that uses jenkins_api_client.'
|
145
|
+
email:
|
146
|
+
- arangamani.kannan@gmail.com
|
147
|
+
executables:
|
148
|
+
- jlaunch
|
149
|
+
extensions: []
|
150
|
+
extra_rdoc_files:
|
151
|
+
- CHANGELOG.md
|
152
|
+
- README.md
|
153
|
+
files:
|
154
|
+
- .gitignore
|
155
|
+
- CHANGELOG.md
|
156
|
+
- Gemfile
|
157
|
+
- LICENCE
|
158
|
+
- README.md
|
159
|
+
- Rakefile
|
160
|
+
- bin/jlaunch
|
161
|
+
- config/sample.yml
|
162
|
+
- lib/jenkins_launcher.rb
|
163
|
+
- lib/jenkins_launcher/api_interface.rb
|
164
|
+
- lib/jenkins_launcher/cli.rb
|
165
|
+
- lib/jenkins_launcher/config_loader.rb
|
166
|
+
- lib/jenkins_launcher/version.rb
|
167
|
+
homepage: https://github.com/arangamani/jenkins_launcher
|
168
|
+
licenses: []
|
169
|
+
post_install_message:
|
170
|
+
rdoc_options: []
|
171
|
+
require_paths:
|
172
|
+
- lib
|
173
|
+
required_ruby_version: !ruby/object:Gem::Requirement
|
174
|
+
none: false
|
175
|
+
requirements:
|
176
|
+
- - ! '>='
|
177
|
+
- !ruby/object:Gem::Version
|
178
|
+
version: '0'
|
179
|
+
required_rubygems_version: !ruby/object:Gem::Requirement
|
180
|
+
none: false
|
181
|
+
requirements:
|
182
|
+
- - ! '>='
|
183
|
+
- !ruby/object:Gem::Version
|
184
|
+
version: '0'
|
185
|
+
requirements: []
|
186
|
+
rubyforge_project:
|
187
|
+
rubygems_version: 1.8.24
|
188
|
+
signing_key:
|
189
|
+
specification_version: 3
|
190
|
+
summary: Jenkins Jobs Launcher through Jenkins API Client
|
191
|
+
test_files: []
|