rumrunner 0.2.1 → 0.2.2

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: d418721530bb2d83cf3fe7234869b48c959b1971aa0ca6be441378ae286221cb
4
- data.tar.gz: 6b2344351417b923e61a1e8e0be5def1d57dffa626d226a87041d6395f385230
3
+ metadata.gz: 3f5c7dac4315813fa3843d94e075608585d4e6cdd9c1b52f6c447b8981ada492
4
+ data.tar.gz: 778ac8a9026a12e33edee3af59ea0e3d66b363d7eeee8ee88c4c777e98ffee86
5
5
  SHA512:
6
- metadata.gz: 3a252b63a40a3604cb7379ba019e8ffef53ea0d8aa2882eb632501cb83a99ada8c0d794a9e5a01bf0e698bb4b107922329cd93a3a3bb64deba287f134d671d37
7
- data.tar.gz: bc1a516772e49aba48f2b5e05d967fc3c6b494a3fb4ab655dfe976652bdf2c1c3f6e4470f24a9ba3843b1038c7d97166d8efc7823cdaeb25b69177240d9a8288
6
+ metadata.gz: ef19b7605a22e532753f2c6eefa7fdeadd51584a6804dea22b57cedf36e38441e0125c34756e7445952d3bce5aff2764232aa0a13d305b148335fb2787424f96
7
+ data.tar.gz: a48ff0e320ea4b6c5a7521d734da3b4871ce0fb9822ae7fc6deb36a80e8c7b3c44863a1e76ee30d243c144f5d9c87431f0a5ef017bc74d0ea71f6a39bda1fffd
data/README.md CHANGED
@@ -5,11 +5,9 @@
5
5
 
6
6
  Rum Runner is a Rake-based utility for building multi-stage Dockerfiles.
7
7
 
8
- Users can pair a multi-stage Dockerfile with a Rumfile that uses a
9
- Rake-like DSL to customize each stage's build options and dependencies.
8
+ Users can pair a multi-stage Dockerfile with a Rumfile that uses a Rake-like DSL to customize each stage's build options and dependencies.
10
9
 
11
- The `rum` executable allows users to easily invoke builds, shell-into
12
- specific stages for debugging, and export artifacts from built containers.
10
+ The `rum` executable allows users to easily invoke builds, shell-into specific stages for debugging, and export artifacts from built containers.
13
11
 
14
12
  Rum Runner has the following features:
15
13
  * Rake-like DSL/CLI that enable simple annotation and execution of builds.
@@ -19,12 +17,34 @@ Rum Runner has the following features:
19
17
  * Shell tasks are automatically provided for every stage
20
18
  * Stage, artifact, and shell, steps can be customized
21
19
 
20
+ **Origins**
21
+
22
+ This project was born from using Makefiles to drive multi-stage builds. For the most part this worked really well, but it became a bit of an ordeal to write for more complex projects. This tool is an attempt to recreate that general technique with minimal annotation and limited assumptions.
23
+
22
24
  ## Installation
23
25
 
24
26
  ```bash
25
27
  gem install rumrunner
26
28
  ```
27
29
 
30
+ ## Quickstart
31
+
32
+ Use the helper `Rum.init` to create a template Rumfile for your project:
33
+
34
+ ```bash
35
+ # Install the gem
36
+ gem install rumrunner
37
+
38
+ # Navigate to the location of your Dockerfile
39
+ cd /path/to/your/Dockerfile/project/
40
+
41
+ # Create a basic Rumfile
42
+ ruby -r rumrunner -e Rum.init > Rumfile
43
+
44
+ # View available tasks
45
+ rum --tasks
46
+ ```
47
+
28
48
  ## Example
29
49
 
30
50
  Imagine a simple multi-stage Dockerfile:
@@ -46,9 +66,9 @@ Create `Rumfile` and describe your build:
46
66
  rum :image_name do
47
67
  tag "1.2.3"
48
68
 
49
- stage :build
50
- stage :test => :build
51
- stage :deploy => :test
69
+ stage :build # => docker build --target build --tag image_name:1.2.3-build .
70
+ stage :test => :build # => docker build --target test --tag image_name:1.2.3-test .
71
+ stage :deploy => :test # => docker build --target deploy --tag image_name:1.2.3-deploy .
52
72
  end
53
73
  ```
54
74
 
@@ -88,6 +108,41 @@ rum :image_name => "tmp" do |c|
88
108
  end
89
109
  ```
90
110
 
111
+ ## Build vs. Run
112
+
113
+ At the core, every directive within the `rum` block will eventually be interpreted as either a `docker build` or a `docker run` command. The type of directive is simply a way of specifying defaults for the command.
114
+
115
+ If you simply wish to define a named task that executes a build or a run, you can use the `build` or `run` directives:
116
+
117
+ ```ruby
118
+ rum :image_name do
119
+ build :fizz do
120
+ tag "image_name"
121
+ path "."
122
+ end # => docker build --tag image_name .
123
+
124
+ run :buzz do
125
+ rm true
126
+ image "image_name"
127
+ cmd %w{echo hello}
128
+ end # => docker run --rm image_name echo hello
129
+ end
130
+ ```
131
+
132
+ ## Shared ENV variables
133
+
134
+ The `env` method can be invoked in the `rum` block to declare a value that will be passed to all stages/artifacts/shells. For stages, the value will be passed using the `--build-arg` option; for artifacts and shells, the `--env` option.
135
+
136
+ ```ruby
137
+ rum :image_name do
138
+ env :FIZZ => :BUZZ
139
+
140
+ stage :build # => docker build --build-arg FIZZ=BUZZ ...
141
+
142
+ artifact "pkg.zip" => :build # => docker run --env FIZZ=BUZZ ...
143
+ end
144
+ ```
145
+
91
146
  ## Customize Stages
92
147
 
93
148
  Stages can be customized with blocks. Methods invoked on the stage are (with a few exceptions) passed onto the `docker build` command.
@@ -0,0 +1,19 @@
1
+ require "rumrunner/docker"
2
+
3
+ module Rum
4
+ class << self
5
+ def init
6
+ # Get image name from stdin
7
+ $stderr.write "Docker image name: "
8
+ image = Docker::Image.parse(gets.chomp)
9
+
10
+ puts "#!/usr/bin/env ruby"
11
+ puts "rum :\"#{image.family}\" do"
12
+ File.read("Dockerfile").scan(/^FROM .*?$/).each_with_index do |line, i|
13
+ stage = line.scan(/ AS (.*?)$/).flatten.first || i.to_s
14
+ puts " stage :\"#{stage}\""
15
+ end if File.exists? "Dockerfile"
16
+ puts "end"
17
+ end
18
+ end
19
+ end
@@ -35,7 +35,7 @@ module Rum
35
35
  def run(*args, &block)
36
36
  name, _, deps = Rake.application.resolve_args(args)
37
37
  task name => deps do
38
- sh Docker::Run.new(&block).to_s
38
+ sh Docker::Run.new(image: @image, &block).to_s
39
39
  end
40
40
  end
41
41
 
@@ -145,6 +145,8 @@ module Rum
145
145
 
146
146
  def install
147
147
  install_clean
148
+
149
+ self
148
150
  end
149
151
 
150
152
  private
@@ -1,3 +1,3 @@
1
1
  module Rum
2
- VERSION = "0.2.1"
2
+ VERSION = "0.2.2"
3
3
  end
data/lib/rumrunner.rb CHANGED
@@ -3,6 +3,7 @@ require "rumrunner/docker"
3
3
  require "rumrunner/manifest"
4
4
  require "rumrunner/dsl_definition"
5
5
  require "rumrunner/application"
6
+ require "rumrunner/init"
6
7
 
7
8
  module Rum
8
9
  class Error < StandardError
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: rumrunner
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.2.1
4
+ version: 0.2.2
5
5
  platform: ruby
6
6
  authors:
7
7
  - Alexander Mancevice
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2019-07-21 00:00:00.000000000 Z
11
+ date: 2019-07-22 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: rake
@@ -138,6 +138,7 @@ files:
138
138
  - lib/rumrunner/application.rb
139
139
  - lib/rumrunner/docker.rb
140
140
  - lib/rumrunner/dsl_definition.rb
141
+ - lib/rumrunner/init.rb
141
142
  - lib/rumrunner/manifest.rb
142
143
  - lib/rumrunner/version.rb
143
144
  homepage: https://github.com/amancevice/rumrunner.git