buildkite-builder 1.2.0 → 1.3.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: 2fafb5222b3bb1b03be360545674b957e7ecd2ec8d21ea4ac9ff59620626c584
4
- data.tar.gz: 0223fba9082408be91fc3a38fc2e2a6eaec74e4fb45ec9fa6b121edc10bff07f
3
+ metadata.gz: 6684f24ab3c156884bcd3055fbddbb7831afa03be9e0b0b2056fbedef023084b
4
+ data.tar.gz: 64753e7a15224a0b3c161335cfbc9046ecbaa5e015692ace78001eeef550eea3
5
5
  SHA512:
6
- metadata.gz: 9fa3c8ca51711531338492b8b2072b2f62fac4bfee34e81594423f25bab218b373182014a72dbcf0b274a004ae4bedf703a62403c1dd1d6b27dbbd040fe0d4da
7
- data.tar.gz: 8e33e6990c3c6c33a88d380a4d45fbd655848f790cce0a50758a960fab6ffb2cbc59bb359e083cbe072c51141e975bbeb528a7d4269b55dd5e87f52eb2541ce4
6
+ metadata.gz: 21b7f849f79acd215f260644f75767143bb10f2eeab88e0edee7c3728024f128b12f421ddd632ed4163fc0501f44051bc065594906d28643642839be934ac152
7
+ data.tar.gz: 5bfe120d20cb914525c61dba9ddec9b298058e6ccb01a5b6a4a55cccc95cff1fa993753cf65ba1041615d9adcb735ffb4545c7a58987a004cc3638b11d4eeba3
data/CHANGELOG.md CHANGED
@@ -0,0 +1,4 @@
1
+ ## 1.3.0
2
+ * Add ability for step to store data in step context
3
+ * Move `upload` from `BuildKite::Builder::Commands::Run` to `BuildKite::Builder::Context`
4
+ * Add ability to set custom artifacts in context and uplaod before `pipeile upload`
data/VERSION CHANGED
@@ -1 +1 @@
1
- 1.2.0
1
+ 1.3.0
@@ -1,7 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
- require 'tempfile'
4
-
5
3
  module Buildkite
6
4
  module Builder
7
5
  module Commands
@@ -18,41 +16,21 @@ module Buildkite
18
16
  # This entrypoint is for running on CI. It expects certain environment
19
17
  # variables to be set. It also uploads the pipeline to Buildkite.
20
18
  log.info "#{'+++ ' if Buildkite.env}🧰 " + 'Buildkite Builder'.color(:springgreen) + " ─ #{relative_pipeline_path.to_s.yellow}"
21
- context = Context.new(pipeline_path, logger: log)
22
-
23
- results = benchmark("\nDone (%s)".color(:springgreen)) do
24
- context.build
25
- end
26
- log.info(results)
27
-
28
- upload(context.pipeline)
19
+ Context.new(pipeline_path, logger: log).upload
29
20
  end
30
-
21
+
31
22
  private
32
23
 
33
24
  def pipeline_path
34
25
  pipeline_path_override || super
35
26
  end
36
-
27
+
37
28
  def pipeline_path_override
38
29
  if ENV['BUILDKITE_BUILDER_PIPELINE_PATH']
39
30
  path = Pathname.new(ENV['BUILDKITE_BUILDER_PIPELINE_PATH'])
40
31
  path.absolute? ? path : Builder.root.join(path)
41
32
  end
42
33
  end
43
-
44
- def upload(pipeline)
45
- # Upload the pipeline.
46
- Tempfile.create(['pipeline', '.yml']) do |file|
47
- file.sync = true
48
- file.write(pipeline.to_yaml)
49
-
50
- log.info '+++ :paperclip: Uploading artifact'
51
- Buildkite::Pipelines::Command.artifact!(:upload, file.path)
52
- log.info '+++ :pipeline: Uploading pipeline'
53
- Buildkite::Pipelines::Command.pipeline!(:upload, file.path)
54
- end
55
- end
56
34
  end
57
35
  end
58
36
  end
@@ -1,15 +1,19 @@
1
1
  require 'logger'
2
+ require 'tempfile'
2
3
 
3
4
  module Buildkite
4
5
  module Builder
5
6
  class Context
6
7
  include Definition::Helper
8
+ include LoggingUtils
9
+ using Rainbow
7
10
 
8
11
  PIPELINE_DEFINITION_FILE = Pathname.new('pipeline.rb').freeze
9
12
 
10
13
  attr_reader :logger
11
14
  attr_reader :root
12
15
  attr_reader :pipeline
16
+ attr_reader :artifacts
13
17
 
14
18
  def self.build(root, logger: nil)
15
19
  context = new(root, logger: logger)
@@ -20,22 +24,44 @@ module Buildkite
20
24
  def initialize(root, logger: nil)
21
25
  @root = root
22
26
  @logger = logger || Logger.new(File::NULL)
27
+ @artifacts = []
23
28
  end
24
29
 
25
30
  def build
26
- unless @pipeline
27
- @pipeline = Pipelines::Pipeline.new
28
-
29
- load_manifests
30
- load_templates
31
- load_processors
32
- load_pipeline
33
- run_processors
31
+ results = benchmark("\nDone (%s)".color(:springgreen)) do
32
+ unless @pipeline
33
+ @pipeline = Pipelines::Pipeline.new
34
+
35
+ load_manifests
36
+ load_templates
37
+ load_processors
38
+ load_pipeline
39
+ run_processors
40
+ end
34
41
  end
42
+ logger.info(results)
35
43
 
36
44
  @pipeline
37
45
  end
38
46
 
47
+ def upload
48
+ build unless @pipeline
49
+
50
+ logger.info '+++ :paperclip: Uploading artifacts'
51
+ upload_artifacts
52
+
53
+ # Upload the pipeline.
54
+ Tempfile.create(['pipeline', '.yml']) do |file|
55
+ file.sync = true
56
+ file.write(pipeline.to_yaml)
57
+
58
+ logger.info '+++ :paperclip: Uploading pipeline.yml as artifact'
59
+ Buildkite::Pipelines::Command.artifact!(:upload, file.path)
60
+ logger.info '+++ :pipeline: Uploading pipeline'
61
+ Buildkite::Pipelines::Command.pipeline!(:upload, file.path)
62
+ end
63
+ end
64
+
39
65
  private
40
66
 
41
67
  def load_manifests
@@ -60,6 +86,16 @@ module Buildkite
60
86
  end
61
87
  end
62
88
 
89
+ def upload_artifacts
90
+ return if artifacts.empty?
91
+
92
+ artifacts.each do |path|
93
+ if File.exist?(path)
94
+ Buildkite::Pipelines::Command.artifact!(:upload, path)
95
+ end
96
+ end
97
+ end
98
+
63
99
  def load_pipeline
64
100
  pipeline.instance_eval(&pipeline_definition)
65
101
  end
@@ -5,10 +5,12 @@ module Buildkite
5
5
  class StepContext
6
6
  attr_reader :step
7
7
  attr_reader :args
8
+ attr_reader :data
8
9
 
9
10
  def initialize(step, **args)
10
11
  @step = step
11
12
  @args = args
13
+ @data = {}
12
14
  end
13
15
 
14
16
  def pipeline
metadata CHANGED
@@ -1,15 +1,15 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: buildkite-builder
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.2.0
4
+ version: 1.3.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Ngan Pham
8
8
  - Andrew Lee
9
- autorequire:
9
+ autorequire:
10
10
  bindir: exe
11
11
  cert_chain: []
12
- date: 2021-02-19 00:00:00.000000000 Z
12
+ date: 2021-03-02 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: sorted_set
@@ -183,7 +183,7 @@ metadata:
183
183
  source_code_uri: https://github.com/Gusto/buildkite-builder
184
184
  changelog_uri: https://github.com/Gusto/buildkite-builder/blob/master/CHANGELOG.md
185
185
  bug_tracker_uri: https://github.com/Gusto/buildkite-builder/issues
186
- post_install_message:
186
+ post_install_message:
187
187
  rdoc_options: []
188
188
  require_paths:
189
189
  - lib
@@ -199,7 +199,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
199
199
  version: '0'
200
200
  requirements: []
201
201
  rubygems_version: 3.2.2
202
- signing_key:
202
+ signing_key:
203
203
  specification_version: 4
204
204
  summary: A gem for programmatically creating Buildkite pipelines.
205
205
  test_files: []