ufo 3.1.2 → 3.2.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/.circleci/bin/commit_docs.sh +26 -0
- data/.circleci/config.yml +13 -0
- data/CHANGELOG.md +6 -0
- data/Gemfile.lock +6 -4
- data/Rakefile +7 -0
- data/docs/_config.yml +3 -0
- data/docs/_docs/conventions.md +3 -3
- data/docs/_docs/install.md +5 -5
- data/docs/_docs/settings.md +3 -3
- data/docs/_docs/structure.md +2 -2
- data/docs/_docs/tutorial-ufo-docker-build.md +1 -1
- data/docs/_docs/tutorial-ufo-init.md +1 -1
- data/docs/_docs/tutorial-ufo-ship.md +3 -7
- data/docs/_docs/tutorial-ufo-ships.md +2 -2
- data/docs/_docs/tutorial-ufo-tasks-build.md +7 -7
- data/docs/_docs/tutorial.md +1 -1
- data/docs/_docs/ufo-env.md +5 -5
- data/docs/_docs/ufo-tasks-register.md +0 -4
- data/docs/_docs/variables.md +6 -7
- data/docs/_includes/content.html +5 -0
- data/docs/_includes/css/main.css +23 -4
- data/docs/_includes/css/ufo.css +9 -9
- data/docs/_includes/reference.md +5 -0
- data/docs/_includes/subnav.html +16 -33
- data/docs/_reference/ufo-completion.md +46 -0
- data/docs/_reference/ufo-completion_script.md +27 -0
- data/docs/_reference/ufo-deploy.md +51 -0
- data/docs/_reference/ufo-destroy.md +34 -0
- data/docs/{_docs → _reference}/ufo-docker-base.md +36 -17
- data/docs/_reference/ufo-docker-build.md +81 -0
- data/docs/_reference/ufo-docker-clean.md +44 -0
- data/docs/_reference/ufo-docker-help.md +15 -0
- data/docs/_reference/ufo-docker-name.md +37 -0
- data/docs/_reference/ufo-docker-push.md +49 -0
- data/docs/_reference/ufo-docker.md +35 -0
- data/docs/_reference/ufo-init.md +74 -0
- data/docs/_reference/ufo-scale.md +30 -0
- data/docs/_reference/ufo-ship.md +100 -0
- data/docs/_reference/ufo-ships.md +77 -0
- data/docs/_reference/ufo-task.md +37 -0
- data/docs/_reference/ufo-tasks-build.md +179 -0
- data/docs/_reference/ufo-tasks-help.md +15 -0
- data/docs/_reference/ufo-tasks-register.md +29 -0
- data/docs/_reference/ufo-tasks.md +35 -0
- data/docs/_reference/ufo-upgrade3.md +23 -0
- data/docs/_reference/ufo-version.md +23 -0
- data/docs/articles.md +2 -0
- data/docs/docs.md +3 -3
- data/docs/quick-start.md +2 -2
- data/docs/reference.md +18 -0
- data/lib/ufo/cli.rb +13 -13
- data/lib/ufo/docker.rb +5 -5
- data/lib/ufo/ecr/auth.rb +6 -1
- data/lib/ufo/ecr/cleaner.rb +1 -1
- data/lib/ufo/help/completion.md +1 -1
- data/lib/ufo/help/completions.md +1 -1
- data/lib/ufo/help/deploy.md +5 -1
- data/lib/ufo/help/destroy.md +7 -3
- data/lib/ufo/help/docker.md +1 -1
- data/lib/ufo/help/docker/base.md +34 -4
- data/lib/ufo/help/docker/build.md +59 -4
- data/lib/ufo/help/docker/clean.md +12 -6
- data/lib/ufo/help/docker/name.md +10 -10
- data/lib/ufo/help/docker/push.md +23 -6
- data/lib/ufo/help/hello.md +1 -1
- data/lib/ufo/help/init.md +43 -5
- data/lib/ufo/help/scale.md +4 -3
- data/lib/ufo/help/ship.md +59 -8
- data/lib/ufo/help/ships.md +35 -9
- data/lib/ufo/help/task.md +1 -1
- data/lib/ufo/help/tasks.md +1 -1
- data/lib/ufo/help/tasks/build.md +155 -4
- data/lib/ufo/help/tasks/register.md +12 -3
- data/lib/ufo/ship.rb +2 -4
- data/lib/ufo/tasks.rb +2 -2
- data/lib/ufo/version.rb +1 -1
- data/spec/lib/ship_spec.rb +2 -1
- data/ufo.gemspec +3 -3
- metadata +44 -21
- data/docs/_docs/commands.md +0 -10
- data/docs/_docs/ufo-deploy.md +0 -30
- data/docs/_docs/ufo-destroy.md +0 -19
- data/docs/_docs/ufo-docker-build.md +0 -79
- data/docs/_docs/ufo-docker-clean.md +0 -27
- data/docs/_docs/ufo-docker-name.md +0 -15
- data/docs/_docs/ufo-docker-push.md +0 -43
- data/docs/_docs/ufo-help.md +0 -22
- data/docs/_docs/ufo-init.md +0 -54
- data/docs/_docs/ufo-scale.md +0 -21
- data/docs/_docs/ufo-ship.md +0 -75
- data/docs/_docs/ufo-ships.md +0 -52
- data/docs/_docs/ufo-tasks-build.md +0 -166
- data/lib/ufo/completion.rb +0 -15
- data/lib/ufo/sub.rb +0 -12
data/lib/ufo/help/ships.md
CHANGED
@@ -1,18 +1,44 @@
|
|
1
|
-
|
1
|
+
The `ufo ships` command allows you to deploy the *same* Docker image and task definition to multiple ECS services. It is a common pattern to have the same code base running on different roles. For example, say you have an application with 3 roles:
|
2
2
|
|
3
|
-
|
3
|
+
1. web - serves web requests.
|
4
|
+
2. worker - processes background jobs.
|
5
|
+
3. clock - schedules background jobs.
|
4
6
|
|
5
|
-
|
7
|
+
Instead of using the [ufo ship]({% link _reference/ufo-ship.md %}) and build and deploying the code 3 times you can instead use `ufo ships`. This will result in the *same* Docker image and *same* task definition being deployed to all 3 services. Example usage:
|
6
8
|
|
7
|
-
|
9
|
+
ufo ships hi-web hi-worker hi-clock
|
8
10
|
|
9
|
-
|
11
|
+
## Shell expansion
|
10
12
|
|
11
|
-
|
13
|
+
Since the ECS service names are provided as a list you can shorten the command by using bash shell expansion 😁
|
14
|
+
|
15
|
+
ufo ships hi-{web,worker,clock}
|
16
|
+
|
17
|
+
If you're new to shell expansion, run this to understand why above works just as well:
|
18
|
+
|
19
|
+
$ echo hi-{web,worker,clock}
|
20
|
+
hi-web hi-worker hi-clock
|
21
|
+
|
22
|
+
## Overriding convention
|
23
|
+
|
24
|
+
As explained in detail in [Conventions]({% link _docs/conventions.md %}) the task definition and service name are the same by convention. This convention also applies for each of the services being shipped in the list. The task definition and service names match for each of the services in the list. If you would like to override the convention as part of the ships command then you use a special syntax. In the special syntax the service and task definition is separated by a colon. Examples:
|
25
|
+
|
26
|
+
ufo ships hi-web-1:hi-web hi-clock-1 hi-worker-1
|
27
|
+
ufo ships hi-web-1:my-task hi-clock-1:another-task hi-worker-1:third-task
|
28
|
+
|
29
|
+
## ufo ships Options
|
30
|
+
|
31
|
+
The `ufo ships`, `ufo ship`, `ufo deploy` command support the same options. The options are presented here again for convenience:
|
32
|
+
|
33
|
+
{% include ufo-ship-options.md %}
|
34
|
+
|
35
|
+
Note: The `--task` option is not used with the `ufo ships` command.
|
36
|
+
|
37
|
+
## ELB Target Group
|
12
38
|
|
13
39
|
For each service being deployed to, ufo will create the ECS service if the service does not yet exist on the cluster. The deploy process will prompt you for the ELB `--target-group` if you are deploying to a 'web' service that does not yet exist. Ufo determines that it is a web service by the name of the service. If the service has 'web' in the name then it is considered a web service. If it is not a web service then the `--target-group` option gets ignored.
|
14
40
|
|
15
|
-
The
|
41
|
+
The prommt can be bypassed by specifying a valid `--target-group` option or specifying the `---no-target-group-prompt` option. ## Examples
|
16
42
|
|
17
|
-
|
18
|
-
|
43
|
+
ufo ships hi-web hi-clock hi-worker --target-group arn:aws:elasticloadbalancing:us-east-1:123456789:targetgroup/hi-web/jsdlfjsdkd
|
44
|
+
ufo ships hi-web hi-clock hi-worker --no-target-group-prompt
|
data/lib/ufo/help/task.md
CHANGED
data/lib/ufo/help/tasks.md
CHANGED
data/lib/ufo/help/tasks/build.md
CHANGED
@@ -1,7 +1,158 @@
|
|
1
|
-
|
1
|
+
## Summarized Example
|
2
2
|
|
3
|
-
|
3
|
+
ufo tasks build
|
4
4
|
|
5
|
-
Builds all the task defintiions.
|
5
|
+
Builds all the task defintiions. Note all the existing ufo/output generated task defintions are wiped out.
|
6
|
+
|
7
|
+
## Explanation
|
8
|
+
|
9
|
+
The command `ufo tasks build` generates the task definitions locally and writes them to the `output/` folder. There are 2 files that it uses in order to produce the raw AWS task definitions files.
|
10
|
+
|
11
|
+
1. ufo/templates/main.json.erb
|
12
|
+
2. ufo/task_definitions.rb
|
13
|
+
|
14
|
+
Here's an example of each of them:
|
15
|
+
|
16
|
+
**main.json.erb**:
|
17
|
+
|
18
|
+
{
|
19
|
+
"family": "<%= @family %>",
|
20
|
+
"containerDefinitions": [
|
21
|
+
{
|
22
|
+
"name": "<%= @name %>",
|
23
|
+
"image": "<%= @image %>",
|
24
|
+
"cpu": <%= @cpu %>,
|
25
|
+
<% if @memory %>
|
26
|
+
"memory": <%= @memory %>,
|
27
|
+
<% end %>
|
28
|
+
<% if @memory_reservation %>
|
29
|
+
"memoryReservation": <%= @memory_reservation %>,
|
30
|
+
<% end %>
|
31
|
+
<% if @container_port %>
|
32
|
+
"portMappings": [
|
33
|
+
{
|
34
|
+
"containerPort": "<%= @container_port %>",
|
35
|
+
"protocol": "tcp"
|
36
|
+
}
|
37
|
+
],
|
38
|
+
<% end %>
|
39
|
+
"command": <%= @command.to_json %>,
|
40
|
+
<% if @environment %>
|
41
|
+
"environment": <%= @environment.to_json %>,
|
42
|
+
<% end %>
|
43
|
+
<% if @awslogs_group %>
|
44
|
+
"logConfiguration": {
|
45
|
+
"logDriver": "awslogs",
|
46
|
+
"options": {
|
47
|
+
"awslogs-group": "<%= @awslogs_group %>",
|
48
|
+
"awslogs-region": "<%= @awslogs_region || 'us-east-1' %>",
|
49
|
+
"awslogs-stream-prefix": "<%= @awslogs_stream_prefix %>"
|
50
|
+
}
|
51
|
+
},
|
52
|
+
<% end %>
|
53
|
+
"essential": true
|
54
|
+
}
|
55
|
+
]
|
56
|
+
}
|
57
|
+
|
58
|
+
**task_definitions.rb**:
|
59
|
+
|
60
|
+
```ruby
|
61
|
+
task_definition "hi-web" do
|
62
|
+
source "main" # will use ufo/templates/main.json.erb
|
63
|
+
variables(
|
64
|
+
family: task_definition_name,
|
65
|
+
name: "web",
|
66
|
+
container_port: helper.dockerfile_port,
|
67
|
+
command: ["bin/web"]
|
68
|
+
)
|
69
|
+
end
|
70
|
+
|
71
|
+
task_definition "hi-worker" do
|
72
|
+
source "main" # will use ufo/templates/main.json.erb
|
73
|
+
variables(
|
74
|
+
family: task_definition_name,
|
75
|
+
name: "worker",
|
76
|
+
command: ["bin/worker"]
|
77
|
+
)
|
78
|
+
end
|
79
|
+
|
80
|
+
task_definition "hi-clock" do
|
81
|
+
source "main" # will use ufo/templates/main.json.erb
|
82
|
+
variables(
|
83
|
+
family: task_definition_name,
|
84
|
+
name: "clock",
|
85
|
+
command: ["bin/clock"]
|
86
|
+
)
|
87
|
+
end
|
88
|
+
```
|
89
|
+
|
90
|
+
The shared variables are set in the variables folder:
|
91
|
+
|
92
|
+
**ufo/variables/base.rb**:
|
93
|
+
|
94
|
+
```ruby
|
95
|
+
@image = helper.full_image_name # includes the git sha tongueroo/hi:ufo-[sha].
|
96
|
+
@cpu = 128
|
97
|
+
@memory_reservation = 256
|
98
|
+
@environment = helper.env_file(".env")
|
99
|
+
```
|
100
|
+
|
101
|
+
**ufo/variables/production.rb**:
|
102
|
+
|
103
|
+
```ruby
|
104
|
+
@environment = helper.env_vars(%Q{
|
105
|
+
RAILS_ENV=production
|
106
|
+
SECRET_KEY_BASE=secret
|
107
|
+
})
|
108
|
+
```
|
109
|
+
|
110
|
+
Ufo combines the `main.json.erb` template, `task_definitions.rb` definitions, and variables in the `.ufo/variables` folder. It then generates the raw AWS formatted task definition in the `output` folder.
|
111
|
+
|
112
|
+
To build the task definitions:
|
113
|
+
|
114
|
+
ufo tasks build
|
115
|
+
|
116
|
+
You should see output similar to below:
|
117
|
+
|
118
|
+
$ ufo tasks build
|
119
|
+
Building Task Definitions...
|
120
|
+
Generating Task Definitions:
|
121
|
+
ufo/output/hi-web.json
|
122
|
+
ufo/output/hi-worker.json
|
123
|
+
ufo/output/hi-clock.json
|
124
|
+
Task Definitions built in ufo/output.
|
125
|
+
$
|
126
|
+
|
127
|
+
Let's take a look at one of the generated files: `.ufo/output/hi-web.json`.
|
128
|
+
|
129
|
+
{
|
130
|
+
"family": "hi-web",
|
131
|
+
"containerDefinitions": [
|
132
|
+
{
|
133
|
+
"name": "web",
|
134
|
+
"image": "tongueroo/hi:ufo-2017-06-11T22-22-32-a18aa30",
|
135
|
+
"cpu": 128,
|
136
|
+
"memoryReservation": 256,
|
137
|
+
"portMappings": [
|
138
|
+
{
|
139
|
+
"containerPort": "3000",
|
140
|
+
"protocol": "tcp"
|
141
|
+
}
|
142
|
+
],
|
143
|
+
"command": [
|
144
|
+
"bin/web"
|
145
|
+
],
|
146
|
+
"environment": [
|
147
|
+
{
|
148
|
+
"name": "RAILS_ENV",
|
149
|
+
"value": "staging"
|
150
|
+
}
|
151
|
+
],
|
152
|
+
"essential": true
|
153
|
+
}
|
154
|
+
]
|
155
|
+
}
|
156
|
+
|
157
|
+
If you need to modify the task definition template to suite your own needs it is super simple, just edit `main.json.erb`. No need to dive deep into internal code that builds up the task definition with some internal structure. It is all there for you to fully control.
|
6
158
|
|
7
|
-
Note all the existing ufo/output generated task defintions are wiped out.
|
@@ -1,5 +1,14 @@
|
|
1
|
-
|
1
|
+
The `ufo tasks register` command registers all the generated task definitions in `output/` to AWS ECS. Let's run it:
|
2
2
|
|
3
|
-
|
3
|
+
ufo tasks register
|
4
|
+
|
5
|
+
You should see something similiar to this:
|
6
|
+
|
7
|
+
hi-clock task definition registered.
|
8
|
+
hi-web task definition registered.
|
9
|
+
hi-worker task definition registered.
|
10
|
+
|
11
|
+
You can verify that the task definitions have been registered properly by viewing the AWS ECS Console Task Definitions page. You should see something similar to this:
|
12
|
+
|
13
|
+
<img src="/img/tutorials/ecs-console-task-definitions.png" class="doc-photo" />
|
4
14
|
|
5
|
-
All the task defintiions in ufo/output registered.
|
data/lib/ufo/ship.rb
CHANGED
@@ -99,8 +99,6 @@ module Ufo
|
|
99
99
|
# ELB to drain the register container otherwise. This might cut off some requests but
|
100
100
|
# providing this as an option that can be turned of beause I've seen deploys go way too
|
101
101
|
# slow.
|
102
|
-
puts "@options[:stop_old_tasks] #{@options[:stop_old_tasks].inspect}"
|
103
|
-
puts "old_tasks.size #{old_tasks.size}"
|
104
102
|
old_tasks.each do |task|
|
105
103
|
puts "stopping task.task_definition_arn #{task.task_definition_arn.inspect}"
|
106
104
|
ecs.stop_task(cluster: @cluster, task: task.task_arn, reason: reason)
|
@@ -358,8 +356,8 @@ module Ufo
|
|
358
356
|
end
|
359
357
|
|
360
358
|
def ensure_cluster_exist
|
361
|
-
|
362
|
-
unless
|
359
|
+
cluster = ecs_clusters.first
|
360
|
+
unless cluster && cluster.status == "ACTIVE"
|
363
361
|
message = "#{@cluster} cluster created."
|
364
362
|
if @options[:noop]
|
365
363
|
message = "NOOP #{message}"
|
data/lib/ufo/tasks.rb
CHANGED
@@ -3,14 +3,14 @@ module Ufo
|
|
3
3
|
autoload :Builder, 'ufo/tasks/builder'
|
4
4
|
autoload :Register, 'ufo/tasks/register'
|
5
5
|
|
6
|
-
desc "build", "
|
6
|
+
desc "build", "Build task definitions."
|
7
7
|
long_desc Help.text("tasks:build")
|
8
8
|
option :pretty, type: :boolean, default: true, desc: "Pretty format the json for the task definitions"
|
9
9
|
def build
|
10
10
|
Tasks::Builder.new(options).build
|
11
11
|
end
|
12
12
|
|
13
|
-
desc "register", "
|
13
|
+
desc "register", "Register all built task definitions in `ufo/output` folder."
|
14
14
|
long_desc Help.text("tasks:register")
|
15
15
|
def register
|
16
16
|
Tasks::Register.register(:all, options)
|
data/lib/ufo/version.rb
CHANGED
data/spec/lib/ship_spec.rb
CHANGED
@@ -59,7 +59,8 @@ describe Ufo::Ship do
|
|
59
59
|
# ensure_cluster_exist calls this and this makes sure that the cluster 'exists'
|
60
60
|
def ecs_describe_clusters
|
61
61
|
describe_clusters = double("ecs-describe-clusters")
|
62
|
-
|
62
|
+
cluster1 = OpenStruct.new(status: "ACTIVE")
|
63
|
+
allow(describe_clusters).to receive(:clusters).and_return([cluster1])
|
63
64
|
describe_clusters
|
64
65
|
end
|
65
66
|
|
data/ufo.gemspec
CHANGED
@@ -7,8 +7,7 @@ Gem::Specification.new do |spec|
|
|
7
7
|
spec.version = Ufo::VERSION
|
8
8
|
spec.authors = ["Tung Nguyen"]
|
9
9
|
spec.email = ["tongueroo@gmail.com"]
|
10
|
-
spec.
|
11
|
-
spec.summary = %q{Build Docker Containers and Ship Them to AWS ECS}
|
10
|
+
spec.summary = "Build Docker Containers and Ship Them to AWS ECS"
|
12
11
|
spec.homepage = "http://ufoships.com"
|
13
12
|
spec.license = "MIT"
|
14
13
|
|
@@ -24,11 +23,12 @@ Gem::Specification.new do |spec|
|
|
24
23
|
spec.add_dependency "aws-sdk-ecr"
|
25
24
|
spec.add_dependency "aws-sdk-ecs"
|
26
25
|
spec.add_dependency "aws-sdk-elasticloadbalancingv2"
|
26
|
+
spec.add_dependency "cli_markdown"
|
27
27
|
spec.add_dependency "colorize"
|
28
28
|
spec.add_dependency "deep_merge"
|
29
29
|
spec.add_dependency "plissken"
|
30
|
-
spec.add_dependency "thor"
|
31
30
|
spec.add_dependency "render_me_pretty"
|
31
|
+
spec.add_dependency "thor"
|
32
32
|
|
33
33
|
spec.add_development_dependency "bundler"
|
34
34
|
spec.add_development_dependency "byebug"
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: ufo
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 3.
|
4
|
+
version: 3.2.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Tung Nguyen
|
8
8
|
autorequire:
|
9
9
|
bindir: exe
|
10
10
|
cert_chain: []
|
11
|
-
date: 2018-02-
|
11
|
+
date: 2018-02-26 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: aws-sdk-cloudwatchlogs
|
@@ -80,6 +80,20 @@ dependencies:
|
|
80
80
|
- - ">="
|
81
81
|
- !ruby/object:Gem::Version
|
82
82
|
version: '0'
|
83
|
+
- !ruby/object:Gem::Dependency
|
84
|
+
name: cli_markdown
|
85
|
+
requirement: !ruby/object:Gem::Requirement
|
86
|
+
requirements:
|
87
|
+
- - ">="
|
88
|
+
- !ruby/object:Gem::Version
|
89
|
+
version: '0'
|
90
|
+
type: :runtime
|
91
|
+
prerelease: false
|
92
|
+
version_requirements: !ruby/object:Gem::Requirement
|
93
|
+
requirements:
|
94
|
+
- - ">="
|
95
|
+
- !ruby/object:Gem::Version
|
96
|
+
version: '0'
|
83
97
|
- !ruby/object:Gem::Dependency
|
84
98
|
name: colorize
|
85
99
|
requirement: !ruby/object:Gem::Requirement
|
@@ -123,7 +137,7 @@ dependencies:
|
|
123
137
|
- !ruby/object:Gem::Version
|
124
138
|
version: '0'
|
125
139
|
- !ruby/object:Gem::Dependency
|
126
|
-
name:
|
140
|
+
name: render_me_pretty
|
127
141
|
requirement: !ruby/object:Gem::Requirement
|
128
142
|
requirements:
|
129
143
|
- - ">="
|
@@ -137,7 +151,7 @@ dependencies:
|
|
137
151
|
- !ruby/object:Gem::Version
|
138
152
|
version: '0'
|
139
153
|
- !ruby/object:Gem::Dependency
|
140
|
-
name:
|
154
|
+
name: thor
|
141
155
|
requirement: !ruby/object:Gem::Requirement
|
142
156
|
requirements:
|
143
157
|
- - ">="
|
@@ -206,7 +220,7 @@ dependencies:
|
|
206
220
|
- - ">="
|
207
221
|
- !ruby/object:Gem::Version
|
208
222
|
version: '0'
|
209
|
-
description:
|
223
|
+
description:
|
210
224
|
email:
|
211
225
|
- tongueroo@gmail.com
|
212
226
|
executables:
|
@@ -214,6 +228,7 @@ executables:
|
|
214
228
|
extensions: []
|
215
229
|
extra_rdoc_files: []
|
216
230
|
files:
|
231
|
+
- ".circleci/bin/commit_docs.sh"
|
217
232
|
- ".circleci/config.yml"
|
218
233
|
- ".gitignore"
|
219
234
|
- ".gitmodules"
|
@@ -234,7 +249,6 @@ files:
|
|
234
249
|
- docs/_config.yml
|
235
250
|
- docs/_docs/auto-completion.md
|
236
251
|
- docs/_docs/automated-cleanup.md
|
237
|
-
- docs/_docs/commands.md
|
238
252
|
- docs/_docs/conventions.md
|
239
253
|
- docs/_docs/helpers.md
|
240
254
|
- docs/_docs/install.md
|
@@ -250,20 +264,7 @@ files:
|
|
250
264
|
- docs/_docs/tutorial-ufo-ships.md
|
251
265
|
- docs/_docs/tutorial-ufo-tasks-build.md
|
252
266
|
- docs/_docs/tutorial.md
|
253
|
-
- docs/_docs/ufo-deploy.md
|
254
|
-
- docs/_docs/ufo-destroy.md
|
255
|
-
- docs/_docs/ufo-docker-base.md
|
256
|
-
- docs/_docs/ufo-docker-build.md
|
257
|
-
- docs/_docs/ufo-docker-clean.md
|
258
|
-
- docs/_docs/ufo-docker-name.md
|
259
|
-
- docs/_docs/ufo-docker-push.md
|
260
267
|
- docs/_docs/ufo-env.md
|
261
|
-
- docs/_docs/ufo-help.md
|
262
|
-
- docs/_docs/ufo-init.md
|
263
|
-
- docs/_docs/ufo-scale.md
|
264
|
-
- docs/_docs/ufo-ship.md
|
265
|
-
- docs/_docs/ufo-ships.md
|
266
|
-
- docs/_docs/ufo-tasks-build.md
|
267
268
|
- docs/_docs/ufo-tasks-register.md
|
268
269
|
- docs/_docs/variables.md
|
269
270
|
- docs/_includes/about.html
|
@@ -290,12 +291,35 @@ files:
|
|
290
291
|
- docs/_includes/modals.html
|
291
292
|
- docs/_includes/nav.html
|
292
293
|
- docs/_includes/quotes.html
|
294
|
+
- docs/_includes/reference.md
|
293
295
|
- docs/_includes/subnav.html
|
294
296
|
- docs/_includes/summary.html
|
295
297
|
- docs/_includes/ufo-ship-options.md
|
296
298
|
- docs/_includes/uses.html
|
297
299
|
- docs/_layouts/default.html
|
298
300
|
- docs/_layouts/style.css
|
301
|
+
- docs/_reference/ufo-completion.md
|
302
|
+
- docs/_reference/ufo-completion_script.md
|
303
|
+
- docs/_reference/ufo-deploy.md
|
304
|
+
- docs/_reference/ufo-destroy.md
|
305
|
+
- docs/_reference/ufo-docker-base.md
|
306
|
+
- docs/_reference/ufo-docker-build.md
|
307
|
+
- docs/_reference/ufo-docker-clean.md
|
308
|
+
- docs/_reference/ufo-docker-help.md
|
309
|
+
- docs/_reference/ufo-docker-name.md
|
310
|
+
- docs/_reference/ufo-docker-push.md
|
311
|
+
- docs/_reference/ufo-docker.md
|
312
|
+
- docs/_reference/ufo-init.md
|
313
|
+
- docs/_reference/ufo-scale.md
|
314
|
+
- docs/_reference/ufo-ship.md
|
315
|
+
- docs/_reference/ufo-ships.md
|
316
|
+
- docs/_reference/ufo-task.md
|
317
|
+
- docs/_reference/ufo-tasks-build.md
|
318
|
+
- docs/_reference/ufo-tasks-help.md
|
319
|
+
- docs/_reference/ufo-tasks-register.md
|
320
|
+
- docs/_reference/ufo-tasks.md
|
321
|
+
- docs/_reference/ufo-upgrade3.md
|
322
|
+
- docs/_reference/ufo-version.md
|
299
323
|
- docs/articles.md
|
300
324
|
- docs/bin/web
|
301
325
|
- docs/css/font-awesome/css/font-awesome.css
|
@@ -328,6 +352,7 @@ files:
|
|
328
352
|
- docs/js/jquery.easing.min.js
|
329
353
|
- docs/js/nav.js
|
330
354
|
- docs/quick-start.md
|
355
|
+
- docs/reference.md
|
331
356
|
- docs/style.css
|
332
357
|
- exe/ufo
|
333
358
|
- lib/template/.env
|
@@ -346,7 +371,6 @@ files:
|
|
346
371
|
- lib/ufo/completer.rb
|
347
372
|
- lib/ufo/completer/script.rb
|
348
373
|
- lib/ufo/completer/script.sh
|
349
|
-
- lib/ufo/completion.rb
|
350
374
|
- lib/ufo/core.rb
|
351
375
|
- lib/ufo/default.rb
|
352
376
|
- lib/ufo/default/settings.yml
|
@@ -394,7 +418,6 @@ files:
|
|
394
418
|
- lib/ufo/sequence.rb
|
395
419
|
- lib/ufo/setting.rb
|
396
420
|
- lib/ufo/ship.rb
|
397
|
-
- lib/ufo/sub.rb
|
398
421
|
- lib/ufo/task.rb
|
399
422
|
- lib/ufo/tasks.rb
|
400
423
|
- lib/ufo/tasks/builder.rb
|