jenkins-plugin-runtime 0.1.4 → 0.1.5

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
data/.travis.yml CHANGED
@@ -4,3 +4,4 @@ notifications:
4
4
  recipients:
5
5
  - cowboyd@thefrontside.net
6
6
  - kk@kohsuke.org
7
+ - nakahiro@gmail.com
@@ -21,10 +21,9 @@ Gem::Specification.new do |s|
21
21
 
22
22
  s.add_dependency "json"
23
23
 
24
- s.add_development_dependency "rake"
24
+ s.add_development_dependency "rake", "0.8.7"
25
25
  s.add_development_dependency "rspec", "~> 2.0"
26
26
  s.add_development_dependency "rspec-spies"
27
- s.add_development_dependency "cucumber", "~> 1.0"
28
27
  s.add_development_dependency "jenkins-war"
29
28
 
30
29
  end
@@ -3,13 +3,20 @@ module Jenkins
3
3
 
4
4
  # Launch processes on build slaves. No functionality is currently exposed
5
5
  class Launcher
6
- # the nantive hudson.Launcher object
6
+ # the native hudson.Launcher object
7
7
  attr_reader :native
8
8
 
9
9
  def initialize(native = nil)
10
10
  @native = native
11
11
  end
12
12
 
13
+ # TODO: wrap needed.
14
+ # Do we really wrap whole Launcher.ProcStarter things?
15
+ # Or create our own Launcher (must support remote, local, etc)
16
+ def launch
17
+ @native.launch()
18
+ end
19
+
13
20
  Plugin::Proxies.register self, Java.hudson.Launcher
14
21
  end
15
- end
22
+ end
@@ -13,6 +13,18 @@ module Jenkins
13
13
  @native = native
14
14
  end
15
15
 
16
+ def build_var
17
+ @native.getBuildVariables()
18
+ end
19
+
20
+ def env(listener = nil)
21
+ if listener
22
+ # TODO: not tested. dump to listener?
23
+ listener = Plugin.instance.export(listener)
24
+ end
25
+ @native.getEnvironment(listener)
26
+ end
27
+
16
28
  Jenkins::Plugin::Proxies.register self, Java.hudson.model.AbstractBuild
17
29
  end
18
30
 
@@ -22,9 +22,9 @@ module Jenkins
22
22
  properties = JSON.parse(form.toString(2))
23
23
  properties.delete("kind")
24
24
  properties.delete("stapler-class")
25
- instance = @plugin.export(construct(properties))
26
- puts "instance created: #{instance}"
27
- return instance
25
+ instance = construct(properties)
26
+ puts "instance created: #{instance} (#{@java_type})"
27
+ return @plugin.export(instance)
28
28
  end
29
29
 
30
30
  private
@@ -8,14 +8,18 @@ module Jenkins
8
8
  include Java.jenkins.ruby.Get
9
9
  include Jenkins::Plugin::Proxy
10
10
 
11
- def prebuild(build, launcher, listener)
12
- @object.prebuild(import(build), import(launcher), import(listener)) ? true : false
11
+ def prebuild(build, listener)
12
+ @object.prebuild(import(build), import(listener)) ? true : false
13
13
  end
14
14
 
15
15
  def perform(build, launcher, listener)
16
16
  @object.perform(import(build), import(launcher), import(listener)) ? true : false
17
17
  end
18
18
 
19
+ def getDescriptor
20
+ @plugin.descriptors[@object.class]
21
+ end
22
+
19
23
  def get(name)
20
24
  @object.respond_to?(name) ? @object.send(name) : nil
21
25
  end
@@ -1,7 +1,7 @@
1
1
  module Jenkins
2
2
  class Plugin
3
3
  module Runtime
4
- VERSION = "0.1.4"
4
+ VERSION = "0.1.5"
5
5
  end
6
6
  end
7
7
  end
@@ -1,4 +1,5 @@
1
1
  require 'jenkins/plugin'
2
+ require 'jenkins/plugin/specification'
2
3
  require 'jenkins/plugin/runtime/version'
3
4
  require 'jenkins/plugin/proxy'
4
5
  require 'jenkins/plugin/proxies'
@@ -0,0 +1,49 @@
1
+
2
+ require 'pathname'
3
+
4
+ module Jenkins
5
+ class Plugin
6
+ class Specification
7
+
8
+ # The name of this plugin. Will be used as a globally
9
+ # unique identifier inside the Jenkins server
10
+ attr_accessor :name
11
+
12
+ # Plugin version. This is used during dependency resolution
13
+ attr_accessor :version
14
+
15
+ # Free form text description of the plugin. No character limit, but please, keep it civil.
16
+ attr_accessor :description
17
+
18
+ # A hash of dependencies, like 'foo' => '1.2.3', 'bar' => '0.0.1'
19
+ # Our dependency handling is not smart (yet).
20
+ attr_accessor :dependencies
21
+
22
+ def initialize
23
+ @dependencies = {}
24
+ yield(self) if block_given?
25
+ end
26
+
27
+ # Adds `plugin_name` as a pre-requisite of
28
+ # this plugin. This can be the name of any Jenkins plugin
29
+ # written in Ruby, Java, or any other language. Version right
30
+ # now must be an *exact* version number.
31
+ def depends_on(plugin_name, version)
32
+ dependencies[plugin_name] = version
33
+ end
34
+
35
+ # Make sure that your specification is not corrupt.
36
+ def validate!
37
+ [:name, :version, :description].each do |field|
38
+ fail SpecificationError, "field may not be nil" unless send(field)
39
+ end
40
+ end
41
+
42
+ def self.load(path)
43
+ eval(File.read(path), binding, path, 1)
44
+ end
45
+ end
46
+
47
+ SpecificationError = Class.new(StandardError)
48
+ end
49
+ end
@@ -5,4 +5,7 @@ describe Jenkins::Model::Build do
5
5
  it "can be instantiated" do
6
6
  Jenkins::Model::Build.new(mock(Java.hudson.model.AbstractBuild))
7
7
  end
8
+
9
+ # TODO: spec for build_var and env
10
+ # Just a mocking and method invocation checks are enough?
8
11
  end
@@ -0,0 +1,6 @@
1
+
2
+ Jenkins::Plugin::Specification.new do |plugin|
3
+ plugin.name = 'the-name'
4
+ plugin.version = '1.0.0'
5
+ plugin.description = 'one great plugin'
6
+ end
@@ -10,8 +10,8 @@ describe Jenkins::Plugin::Proxies::Builder do
10
10
 
11
11
  describe "prebuild" do
12
12
  it "calls through to its implementation" do
13
- @object.should_receive(:prebuild).with(@build, @launcher, @listener)
14
- @builder.prebuild(@jBuild, @jLauncher, @jListener)
13
+ @object.should_receive(:prebuild).with(@build, @listener)
14
+ @builder.prebuild(@jBuild, @jListener)
15
15
  end
16
16
  end
17
17
 
@@ -0,0 +1,28 @@
1
+ require 'spec_helper'
2
+
3
+ describe Jenkins::Plugin::Specification do
4
+ it "is invalid by default" do
5
+ expect {subject.validate!}.should raise_error Jenkins::Plugin::SpecificationError
6
+ end
7
+
8
+ describe "when name, version and desc are set" do
9
+ before do
10
+ subject.tap do |spec|
11
+ spec.name = 'my-plugin'
12
+ spec.version = "0.0.1"
13
+ spec.description = "test plugin"
14
+ end
15
+ end
16
+ it "is valid" do
17
+ subject.validate!.should be_true
18
+ end
19
+ end
20
+
21
+ describe "a spec loaded from a file" do
22
+ subject {Jenkins::Plugin::Specification.load(Pathname(__FILE__).dirname.join('example.pluginspec'))}
23
+ its(:name) {should eql "the-name"}
24
+ its(:version) {should eql "1.0.0"}
25
+ its(:description) {should eql "one great plugin"}
26
+ its(:dependencies) {should be_empty}
27
+ end
28
+ end
metadata CHANGED
@@ -2,7 +2,7 @@
2
2
  name: jenkins-plugin-runtime
3
3
  version: !ruby/object:Gem::Version
4
4
  prerelease:
5
- version: 0.1.4
5
+ version: 0.1.5
6
6
  platform: ruby
7
7
  authors:
8
8
  - Charles Lowell
@@ -10,7 +10,7 @@ autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
12
 
13
- date: 2011-09-13 00:00:00 -05:00
13
+ date: 2011-09-16 00:00:00 -05:00
14
14
  default_executable:
15
15
  dependencies:
16
16
  - !ruby/object:Gem::Dependency
@@ -30,9 +30,9 @@ dependencies:
30
30
  requirement: &id002 !ruby/object:Gem::Requirement
31
31
  none: false
32
32
  requirements:
33
- - - ">="
33
+ - - "="
34
34
  - !ruby/object:Gem::Version
35
- version: "0"
35
+ version: 0.8.7
36
36
  type: :development
37
37
  version_requirements: *id002
38
38
  - !ruby/object:Gem::Dependency
@@ -57,28 +57,17 @@ dependencies:
57
57
  version: "0"
58
58
  type: :development
59
59
  version_requirements: *id004
60
- - !ruby/object:Gem::Dependency
61
- name: cucumber
62
- prerelease: false
63
- requirement: &id005 !ruby/object:Gem::Requirement
64
- none: false
65
- requirements:
66
- - - ~>
67
- - !ruby/object:Gem::Version
68
- version: "1.0"
69
- type: :development
70
- version_requirements: *id005
71
60
  - !ruby/object:Gem::Dependency
72
61
  name: jenkins-war
73
62
  prerelease: false
74
- requirement: &id006 !ruby/object:Gem::Requirement
63
+ requirement: &id005 !ruby/object:Gem::Requirement
75
64
  none: false
76
65
  requirements:
77
66
  - - ">="
78
67
  - !ruby/object:Gem::Version
79
68
  version: "0"
80
69
  type: :development
81
- version_requirements: *id006
70
+ version_requirements: *id005
82
71
  description: I'll think of a better description later, but if you're reading this, then I haven't
83
72
  email:
84
73
  - cowboyd@thefrontside.net
@@ -103,13 +92,13 @@ files:
103
92
  - lib/jenkins/model/listener.rb
104
93
  - lib/jenkins/model/root_action.rb
105
94
  - lib/jenkins/plugin.rb
106
- - lib/jenkins/plugin/cli.rb
107
95
  - lib/jenkins/plugin/proxies.rb
108
96
  - lib/jenkins/plugin/proxies/build_wrapper.rb
109
97
  - lib/jenkins/plugin/proxies/builder.rb
110
98
  - lib/jenkins/plugin/proxy.rb
111
99
  - lib/jenkins/plugin/runtime.rb
112
100
  - lib/jenkins/plugin/runtime/version.rb
101
+ - lib/jenkins/plugin/specification.rb
113
102
  - lib/jenkins/rack.rb
114
103
  - lib/jenkins/slaves/cloud.rb
115
104
  - lib/jenkins/tasks/build_wrapper.rb
@@ -120,11 +109,13 @@ files:
120
109
  - spec/jenkins/model/describable_spec.rb
121
110
  - spec/jenkins/model/listener_spec.rb
122
111
  - spec/jenkins/model_spec.rb
112
+ - spec/jenkins/plugin/example.pluginspec
123
113
  - spec/jenkins/plugin/proxies/build_wrapper_spec.rb
124
114
  - spec/jenkins/plugin/proxies/builder_spec.rb
125
115
  - spec/jenkins/plugin/proxies/proxy_helper.rb
126
116
  - spec/jenkins/plugin/proxies_spec.rb
127
117
  - spec/jenkins/plugin/proxy_spec.rb
118
+ - spec/jenkins/plugin/specification_spec.rb
128
119
  - spec/jenkins/plugin_spec.rb
129
120
  - spec/jenkins/tasks/build_wrapper_spec.rb
130
121
  - spec/jenkins/tasks/builder_spec.rb
@@ -166,11 +157,13 @@ test_files:
166
157
  - spec/jenkins/model/describable_spec.rb
167
158
  - spec/jenkins/model/listener_spec.rb
168
159
  - spec/jenkins/model_spec.rb
160
+ - spec/jenkins/plugin/example.pluginspec
169
161
  - spec/jenkins/plugin/proxies/build_wrapper_spec.rb
170
162
  - spec/jenkins/plugin/proxies/builder_spec.rb
171
163
  - spec/jenkins/plugin/proxies/proxy_helper.rb
172
164
  - spec/jenkins/plugin/proxies_spec.rb
173
165
  - spec/jenkins/plugin/proxy_spec.rb
166
+ - spec/jenkins/plugin/specification_spec.rb
174
167
  - spec/jenkins/plugin_spec.rb
175
168
  - spec/jenkins/tasks/build_wrapper_spec.rb
176
169
  - spec/jenkins/tasks/builder_spec.rb
@@ -1,20 +0,0 @@
1
-
2
- require 'thor'
3
-
4
- module Jenkins
5
- module Plugins
6
- class CLI < Thor
7
-
8
-
9
- desc "init", "Create a new Jenkins plugin"
10
- def init
11
-
12
- end
13
-
14
- desc "gen", "generate extension boilerplate"
15
- def gen
16
-
17
- end
18
- end
19
- end
20
- end