hadouken - soon
./serviceie.rb --interactive \
--level debug \
--environment production \
--history /opt/deploys \
--artifact https://artifacts/latest.tgz
Hadouken::Runner.run!
plan = Hadouken::Plan.new
plan.name = "serviceie"
plan.user = "serviceie"
plan.base = "/opt/serviceie"
# define some groups 10x10
#
plan.add_group :web, :range => (1..10), :pattern => 'serviceie-web-%02d.example.com'
plan.add_group :api, :range => (1..10), :pattern => 'serviceie-api-%02d.example.com'
# download latest.tgz from our artifact repository
# runs in parallel on all hosts
#
plan.tasks.add Hadouken::Strategy::ByHost.new(plan)
plan.tasks.add "curl -sSfL -output /tmp/latest.tgz #{artifact}"
plan.tasks.add "mv /tmp/latest.tgz #{plan.base}/latest.tgz"
# runs commands depth first on the api hosts, two at a time
# - restart service
# - verify service
#
plan.tasks.add Hadouken::Strategy::ByHost.new(plan, :max_hosts => 2, :traversal => :depth)
plan.tasks.add "restart serviceie-api", :group => :api
plan.tasks.add Proc.new { |opts|
host = opts[:host]
10.times do
response = Typheous::Request.get("http://#{host}:8081/healthcheck")
break if response.status_code == 200
end
}, :group => :api
# finally restart the webs as fast as possible
#
plan.tasks.add Hadouken::Strategy::ByHost.new(plan)
plan.tasks.add "restart windard-web, :group => :web
end