ecs_deploy 0.3.1 → 0.3.2

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
  SHA1:
3
- metadata.gz: 1bd660050684f5a635cea49f382b3bb0b26b9326
4
- data.tar.gz: 5676af9f244b931200517a2fe5f89bba11e8d482
3
+ metadata.gz: b00504a25168d2bc3b6c700c8ec8ff5ccded3ff3
4
+ data.tar.gz: 97c42178d1adec1876d319ddb8776cf28f687231
5
5
  SHA512:
6
- metadata.gz: ff2d1000dcd9b1abc9f4856252697694eeedf6b91931411ff2f167301c08b33ddf617c4c13c27e0263f30abb3bd892d6fbd1cb1b6714704272d2318a1689f8b3
7
- data.tar.gz: 33e16338511b030bb0790990eb1d6951429c8fc2120430be97d589d4295172fd87c1463daa9335f407029dfdffa3a8bab31a44065a93cb2beb6eb1e2ad205305
6
+ metadata.gz: fa259524dc7c1c0d0b2a61228d61014106df9ecc9c5b0ae21eda2300917935103f4122d8d2682e51f4232da6d9037b79a7f4646ff189915a64c12330bb39a33c
7
+ data.tar.gz: b2d4350db7dd4083fceef62a38c9dc229e20bdfec903a09ee5cfbf5ba8a4a9089c1177fb23a7dfb2ba1659515f2b94e12c9a3df15b4ebaa9c03f3c6f6942c6f3
data/README.md CHANGED
@@ -28,8 +28,6 @@ require 'ecs_deploy/capistrano'
28
28
 
29
29
  # deploy.rb
30
30
  set :ecs_default_cluster, "ecs-cluster-name"
31
- set :ecs_access_key_id, "dummy" # optional, if nil, use environment variable
32
- set :ecs_secret_access_key, "dummy" # optional, if nil, use environment variable
33
31
  set :ecs_region, %w(ap-northeast-1) # optional, if nil, use environment variable
34
32
  set :ecs_service_role, "customEcsServiceRole" # default: ecsServiceRole
35
33
  set :ecs_deploy_wait_timeout, 600 # default: 300
@@ -87,12 +85,27 @@ set :ecs_tasks, [
87
85
  }
88
86
  ],
89
87
  volumes: [{name: "sockets_path", host: {}}],
90
- executions: [ # execution task on deploy timing
91
- {container_overrides: [{name: "myapp", command: ["db_migrate"]}]},
92
- ]
93
88
  },
94
89
  ]
95
90
 
91
+ set :ecs_scheduled_tasks, [
92
+ {
93
+ cluster: "default", # Unless this key, use fetch(:ecs_default_cluster)
94
+ rule_name: "schedule_name",
95
+ schedule_expression: "cron(0 12 * * ? *"),
96
+ description: "schedule_description", # Optional
97
+ target_id: "task_name", # Unless this key, use task_definition_name
98
+ task_definition_name: "myapp-#{fetch(:rails_env)}",
99
+ task_count: 2, # Default 1
100
+ revision: 12, # Optional
101
+ role_arn: "TaskRoleArn", # Optional
102
+ container_overrides: [ # Optional
103
+ name: "myapp-main",
104
+ command: ["ls"],
105
+ ]
106
+ }
107
+ ]
108
+
96
109
  set :ecs_services, [
97
110
  {
98
111
  name: "myapp-#{fetch(:rails_env)}",
@@ -116,6 +129,7 @@ set :ecs_services, [
116
129
 
117
130
  ```sh
118
131
  cap <stage> ecs:register_task_definition # register ecs_tasks as TaskDefinition
132
+ cap <stage> ecs:deploy_scheduled_task # register ecs_scheduled_tasks to CloudWatchEvent
119
133
  cap <stage> ecs:deploy # create or update Service by ecs_services info
120
134
 
121
135
  cap <stage> ecs:rollback # deregister current task definition and update Service by previous revision of current task definition
@@ -290,7 +290,6 @@ module EcsDeploy
290
290
  end
291
291
  rescue => e
292
292
  AutoScaler.error_logger.error(e)
293
- clear_client
294
293
  end
295
294
  end
296
295
 
@@ -36,15 +36,6 @@ namespace :ecs do
36
36
  )
37
37
  result = task_definition.register
38
38
  ecs_registered_tasks[region][t[:name]] = result
39
-
40
- executions = t[:executions].to_a
41
- unless executions.empty?
42
- warn "`executions` config is deprecated. I will remove this in near future"
43
- end
44
- executions.each do |exec|
45
- exec[:cluster] ||= fetch(:ecs_default_cluster)
46
- task_definition.run(exec)
47
- end
48
39
  end
49
40
  end
50
41
 
@@ -53,14 +44,14 @@ namespace :ecs do
53
44
  end
54
45
 
55
46
  task deploy_scheduled_task: [:configure, :register_task_definition] do
56
- if fetch(:ecs_tasks)
47
+ if fetch(:ecs_scheduled_tasks)
57
48
  regions = Array(fetch(:ecs_region))
58
49
  regions = [nil] if regions.empty?
59
50
  regions.each do |r|
60
51
  fetch(:ecs_scheduled_tasks).each do |t|
61
52
  scheduled_task = EcsDeploy::ScheduledTask.new(
62
53
  region: r,
63
- cluster: t[:cluster],
54
+ cluster: t[:cluster] || fetch(:ecs_default_cluster),
64
55
  rule_name: t[:rule_name],
65
56
  schedule_expression: t[:schedule_expression],
66
57
  enabled: t[:enabled] != false,
@@ -70,6 +61,7 @@ namespace :ecs do
70
61
  revision: t[:revision],
71
62
  task_count: t[:task_count],
72
63
  role_arn: t[:role_arn],
64
+ container_overrides: t[:container_overrides],
73
65
  )
74
66
  scheduled_task.deploy
75
67
  end
@@ -9,7 +9,7 @@ module EcsDeploy
9
9
  def initialize(
10
10
  cluster:, rule_name:, schedule_expression:, enabled: true, description: nil, target_id: nil,
11
11
  task_definition_name:, revision: nil, task_count: nil, role_arn:,
12
- region: nil
12
+ region: nil, container_overrides: nil
13
13
  )
14
14
  @cluster = cluster
15
15
  @rule_name = rule_name
@@ -22,6 +22,7 @@ module EcsDeploy
22
22
  @revision = revision
23
23
  @role_arn = role_arn
24
24
  @region = region || EcsDeploy.config.default_region || ENV["AWS_DEFAULT_REGION"]
25
+ @container_overrides = container_overrides
25
26
 
26
27
  @client = Aws::ECS::Client.new(region: @region)
27
28
  @cloud_watch_events = Aws::CloudWatchEvents::Client.new(region: @region)
@@ -58,19 +59,22 @@ module EcsDeploy
58
59
  end
59
60
 
60
61
  def put_targets
62
+ target = {
63
+ id: @target_id,
64
+ arn: cluster_arn,
65
+ role_arn: @role_arn,
66
+ ecs_parameters: {
67
+ task_definition_arn: task_definition_arn,
68
+ task_count: @task_count,
69
+ },
70
+ }
71
+ if @container_overrides
72
+ target.merge!(input: { containerOverrides: @container_overrides }.to_json)
73
+ end
74
+
61
75
  res = @cloud_watch_events.put_targets(
62
76
  rule: @rule_name,
63
- targets: [
64
- {
65
- id: @target_id,
66
- arn: cluster_arn,
67
- role_arn: @role_arn,
68
- ecs_parameters: {
69
- task_definition_arn: task_definition_arn,
70
- task_count: @task_count,
71
- },
72
- }
73
- ]
77
+ targets: [target]
74
78
  )
75
79
  if res.failed_entry_count.zero?
76
80
  EcsDeploy.logger.info "create cloudwatch event target [#{@target_id}] [#{@region}] [#{Paint['OK', :green]}]"
@@ -56,41 +56,5 @@ module EcsDeploy
56
56
  EcsDeploy.logger.info "register task definition [#{@task_definition_name}] [#{@region}] [#{Paint['OK', :green]}]"
57
57
  res.task_definition
58
58
  end
59
-
60
- def run(info)
61
- resp = @client.run_task({
62
- cluster: info[:cluster],
63
- task_definition: @task_definition_name,
64
- overrides: {
65
- container_overrides: info[:container_overrides] || []
66
- },
67
- count: info[:count] || 1,
68
- started_by: "capistrano",
69
- })
70
- unless resp.failures.empty?
71
- resp.failures.each do |f|
72
- raise "#{f.arn}: #{f.reason}"
73
- end
74
- end
75
-
76
- wait_targets = Array(info[:wait_stop])
77
- unless wait_targets.empty?
78
- @client.wait_until(:tasks_running, cluster: info[:cluster], tasks: resp.tasks.map { |t| t.task_arn })
79
- @client.wait_until(:tasks_stopped, cluster: info[:cluster], tasks: resp.tasks.map { |t| t.task_arn })
80
-
81
- resp = @client.describe_tasks(cluster: info[:cluster], tasks: resp.tasks.map { |t| t.task_arn })
82
- resp.tasks.each do |t|
83
- t.containers.each do |c|
84
- next unless wait_targets.include?(c.name)
85
-
86
- unless c.exit_code.zero?
87
- raise "Task has errors: #{c.reason}"
88
- end
89
- end
90
- end
91
- end
92
-
93
- EcsDeploy.logger.info "run task [#{@task_definition_name} #{info.inspect}] [#{@region}] [#{Paint['OK', :green]}]"
94
- end
95
59
  end
96
60
  end
@@ -1,3 +1,3 @@
1
1
  module EcsDeploy
2
- VERSION = "0.3.1"
2
+ VERSION = "0.3.2"
3
3
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: ecs_deploy
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.3.1
4
+ version: 0.3.2
5
5
  platform: ruby
6
6
  authors:
7
7
  - joker1007
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2017-08-04 00:00:00.000000000 Z
11
+ date: 2017-10-23 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: aws-sdk
@@ -123,7 +123,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
123
123
  version: '0'
124
124
  requirements: []
125
125
  rubyforge_project:
126
- rubygems_version: 2.6.12
126
+ rubygems_version: 2.6.13
127
127
  signing_key:
128
128
  specification_version: 4
129
129
  summary: AWS ECS deploy helper