buildkite-builder 1.2.0 → 1.3.0

Sign up to get free protection for your applications and to get access to all the features.
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: []