deploy:initial 在 Capistrano 任务中做了什么
What does deploy:initial do in Capistrano task
我使用 Capistrano 进行部署。我的 Capistrano 任务几乎是从很多博客中引用的。我经常发现以下结构。
namespace :deploy do
desc 'Say something before Deploy'
task :initial do
on roles(:app) do
before 'deploy:hoge', 'deploy:bazz'
invoke 'deploy'
end
end
task :hoge do
on roles(:app) do
puts "'hello, world'"
end
end
task :bazz do
on roles(:app) do
puts "'goodnight, world'"
end
end
end
before 'deploy:hoge', 'deploy:bazz'
在 task
语句中做了什么?它不显示任何消息。我认为 before
语句必须在 task
语句之外。
至少在 Capistrano 3.x 中,没有内置 deploy:initial
任务这样的东西。使用该名称声明任务不会做任何特别的事情。
I think before
statement must be outside of task statement.
你完全正确。任何 before
和 after
声明都应该在顶层完成,绝不能在 task
块内。
就目前而言,您给出的示例没有任何作用。如果你想在部署开始之前 运行 某个任务,你可以挂接到 deploy:starting
任务,像这样:
before "deploy:starting", "deploy:hoge"
此外,deploy
命名空间也没有什么特别之处。我建议在不同的命名空间中声明您自己的自定义任务,以使它们在视觉上分开。然后,您可以轻松区分内置 Capistrano 任务和自定义任务。
所以我会这样重写这个例子:
namespace :myapp do
task :hoge do
on roles(:app) do
puts "'hello, world'"
end
end
task :bazz do
on roles(:app) do
puts "'goodnight, world'"
end
end
end
# Invoke hoge and bazz before deployment begins
before "deploy:starting", "myapp:hoge"
before "deploy:starting", "myapp:bazz"
可在 before
和 after
中使用的内置 Capistrano 任务的完整列表可在此处找到:
我使用 Capistrano 进行部署。我的 Capistrano 任务几乎是从很多博客中引用的。我经常发现以下结构。
namespace :deploy do
desc 'Say something before Deploy'
task :initial do
on roles(:app) do
before 'deploy:hoge', 'deploy:bazz'
invoke 'deploy'
end
end
task :hoge do
on roles(:app) do
puts "'hello, world'"
end
end
task :bazz do
on roles(:app) do
puts "'goodnight, world'"
end
end
end
before 'deploy:hoge', 'deploy:bazz'
在 task
语句中做了什么?它不显示任何消息。我认为 before
语句必须在 task
语句之外。
至少在 Capistrano 3.x 中,没有内置 deploy:initial
任务这样的东西。使用该名称声明任务不会做任何特别的事情。
I think
before
statement must be outside of task statement.
你完全正确。任何 before
和 after
声明都应该在顶层完成,绝不能在 task
块内。
就目前而言,您给出的示例没有任何作用。如果你想在部署开始之前 运行 某个任务,你可以挂接到 deploy:starting
任务,像这样:
before "deploy:starting", "deploy:hoge"
此外,deploy
命名空间也没有什么特别之处。我建议在不同的命名空间中声明您自己的自定义任务,以使它们在视觉上分开。然后,您可以轻松区分内置 Capistrano 任务和自定义任务。
所以我会这样重写这个例子:
namespace :myapp do
task :hoge do
on roles(:app) do
puts "'hello, world'"
end
end
task :bazz do
on roles(:app) do
puts "'goodnight, world'"
end
end
end
# Invoke hoge and bazz before deployment begins
before "deploy:starting", "myapp:hoge"
before "deploy:starting", "myapp:bazz"
可在 before
和 after
中使用的内置 Capistrano 任务的完整列表可在此处找到: