yast-rake 0.2.41 → 0.2.42
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:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: fb204b6229ee0b7fa908d64fd928e5f071e1f29f11ffb991d051c2f247d8bc02
|
4
|
+
data.tar.gz: 9c49cd7705d06f94a2eaf8dc2e15add41bab65dccb0cd4fa4bcbd853153f15d5
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 13f7ba78e61769db2e6eb702631ce6caa25e0e65c355dfd060fb71b10a1e1077a158d4387841a1c7893631e3af9e5784ca0886ef057314047872c21c928dadca
|
7
|
+
data.tar.gz: acf04f3a336c6d0f2897dbfee0b064f0c1a5dd74b46213541d778f35767cae04a433f08fb0e5d7ea9278a17d814e48dff790443fc9955fca53f85a5d4281ce73
|
data/VERSION
CHANGED
@@ -1 +1 @@
|
|
1
|
-
0.2.
|
1
|
+
0.2.42
|
@@ -28,8 +28,7 @@ class ContainerRunner
|
|
28
28
|
# @param client [String,nil] the client name, nil or empty string = find
|
29
29
|
# the client automatically
|
30
30
|
def run(client)
|
31
|
-
|
32
|
-
container = GithubActions::Container.new(image)
|
31
|
+
container = find_container
|
33
32
|
container.pull
|
34
33
|
container.start
|
35
34
|
container.copy_current_dir
|
@@ -44,16 +43,16 @@ private
|
|
44
43
|
|
45
44
|
# find the Docker image to use in the container
|
46
45
|
# @return [String] the image name
|
47
|
-
def
|
46
|
+
def find_container
|
48
47
|
# explicitly requested image
|
49
48
|
image = ENV["DOCKER_IMAGE"]
|
50
|
-
return image if image && !image.empty?
|
49
|
+
return GithubActions::Container.new(image) if image && !image.empty?
|
51
50
|
|
52
51
|
# scan the Docker images used in the GitHub Actions
|
53
|
-
|
54
|
-
return
|
52
|
+
containers = workflow_containers
|
53
|
+
return containers.first if containers.size == 1
|
55
54
|
|
56
|
-
if
|
55
|
+
if containers.empty?
|
57
56
|
error("No Docker image was found in the GitHub Actions")
|
58
57
|
puts "Use DOCKER_IMAGE=<name> option for specifying the image name"
|
59
58
|
abort
|
@@ -61,20 +60,36 @@ private
|
|
61
60
|
|
62
61
|
# multiple images found
|
63
62
|
error("Found multiple Docker images in the GitHub Actions:")
|
64
|
-
error(
|
63
|
+
error(containers.map { |c| [c.image, c.options] })
|
65
64
|
puts "Use DOCKER_IMAGE=<name> option for specifying the image name"
|
65
|
+
puts "and DOCKER_OPTIONS=<options> option for specifying the extra Docker"
|
66
|
+
puts "command line parameters."
|
66
67
|
abort
|
67
68
|
end
|
68
69
|
|
69
70
|
# extract the Docker images from the GitHub Actions,
|
70
71
|
# the duplicates are removed
|
71
|
-
# @return [Array<
|
72
|
-
def
|
73
|
-
GithubActions::Workflow.read.each_with_object([]) do |workflow,
|
72
|
+
# @return [Array<GithubActions::Container>] image names
|
73
|
+
def workflow_containers
|
74
|
+
ret = GithubActions::Workflow.read.each_with_object([]) do |workflow, containers|
|
74
75
|
workflow.jobs.each do |job|
|
75
|
-
|
76
|
-
|
76
|
+
container_data = job.container
|
77
|
+
|
78
|
+
if container_data.is_a?(String)
|
79
|
+
containers << GithubActions::Container.new(container_data)
|
80
|
+
elsif container_data.is_a?(Hash)
|
81
|
+
# to_s converts missing options (nil) to empty options ("")
|
82
|
+
# to treat these as equal in comparison
|
83
|
+
containers << GithubActions::Container.new(
|
84
|
+
container_data["image"],
|
85
|
+
container_data["options"].to_s
|
86
|
+
)
|
87
|
+
else
|
88
|
+
abort "Unsupported container definition: #{container_data.inspect}"
|
89
|
+
end
|
77
90
|
end
|
78
91
|
end
|
92
|
+
|
93
|
+
ret.uniq { |c| [c.image, c.options] }
|
79
94
|
end
|
80
95
|
end
|
@@ -26,7 +26,7 @@ module GithubActions
|
|
26
26
|
class Container
|
27
27
|
include Colorizer
|
28
28
|
|
29
|
-
attr_reader :image, :container
|
29
|
+
attr_reader :image, :options, :container
|
30
30
|
|
31
31
|
# the default timeout in seconds, maximum time for the running container,
|
32
32
|
# after the time runs out the container is automatically stopped and removed
|
@@ -43,8 +43,10 @@ module GithubActions
|
|
43
43
|
|
44
44
|
# constructor
|
45
45
|
# @param image [String] name of the Docker image to use
|
46
|
-
|
46
|
+
# @param options [String, nil] extra docker options
|
47
|
+
def initialize(image, options = nil)
|
47
48
|
@image = image
|
49
|
+
@options = options
|
48
50
|
end
|
49
51
|
|
50
52
|
# pull the Docker image, ensure that the latest version is used
|
@@ -73,7 +75,7 @@ module GithubActions
|
|
73
75
|
end
|
74
76
|
|
75
77
|
cmd = "docker create #{env_options(ENV_VARIABLES)} --rm --entrypoint " \
|
76
|
-
"#{run} #{image.shellescape} #{args}"
|
78
|
+
"#{run} #{options} #{ENV["DOCKER_OPTIONS"]} #{image.shellescape} #{args}"
|
77
79
|
|
78
80
|
# contains the container ID
|
79
81
|
@container = `#{cmd}`.chomp
|
@@ -58,12 +58,29 @@ module GithubActions
|
|
58
58
|
|
59
59
|
# pull the Docker image and start the container
|
60
60
|
def start_container
|
61
|
-
|
62
|
-
@container = Container.new(image || job.container)
|
61
|
+
@container = find_container
|
63
62
|
container.pull
|
64
63
|
container.start
|
65
64
|
end
|
66
65
|
|
66
|
+
# Get the container configuration
|
67
|
+
# @return [Container] container which should run the job
|
68
|
+
def find_container
|
69
|
+
# prefer the custom image if requested
|
70
|
+
image_name = if image
|
71
|
+
image
|
72
|
+
elsif job.container.is_a?(String)
|
73
|
+
job.container
|
74
|
+
elsif job.container.is_a?(Hash)
|
75
|
+
options = job.container["options"]
|
76
|
+
job.container["image"]
|
77
|
+
else
|
78
|
+
abort "Unsupported container definition: #{job.container.inspect}"
|
79
|
+
end
|
80
|
+
|
81
|
+
Container.new(image_name, options.to_s)
|
82
|
+
end
|
83
|
+
|
67
84
|
# run a job step
|
68
85
|
# @param step [GithubActions::Step] the step to run
|
69
86
|
# @return [Boolean] `true` if the step succeeded, `false` otherwise
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: yast-rake
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.2.
|
4
|
+
version: 0.2.42
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Josef Reidinger
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2021-
|
11
|
+
date: 2021-10-07 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: packaging_rake_tasks
|