问题标签 [capistrano]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
8 回答
43646 浏览

ruby-on-rails - 在 Ruby 中读取文件的第一行

我只想以最快、最简单、最惯用的方式使用 Ruby 读取文件的第一行最好的方法是什么?

(特别是:我想从我最新的 Capistrano 部署 Rails 目录中的 REVISION 文件中读取 git commit UUID,然后将其输出到我的标签。这将让我在 http-glance 中看到部署到我的服务器的版本. 如果有完全不同和更好的方法可以做到这一点,请告诉我。)

0 投票
1 回答
1043 浏览

ruby-on-rails - 为什么 Capistrano 没有从 SVN 检出我的代码的最新版本?

我正在使用 Capistrano 和 Rails 2.3.4。我已经对远程服务器进行了部署:冷。现在在我的本地机器上,我更改了一个布局文件并将其提交到存储库(我使用 Netbeans 6 作为我的 IDE)。我键入 cap deploy ,Capistrano 运行它的命令并告诉我它已签出并部署了我的代码的最新版本。然而,在服务器上,更改不存在,当我查看布局文件时,它使用的是旧版本,而不是我刚刚提交和部署的版本。

有人经历过吗?

编辑:奇怪的是我更改了一些图像文件并且这些文件在服务器上进行了更新,但我修改的 HTML 布局没有。会不会只是 cookie 的问题?

EDIT2:我检查了存储库本身(我正在使用 ProjectLocker),并且确实代码在那里,已修改。问题只是 Capistrano 没有检查它,即使它说它是,也没有报告任何错误。

这是我的 deploy.rb 文件(当然是经过清理的):

它有时会起作用,似乎。例如,我之前对代码进行了一些更改,结果很好。我遇到了一个问题,它也没有检查我的 database.yml 文件;我被迫在服务器上编辑它。

0 投票
3 回答
1024 浏览

svn - 使用 Capistrano 和 Subversion 进行部署。工作副本锁定

我正在使用 Capistrano 部署到 Debian 服务器,该服务器由于锁定工作副本而失败。我把它缩小到这个:

所以如果我运行:

我收到一个错误:

清理没有区别。相同的命令在服务器上运行良好。当我列出 1234/ 中的文件时,我可以看到所有 .svn 和工作副本文件。

有人可以指出我正确的方向来解决这个问题吗?如何判断工作副本是否真的被锁定?svn status什么都不显示。

0 投票
13 回答
79163 浏览

git - 使用 capistrano 从不同的 git 分支进行部署

我正在使用 capistrano 部署 RoR 应用程序。代码库位于 git 存储库中,分支在开发中被广泛使用。Capistrano 使用deploy.rb文件进行设置,其中之一是要部署的分支。

我的问题是这样的:假设我从master创建了一个新分支A。部署文件将引用master分支。我对其进行了编辑,因此可以将A部署到测试环境。我完成了该功能的工作,并将分支A合并到master。由于来自A的文件更新鲜,因此它被合并,现在in master分支引用A。是时候再次编辑了。deploy.rbdeploy.rb

这是很多看似不必要的手动编辑 - 参数应始终与当前分支名称匹配。最重要的是,很容易忘记每次都编辑设置。

自动化此过程的最佳方法是什么?

编辑:原来有人已经完成了我所需要的

今天早上,我有机会将 git 存储库的一个分支部署到临时服务器,但不知道如何部署。快速搜索 capistrano 源代码后发现我可以 :branch "branch_name"在部署脚本中使用 set。我试过了,它奏效了。然后我想我需要在我的所有分支机构中进行类似的更改。当然,我是一个懒惰的草皮,想知道是否有更好的方法。

如果您不熟悉 git,则 git branch 命令的输出是一个带有星号的分支列表,表示当前在本地计算机上签出的分支。例如:

所以,我想,如果我只是解析输出并搜索标记为当前的分支怎么办:

现在,我可以从单个共享的部署脚本部署本地计算机上当前的任何分支。

0 投票
2 回答
4367 浏览

capistrano - 如何在 capistrano 任务中添加一些步骤?

我想在运行 deploy:migrate 任务之前停止一些进程。我知道我可以通过复制现有代码并在任务的开头和结尾添加停止/启动步骤来重新定义 deploy:migrate 任务。

我想知道是否有办法避免从我的任务版本中的默认部署:迁移任务中复制代码。有没有办法在定义同名的新任务时引用现有的 deploy:migrate 任务?

0 投票
5 回答
2438 浏览

java - Java 环境是否有良好的部署和管理?

我们已经在 Hudson 拥有了一个很好的构建服务器,但我们想要一些可以让我们启动和关闭服务器,推出新的软件部署的东西(这不仅仅是一个单一的 WAR 或 EAR 去某个地方,还有复制、提取、重命名等),以及我们希望自动化的各种其他任务。

我看过 SmartFrog(似乎主要是学术性的,而不是常用的)、ControlTier(与您的复杂性相匹配的大量复杂性)、Capistrano(专注于 Ruby 和 Rails)和 Func(根本没有文档,他们的 MediaWiki 已经擦)。对于这种事情,没有什么是好的 80/20 解决方案。当然,您可以拥有一个工具,它可以提供 ControlTier 提供的很多功能,而无需所有开销。

另一种选择是用 Ant 脚本来做所有事情(可能通过我们现有的 Hudson 服务器可用),甚至是某种类型的 Hudson 插件,但我觉得这很笨拙,我只是不喜欢它作为解决方案(另外,我们可能正在重建一些东西我们不需要)。

请告诉我一个好的选择。

0 投票
4 回答
952 浏览

ruby-on-rails - 将 Rails 应用程序部署到多个环境

我正准备部署到真正的生产环境。当我说真的时,我的意思是我当前的生产环境现在将进行暂存,因为服务器上还有其他垃圾,我正在为我的生产机器创建一个更大的新切片。

capistrano-ext gem 使得分离部署配方变得非常容易。但是,我遇到的一个问题是将我的代码从一个切片转移到另一个切片。我在我的暂存切片上设置了一个 git repo,我将用于生产。流程将是:

本地开发 本地测试 从本地推送到舞台 舞台测试 从舞台推送到生产 ...

因此,我显然需要一种方法来在登台和生产之间建立安全连接。部署到生产环境时,我收到“权限被拒绝(公钥)”。错误,因为这没有设置。我怎样才能建立这种连接?我是否需要在我的生产服务器上生成密钥并将公众放在我的登台上?我如何知道我的生产服务器上的哪个用户正在尝试连接到我的登台服务器?

0 投票
1 回答
2399 浏览

bash - Capistrano:外壳示例

我目前正在使用 Capistrano 来部署我的 Web 应用程序,它就像一个魅力。

在我的新项目中,我必须从 sudo /bin/bash shell 执行命令。

Capistrano 是否可以作为用户 X 登录机器,运行 sudo /bin/bash,输入密码,然后在 sudo shell 中执行命令?如果是,请您举个例子。

带着敬意

雅各布

0 投票
1 回答
226 浏览

ruby-on-rails - capistrano 没有重新启动,停止但更新正在工作

我最近更换了机器,并且在更新 Rails 时遇到了一些困难。服务器本身保持原样。一切似乎都很好,但不是capistrano。当我进行更改并更新 SVN 时,运行

存储库的正确新版本被放置在服务器上。运行 capistrano 的终端中的日志显示没有任何异常,但显然实际上没有重新启动,因为服务器继续运行。跑步

生产

但没有发生明显的变化。可能会发生什么?服务器上的 Mongrel 日志显示没有任何变化:它仍在运行更新之前的旧版本。

0 投票
1 回答
2708 浏览

ruby-on-rails - Capistrano 部署 Wipes 数据库?

我已经设法使用 Capistrano 将我的应用程序部署到生产环境,但我不明白如何处理我的数据库。我正在使用颠覆和乘客。

当我运行 cap deploy 时,新的部署会重新开始。它会清除添加到数据库中的数据。显然,必须有一个解决方案,但我很惊讶没有在网上找到任何关于如何处理这个问题的信息。我已经阅读了 Capistrano 文档和许多教程。

我能找到的最好的是 Advanced Rails 食谱书籍,它谈到将用户生成的内容放入共享目录,但它并不完全正确。

使用 Capistrano 部署时如何处理数据库?