buildkite-builder 3.8.3 → 3.9.0
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.
- checksums.yaml +4 -4
- data/VERSION +1 -1
- data/lib/buildkite/builder/extensions/plugins.rb +47 -0
- data/lib/buildkite/builder/extensions/steps.rb +1 -8
- data/lib/buildkite/builder/extensions/sub_pipelines.rb +1 -4
- data/lib/buildkite/builder/extensions.rb +1 -0
- data/lib/buildkite/builder/group.rb +1 -4
- data/lib/buildkite/builder/pipeline.rb +1 -0
- data/lib/buildkite/builder/plugin.rb +7 -7
- data/lib/buildkite/builder/plugin_manager.rb +6 -13
- data/lib/buildkite/builder/step_collection.rb +1 -3
- data/lib/buildkite/builder.rb +0 -1
- data/lib/buildkite/pipelines/helpers/plugins.rb +1 -6
- metadata +4 -4
- data/lib/buildkite/builder/plugin_collection.rb +0 -49
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 38dd50aa0554deb37552ff778d49fd94bd4e22e242ae72ccf179fdcf3460cf25
|
4
|
+
data.tar.gz: a134a4f33462478c35b965c4dbbdb4451cfd4b383817150fc192301fada635af
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: '02599590709a1ca3f7e19da232889b3bf26ff316ff48dc10b8ec3751efc1e08c39a3bf05c6eee21bc2d6463b296d8d777d1d89f5b55abd6ad1667ec89925fa8f'
|
7
|
+
data.tar.gz: a8b4e2b45030b631e1bbb9da80954a7debc9d056945e1e57f36b1df51e88fa68812bb3c99e3826536df356a0520d3e0fe830aa98fd7bea7f88a02dece853253e
|
data/VERSION
CHANGED
@@ -1 +1 @@
|
|
1
|
-
3.
|
1
|
+
3.9.0
|
@@ -0,0 +1,47 @@
|
|
1
|
+
module Buildkite
|
2
|
+
module Builder
|
3
|
+
module Extensions
|
4
|
+
class Plugins < Extension
|
5
|
+
attr_reader :manager
|
6
|
+
|
7
|
+
dsl do
|
8
|
+
def plugin(name, uri, default_attributes = {})
|
9
|
+
context.extensions.find(Buildkite::Builder::Extensions::Plugins).manager.add(name, uri, default_attributes)
|
10
|
+
end
|
11
|
+
end
|
12
|
+
|
13
|
+
def prepare
|
14
|
+
@manager = PluginManager.new
|
15
|
+
end
|
16
|
+
|
17
|
+
def build
|
18
|
+
context.data.steps.each(:command) do |step|
|
19
|
+
next unless step.has?(:plugins)
|
20
|
+
|
21
|
+
step.get(:plugins).map! do |plugin|
|
22
|
+
resource, attributes = extract_resource_and_attributes(plugin)
|
23
|
+
resource.is_a?(Symbol) ? manager.build(resource, attributes) : plugin
|
24
|
+
end
|
25
|
+
end
|
26
|
+
|
27
|
+
context.data.pipelines.each do |pipeline|
|
28
|
+
pipeline.data.steps.each(:command) do |step|
|
29
|
+
next unless step.has?(:plugins)
|
30
|
+
|
31
|
+
step.get(:plugins).map! do |plugin|
|
32
|
+
resource, attributes = extract_resource_and_attributes(plugin)
|
33
|
+
resource.is_a?(Symbol) ? manager.build(resource, attributes) : plugin
|
34
|
+
end
|
35
|
+
end
|
36
|
+
end
|
37
|
+
end
|
38
|
+
|
39
|
+
private
|
40
|
+
|
41
|
+
def extract_resource_and_attributes(plugin)
|
42
|
+
[plugin.keys.first, plugin.values.first]
|
43
|
+
end
|
44
|
+
end
|
45
|
+
end
|
46
|
+
end
|
47
|
+
end
|
@@ -3,10 +3,7 @@ module Buildkite
|
|
3
3
|
module Extensions
|
4
4
|
class Steps < Extension
|
5
5
|
def prepare
|
6
|
-
context.data.steps = StepCollection.new(
|
7
|
-
TemplateManager.new(context.root),
|
8
|
-
PluginManager.new
|
9
|
-
)
|
6
|
+
context.data.steps = StepCollection.new(TemplateManager.new(context.root))
|
10
7
|
end
|
11
8
|
|
12
9
|
dsl do
|
@@ -21,10 +18,6 @@ module Buildkite
|
|
21
18
|
context.data.steps.push(Buildkite::Builder::Group.new(label, context, &block))
|
22
19
|
end
|
23
20
|
|
24
|
-
def plugin(name, uri, default_attributes = {})
|
25
|
-
context.data.steps.plugins.add(name, uri, default_attributes)
|
26
|
-
end
|
27
|
-
|
28
21
|
def block(template = nil, **args, &block)
|
29
22
|
context.data.steps.add(Pipelines::Steps::Block, template, **args, &block)
|
30
23
|
end
|
@@ -28,10 +28,7 @@ module Buildkite
|
|
28
28
|
@context = context
|
29
29
|
@name = name
|
30
30
|
@data = Data.new
|
31
|
-
@data.steps = StepCollection.new(
|
32
|
-
context.data.steps.templates,
|
33
|
-
context.data.steps.plugins
|
34
|
-
)
|
31
|
+
@data.steps = StepCollection.new(context.data.steps.templates)
|
35
32
|
@data.notify = []
|
36
33
|
@data.env = {}
|
37
34
|
|
@@ -8,6 +8,7 @@ module Buildkite
|
|
8
8
|
autoload :Notify, File.expand_path('extensions/notify', __dir__)
|
9
9
|
autoload :SubPipelines, File.expand_path('extensions/sub_pipelines', __dir__)
|
10
10
|
autoload :Steps, File.expand_path('extensions/steps', __dir__)
|
11
|
+
autoload :Plugins, File.expand_path('extensions/plugins', __dir__)
|
11
12
|
autoload :Use, File.expand_path('extensions/use', __dir__)
|
12
13
|
end
|
13
14
|
end
|
@@ -16,10 +16,7 @@ module Buildkite
|
|
16
16
|
def initialize(label, context, &block)
|
17
17
|
@label = label
|
18
18
|
@data = Data.new
|
19
|
-
@data.steps = StepCollection.new(
|
20
|
-
context.data.steps.templates,
|
21
|
-
context.data.steps.plugins
|
22
|
-
)
|
19
|
+
@data.steps = StepCollection.new(context.data.steps.templates)
|
23
20
|
@data.notify = []
|
24
21
|
|
25
22
|
# Use `clone` to copy over dsl's extended extensions
|
@@ -3,16 +3,16 @@
|
|
3
3
|
module Buildkite
|
4
4
|
module Builder
|
5
5
|
class Plugin
|
6
|
-
attr_reader
|
6
|
+
attr_reader \
|
7
|
+
:uri,
|
8
|
+
:source,
|
9
|
+
:version,
|
10
|
+
:default_attributes
|
7
11
|
|
8
|
-
def initialize(uri,
|
12
|
+
def initialize(uri, default_attributes = {})
|
9
13
|
@uri = uri
|
10
14
|
@source, @version = uri.split('#')
|
11
|
-
@
|
12
|
-
end
|
13
|
-
|
14
|
-
def to_h
|
15
|
-
Buildkite::Pipelines::Helpers.sanitize(uri => (attributes&.empty? ? nil : attributes))
|
15
|
+
@default_attributes = default_attributes
|
16
16
|
end
|
17
17
|
end
|
18
18
|
end
|
@@ -7,23 +7,16 @@ module Buildkite
|
|
7
7
|
|
8
8
|
def add(name, uri, default_attributes = {})
|
9
9
|
name = name.to_s
|
10
|
+
raise(ArgumentError, "Plugin already defined: #{name}") if @plugins.key?(name)
|
10
11
|
|
11
|
-
|
12
|
-
raise ArgumentError, "Plugin already defined: #{name}"
|
13
|
-
end
|
14
|
-
|
15
|
-
@plugins[name] = {
|
16
|
-
uri: uri,
|
17
|
-
default_attributes: default_attributes
|
18
|
-
}
|
12
|
+
@plugins[name] = Plugin.new(uri, default_attributes)
|
19
13
|
end
|
20
14
|
|
21
|
-
def
|
22
|
-
@plugins[name]
|
23
|
-
|
15
|
+
def build(name, attributes = {})
|
16
|
+
plugin = @plugins[name.to_s]
|
17
|
+
raise(ArgumentError, "Plugin is not registered: #{resource}") unless plugin
|
24
18
|
|
25
|
-
|
26
|
-
# No-op
|
19
|
+
{ plugin.uri => plugin.default_attributes.merge(attributes) }
|
27
20
|
end
|
28
21
|
end
|
29
22
|
end
|
@@ -2,12 +2,10 @@ module Buildkite
|
|
2
2
|
module Builder
|
3
3
|
class StepCollection
|
4
4
|
attr_reader :templates
|
5
|
-
attr_reader :plugins
|
6
5
|
attr_reader :steps
|
7
6
|
|
8
|
-
def initialize(templates
|
7
|
+
def initialize(templates)
|
9
8
|
@templates = templates
|
10
|
-
@plugins = plugins
|
11
9
|
@steps = []
|
12
10
|
end
|
13
11
|
|
data/lib/buildkite/builder.rb
CHANGED
@@ -18,7 +18,6 @@ module Buildkite
|
|
18
18
|
autoload :Processors, File.expand_path('builder/processors', __dir__)
|
19
19
|
autoload :Rainbow, File.expand_path('builder/rainbow', __dir__)
|
20
20
|
autoload :Plugin, File.expand_path('builder/plugin', __dir__)
|
21
|
-
autoload :PluginCollection, File.expand_path('builder/plugin_collection', __dir__)
|
22
21
|
autoload :StepCollection, File.expand_path('builder/step_collection', __dir__)
|
23
22
|
autoload :PipelineCollection, File.expand_path('builder/pipeline_collection', __dir__)
|
24
23
|
autoload :TemplateManager, File.expand_path('builder/template_manager', __dir__)
|
@@ -5,12 +5,7 @@ module Buildkite
|
|
5
5
|
module Helpers
|
6
6
|
module Plugins
|
7
7
|
def plugin(name_or_source, plugin_attributes = {})
|
8
|
-
|
9
|
-
attributes['plugins'].add(name_or_source, plugin_attributes)
|
10
|
-
end
|
11
|
-
|
12
|
-
def plugins
|
13
|
-
attributes['plugins']
|
8
|
+
append(:plugins, { name_or_source => plugin_attributes })
|
14
9
|
end
|
15
10
|
end
|
16
11
|
end
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: buildkite-builder
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 3.
|
4
|
+
version: 3.9.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Ngan Pham
|
@@ -9,7 +9,7 @@ authors:
|
|
9
9
|
autorequire:
|
10
10
|
bindir: exe
|
11
11
|
cert_chain: []
|
12
|
-
date: 2022-12-
|
12
|
+
date: 2022-12-12 00:00:00.000000000 Z
|
13
13
|
dependencies:
|
14
14
|
- !ruby/object:Gem::Dependency
|
15
15
|
name: rainbow
|
@@ -113,6 +113,7 @@ files:
|
|
113
113
|
- lib/buildkite/builder/extensions/env.rb
|
114
114
|
- lib/buildkite/builder/extensions/lib.rb
|
115
115
|
- lib/buildkite/builder/extensions/notify.rb
|
116
|
+
- lib/buildkite/builder/extensions/plugins.rb
|
116
117
|
- lib/buildkite/builder/extensions/steps.rb
|
117
118
|
- lib/buildkite/builder/extensions/sub_pipelines.rb
|
118
119
|
- lib/buildkite/builder/extensions/use.rb
|
@@ -125,7 +126,6 @@ files:
|
|
125
126
|
- lib/buildkite/builder/pipeline.rb
|
126
127
|
- lib/buildkite/builder/pipeline_collection.rb
|
127
128
|
- lib/buildkite/builder/plugin.rb
|
128
|
-
- lib/buildkite/builder/plugin_collection.rb
|
129
129
|
- lib/buildkite/builder/plugin_manager.rb
|
130
130
|
- lib/buildkite/builder/rainbow.rb
|
131
131
|
- lib/buildkite/builder/step_collection.rb
|
@@ -177,7 +177,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
177
177
|
- !ruby/object:Gem::Version
|
178
178
|
version: '0'
|
179
179
|
requirements: []
|
180
|
-
rubygems_version: 3.3.
|
180
|
+
rubygems_version: 3.3.26
|
181
181
|
signing_key:
|
182
182
|
specification_version: 4
|
183
183
|
summary: A gem for programmatically creating Buildkite pipelines.
|
@@ -1,49 +0,0 @@
|
|
1
|
-
module Buildkite
|
2
|
-
module Builder
|
3
|
-
class PluginCollection
|
4
|
-
attr_reader :plugin_manager
|
5
|
-
|
6
|
-
def initialize(plugin_manager)
|
7
|
-
@plugin_manager = plugin_manager
|
8
|
-
@collection = []
|
9
|
-
end
|
10
|
-
|
11
|
-
def add(resource, attributes = {})
|
12
|
-
plugin =
|
13
|
-
case resource
|
14
|
-
when Symbol
|
15
|
-
registered_plugin = plugin_manager.fetch(resource.to_s)
|
16
|
-
|
17
|
-
raise ArgumentError, "Plugin `#{resource}` does not exist" unless registered_plugin
|
18
|
-
|
19
|
-
Plugin.new(registered_plugin[:uri], registered_plugin[:default_attributes].merge(attributes))
|
20
|
-
when String
|
21
|
-
Plugin.new(resource, attributes)
|
22
|
-
when Plugin
|
23
|
-
resource
|
24
|
-
else
|
25
|
-
raise ArgumentError, "Unknown plugin `#{resource.inspect}`"
|
26
|
-
end
|
27
|
-
|
28
|
-
@collection.push(plugin).last
|
29
|
-
end
|
30
|
-
|
31
|
-
def find(source)
|
32
|
-
source_string =
|
33
|
-
case source
|
34
|
-
when String then source
|
35
|
-
when Plugin then source.source
|
36
|
-
else raise ArgumentError, "Unknown source #{source.inspect}"
|
37
|
-
end
|
38
|
-
|
39
|
-
@collection.select do |plugin|
|
40
|
-
plugin.source == source_string
|
41
|
-
end
|
42
|
-
end
|
43
|
-
|
44
|
-
def to_definition
|
45
|
-
@collection.map(&:to_h)
|
46
|
-
end
|
47
|
-
end
|
48
|
-
end
|
49
|
-
end
|