buildkite-builder 4.16.0 → 4.18.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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 172d487569f8e831c7bcf805de5fca900c0dab583c50603568f55c17d3b084f2
4
- data.tar.gz: '0387cef9a6b60e14ff31bb14067532031d8359cf6863c42a788248e299d0245a'
3
+ metadata.gz: b35cda668c919aa133b9789085de5ecb4c285336b14613251b019df092a88cff
4
+ data.tar.gz: 6a4a74637c721e677072e656872265c086d5f2dd969dd5396df57f5a7ac2f9dd
5
5
  SHA512:
6
- metadata.gz: 9d740a6fe4e69ee34877f806fa3c672c2365f07bbc76cd59ba36020991be5b8cd4309158f81d45e9a1b54013d35952b829eab1f229e39f4aca9ba8b5e84bd029
7
- data.tar.gz: d9fb64137ae3274bdd4cd87727d41b919f987a1b21f9dadef497973d51e136cc3db03cc8962a04da96eaf0eec9a1a748022c44532c52a3c4173a71c3cd67da40
6
+ metadata.gz: 6e44c665a44cde92d9cf26cfc0735d95bedaa0c2acb547e48a39b17aaf4e5a941935013079fe15e239af084d183af1723841bcfe56b432b0acce6be2f02b9b53
7
+ data.tar.gz: 54dd9bc5ce7e1d383e0f1223469e0a22a0418c0e8e74af3face8e1ac3fe386cabad78b3fec1bb01bbe7d66b3a3713e775562cb43f55b3697805ca2b85dbe017a
data/CHANGELOG.md CHANGED
@@ -1,3 +1,9 @@
1
+ ### 4.18.0
2
+ * Support template definition within extensions.
3
+
4
+ ### 4.17.0
5
+ * Add support for `notify` attribute in command steps.
6
+
1
7
  ### 4.13.0
2
8
  * Public send keys for wait step.
3
9
 
data/README.md CHANGED
@@ -27,9 +27,17 @@ As with every Buildkite pipeline, you'll need to define the initial pipeline ste
27
27
  ```yaml
28
28
  steps:
29
29
  - label: ":toolbox:"
30
+ key: "buildkite-builder"
31
+ retry:
32
+ automatic:
33
+ - exit_status: -1 # Agent was lost
34
+ limit: 2
35
+ - exit_status: 255 # Forced agent shutdown
36
+ limit: 2
30
37
  plugins:
31
- - docker#v3.7.0:
32
- image: gusto/buildkite-builder:2.1.0
38
+ - docker#v5.12.0:
39
+ image: "gusto/buildkite-builder:4.13.0"
40
+ mount-buildkite-agent: true
33
41
  propagate-environment: true
34
42
  ```
35
43
 
data/VERSION CHANGED
@@ -1 +1 @@
1
- 4.16.0
1
+ 4.18.0
data/bin/release ADDED
@@ -0,0 +1,20 @@
1
+ #!/usr/bin/env bash
2
+ set -euo pipefail
3
+
4
+ version=$(<VERSION)
5
+ version=$(echo "$version" | xargs) # Trim whitespace
6
+
7
+ echo "💎 Build and push gem"
8
+ GEM_HOST_API_KEY=$(buildkite-agent secret get RUBYGEMS_API_TOKEN) docker buildx build --secret id=gem-host-api-key,env=GEM_HOST_API_KEY --target gem .
9
+
10
+ echo "🐳 Logging in to DockerHub"
11
+ buildkite-agent secret get DOCKERHUB_PASSWORD | docker login --username zpadmin --password-stdin
12
+
13
+ echo "🔨 Building and pushing docker image for release of Buildkite Builder version $version"
14
+ docker build --tag=gusto/buildkite-builder:"$version" \
15
+ --target release \
16
+ --platform linux/x86_64 \
17
+ --build-arg version="$version" \
18
+ --push .
19
+
20
+ echo "✅ Done!"
@@ -3,11 +3,26 @@
3
3
  module Buildkite
4
4
  module Builder
5
5
  class Extension
6
+
6
7
  class << self
7
8
  def dsl(&block)
8
9
  @dsl = Module.new(&block) if block_given?
9
10
  @dsl
10
11
  end
12
+
13
+ def template(name = :default, &block)
14
+ name = name.to_s
15
+
16
+ if block_given? && templates.key?(name)
17
+ raise ArgumentError, "Template #{name} already registered in #{self.name}"
18
+ end
19
+
20
+ templates[name] ||= ExtensionTemplate.new(self, name, block)
21
+ end
22
+
23
+ def templates
24
+ @templates ||= {}
25
+ end
11
26
  end
12
27
 
13
28
  attr_reader :context
@@ -0,0 +1,13 @@
1
+ module Buildkite
2
+ module Builder
3
+ class ExtensionTemplate
4
+ attr_reader :extension_class, :name, :block
5
+
6
+ def initialize(extension_class, name, block)
7
+ @extension_class = extension_class
8
+ @name = name
9
+ @block = block
10
+ end
11
+ end
12
+ end
13
+ end
@@ -10,7 +10,7 @@ module Buildkite
10
10
  end
11
11
 
12
12
  def build_step(step_class, template_name, **args, &block)
13
- template = @templates.find(template_name)
13
+ template = find_template(template_name)
14
14
 
15
15
  step_class.new(**args).tap do |step|
16
16
  step.process(template) if template
@@ -35,6 +35,25 @@ module Buildkite
35
35
  @current_group = nil
36
36
  end
37
37
 
38
+ private
39
+
40
+ def find_template(template_name)
41
+ case template_name
42
+ when Buildkite::Builder::ExtensionTemplate
43
+ template_name.block
44
+ when Class
45
+ unless context.extensions.all.include?(template_name)
46
+ raise ArgumentError, "#{template_name} extension is not registered"
47
+ end
48
+
49
+ if template_name < Buildkite::Builder::Extension
50
+ find_template(context.extensions.find(template_name).class.template)
51
+ end
52
+ else
53
+ @templates.find(template_name)
54
+ end
55
+ end
56
+
38
57
  dsl do
39
58
  def group(&block)
40
59
  context.extensions.find(Steps).with_group(Pipelines::Steps::Group.new(context), &block)
@@ -10,6 +10,7 @@ module Buildkite
10
10
  autoload :Data, File.expand_path('builder/data', __dir__)
11
11
  autoload :Dsl, File.expand_path('builder/dsl', __dir__)
12
12
  autoload :Extension, File.expand_path('builder/extension', __dir__)
13
+ autoload :ExtensionTemplate, File.expand_path('builder/extension_template', __dir__)
13
14
  autoload :ExtensionManager, File.expand_path('builder/extension_manager', __dir__)
14
15
  autoload :Extensions, File.expand_path('builder/extensions', __dir__)
15
16
  autoload :Loaders, File.expand_path('builder/loaders', __dir__)
@@ -26,6 +26,7 @@ module Buildkite
26
26
  attribute :plugins, append: true
27
27
  attribute :priority
28
28
  attribute :cancel_on_build_failing
29
+ attribute :notify, append: true
29
30
  end
30
31
  end
31
32
  end
metadata CHANGED
@@ -1,14 +1,15 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: buildkite-builder
3
3
  version: !ruby/object:Gem::Version
4
- version: 4.16.0
4
+ version: 4.18.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Ngan Pham
8
8
  - Andrew Lee
9
+ autorequire:
9
10
  bindir: exe
10
11
  cert_chain: []
11
- date: 2025-01-08 00:00:00.000000000 Z
12
+ date: 2025-05-21 00:00:00.000000000 Z
12
13
  dependencies:
13
14
  - !ruby/object:Gem::Dependency
14
15
  name: rainbow
@@ -109,6 +110,7 @@ files:
109
110
  - VERSION
110
111
  - bin/buildkite-builder
111
112
  - bin/console
113
+ - bin/release
112
114
  - bin/setup
113
115
  - exe/buildkite-builder
114
116
  - lib/buildkite-builder.rb
@@ -122,6 +124,7 @@ files:
122
124
  - lib/buildkite/builder/dsl.rb
123
125
  - lib/buildkite/builder/extension.rb
124
126
  - lib/buildkite/builder/extension_manager.rb
127
+ - lib/buildkite/builder/extension_template.rb
125
128
  - lib/buildkite/builder/extensions.rb
126
129
  - lib/buildkite/builder/extensions/agents.rb
127
130
  - lib/buildkite/builder/extensions/env.rb
@@ -172,6 +175,7 @@ metadata:
172
175
  source_code_uri: https://github.com/Gusto/buildkite-builder
173
176
  changelog_uri: https://github.com/Gusto/buildkite-builder/blob/master/CHANGELOG.md
174
177
  bug_tracker_uri: https://github.com/Gusto/buildkite-builder/issues
178
+ post_install_message:
175
179
  rdoc_options: []
176
180
  require_paths:
177
181
  - lib
@@ -186,7 +190,8 @@ required_rubygems_version: !ruby/object:Gem::Requirement
186
190
  - !ruby/object:Gem::Version
187
191
  version: '0'
188
192
  requirements: []
189
- rubygems_version: 3.6.2
193
+ rubygems_version: 3.5.22
194
+ signing_key:
190
195
  specification_version: 4
191
196
  summary: A gem for programmatically creating Buildkite pipelines.
192
197
  test_files: []