gpt4 book ai didi

deployment - 将参数传递给 Capistrano

转载 作者:行者123 更新时间:2023-12-02 22:22:11 25 4
gpt4 key购买 nike

我正在研究使用 Capistrano 作为通用部署解决方案的可能性。我所说的“通用”是指非轨道。我对我找到的文档的质量不满意,不过,当然,我不会查看那些假设您正在部署 Rails 的文档。因此,我将尝试根据一些示例来解决一些问题,但从一开始我就面临着一些问题。

我的问题是 cap deploy 没有足够的信息来执行任何操作。重要的是,它缺少我想要部署的版本的标签,并且这个必须在命令行上传递。

另一个问题是我如何指定我的 git 存储库。我们的 git 服务器是通过用户帐户上的 SSH 访问的,但我不知道如何更改 deploy.rb 以使用用户的 id 作为 scm URL 的一部分。

那么,我该如何完成这些事情呢?

示例

我想部署第二个版本的第一个冲刺的结果。它在 git 存储库中标记为 r2s1。另外,假设用户“johndoe”获得部署系统的任务。要访问存储库,他必须使用 URL johndoe@gitsrv.domain:app。因此存储库的远程 URL 取决于用户 ID。

获取所需文件的命令行如下:

git clone johndoe@gitsrv.domain:app
cd app
git checkout r2s1

最佳答案

更新:对于 Capistrano 3,请参阅 scieslak's answer .

<小时/>

正如 jarrad 所说,capistrano-ash 是一套很好的基本帮助程序模块,用于部署其他项目类型,尽管它不是必需的,因为最终它只是一种脚本语言,而且大多数任务是通过系统命令完成的,最终几乎变得像 shell 脚本一样。

要传入参数,您可以在运行 cap 时设置 -s 标志来为您提供键值对。首先创建一个这样的任务:

desc "Parameter Testing"
task :parameter do
puts "Parameter test #{branch} #{tag}"
end

然后像这样开始你的任务:

cap test:parameter -s branch=master -s tag=1.0.0

对于最后一部分,我建议使用 ssh key 设置对服务器的无密码访问,但如果您想从当前登录的用户那里获取它,您可以执行以下操作:

desc "Parameter Testing"
task :parameter do
system("whoami", user)
puts "Parameter test #{user} #{branch} #{tag}"
end

更新:经过编辑,可与最新版本的 Capistrano 配合使用。配置数组不再可用。

全局参数:参见注释 使用 set :branch, fetch(:branch, 'a-default-value') 全局使用参数。 (并用 -S 传递它们。)

关于deployment - 将参数传递给 Capistrano,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10216841/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com