【问题标题】:Capistrano V3 failing on database.ymlCapistrano V3 在 database.yml 上失​​败
【发布时间】:2013-10-22 13:58:13
【问题描述】:

我正在使用最新版本的 Capistrano 和我的 Rails 4 应用程序。运行cap dpeloy 时。我得到了很多输出,包括这个失败:

DEBUG [04b6e226] Running /usr/bin/env [ -f /var/www/skateboxes/releases/20131022135522/config/database.yml ] on 162.243.33.179
DEBUG [04b6e226] Command: [ -f /var/www/skateboxes/releases/20131022135522/config/database.yml ]
DEBUG [04b6e226] Finished in 0.280 seconds with exit status 1 (failed).

我如何弄清楚这里发生了什么?

更新 #1

我应该说我已经 gitignored config/database.yml (正如 capistrano 文档所建议的那样)。然后我将以下内容添加到我的config/deploy.rb

set :linked_files, %w{config/database.yml}

然后我在我的 VPS 上创建了一个文件 /var/www/skateboxes/shared/config/database.yml

我不了解linked_files 的工作原理吗?

更新 #2

事实证明该文件实际上是从shared/conf/database.yml 链接到current/config/database.yml 所以现在我很困惑为什么它说failed

更新 #3

这是我的部署的全部输出

DEBUG Uploading /tmp/git-ssh.sh 0.0%
 INFO Uploading /tmp/git-ssh.sh 100.0%
 INFO [37fffef8] Running /usr/bin/env chmod +x /tmp/git-ssh.sh on 162.243.33.179
DEBUG [37fffef8] Command: ( RAILS_ENV=production /usr/bin/env chmod +x /tmp/git-ssh.sh )
 INFO [37fffef8] Finished in 0.282 seconds with exit status 0 (successful).
DEBUG [d8542e52] Running /usr/bin/env git ls-remote git@github.com:kyledecot/skateboxes.git on 162.243.33.179
DEBUG [d8542e52] Command: ( RAILS_ENV=production GIT_ASKPASS=/bin/echo GIT_SSH=/tmp/git-ssh.sh /usr/bin/env git ls-remote git@github.com:kyledecot/skateboxes.git )
DEBUG [d8542e52] Finished in 1.448 seconds with exit status 0 (successful).
DEBUG [d8542e52]    e0f96188b9567a84048a0e1238f219abc6351607    HEAD
DEBUG [d8542e52]    e0f96188b9567a84048a0e1238f219abc6351607    refs/heads/master
DEBUG [d8542e52] Finished in 1.448 seconds with exit status 0 (successful).
 INFO [5a13328b] Running /usr/bin/env mkdir -pv /var/www/skateboxes/shared /var/www/skateboxes/releases on 162.243.33.179
DEBUG [5a13328b] Command: ( RAILS_ENV=production /usr/bin/env mkdir -pv /var/www/skateboxes/shared /var/www/skateboxes/releases )
 INFO [5a13328b] Finished in 0.719 seconds with exit status 0 (successful).
 INFO [293e065b] Running /usr/bin/env mkdir -pv /var/www/skateboxes/shared/config on 162.243.33.179
DEBUG [293e065b] Command: ( RAILS_ENV=production /usr/bin/env mkdir -pv /var/www/skateboxes/shared/config )
 INFO [293e065b] Finished in 0.780 seconds with exit status 0 (successful).
DEBUG [4eb81576] Running /usr/bin/env [ -f /var/www/skateboxes/shared/config/database.yml ] on 162.243.33.179
DEBUG [4eb81576] Command: [ -f /var/www/skateboxes/shared/config/database.yml ]
DEBUG [4eb81576] Finished in 0.744 seconds with exit status 0 (successful).
DEBUG [89a9e1fa] Running /usr/bin/env [ -f /var/www/skateboxes/repo/HEAD ] on 162.243.33.179
DEBUG [89a9e1fa] Command: [ -f /var/www/skateboxes/repo/HEAD ]
DEBUG [89a9e1fa] Finished in 0.734 seconds with exit status 0 (successful).
 INFO The repository mirror is at /var/www/skateboxes/repo
DEBUG [3cc4d694] Running /usr/bin/env if test ! -d /var/www/skateboxes/repo; then echo "Directory does not exist '/var/www/skateboxes/repo'" 1>&2; false; fi on 162.243.33.179
DEBUG [3cc4d694] Command: if test ! -d /var/www/skateboxes/repo; then echo "Directory does not exist '/var/www/skateboxes/repo'" 1>&2; false; fi
DEBUG [3cc4d694] Finished in 0.735 seconds with exit status 0 (successful).
 INFO [1cb24a84] Running /usr/bin/env git remote update on 162.243.33.179
DEBUG [1cb24a84] Command: cd /var/www/skateboxes/repo && ( RAILS_ENV=production /usr/bin/env git remote update )
DEBUG [1cb24a84]    Fetching origin
DEBUG [1cb24a84]    remote: Counting objects: 5, done.
remote: Compressing objects: 100% (1/1), done.
DEBUG [1cb24a84]    remote: Total 3 (delta 2), reused 3 (delta 2)
DEBUG [1cb24a84]    Unpacking objects:  33% (1/3)
DEBUG [1cb24a84]    Unpacking objects:  66% (2/3)
Unpacking objects: 100% (3/3), done.jects: 100% (3/3)
DEBUG [1cb24a84]    From github.com:kyledecot/skateboxes
DEBUG [1cb24a84]       de7f4a1..e0f9618  master     -> master
 INFO [1cb24a84] Finished in 0.817 seconds with exit status 0 (successful).
DEBUG [edd6c793] Running /usr/bin/env if test ! -d /var/www/skateboxes/repo; then echo "Directory does not exist '/var/www/skateboxes/repo'" 1>&2; false; fi on 162.243.33.179
DEBUG [edd6c793] Command: if test ! -d /var/www/skateboxes/repo; then echo "Directory does not exist '/var/www/skateboxes/repo'" 1>&2; false; fi
DEBUG [edd6c793] Finished in 0.732 seconds with exit status 0 (successful).
 INFO [009b81fe] Running /usr/bin/env mkdir -p /var/www/skateboxes/releases/20131022145520 on 162.243.33.179
DEBUG [009b81fe] Command: cd /var/www/skateboxes/repo && ( RAILS_ENV=production GIT_ASKPASS=/bin/echo GIT_SSH=/tmp/git-ssh.sh /usr/bin/env mkdir -p /var/www/skateboxes/releases/20131022145520 )
 INFO [009b81fe] Finished in 0.317 seconds with exit status 0 (successful).
 INFO [e9554374] Running /usr/bin/env git archive master | tar -x -C /var/www/skateboxes/releases/20131022145520 on 162.243.33.179
DEBUG [e9554374] Command: cd /var/www/skateboxes/repo && ( RAILS_ENV=production GIT_ASKPASS=/bin/echo GIT_SSH=/tmp/git-ssh.sh /usr/bin/env git archive master | tar -x -C /var/www/skateboxes/releases/20131022145520 )
 INFO [e9554374] Finished in 0.356 seconds with exit status 0 (successful).
 INFO [165a7c40] Running /usr/bin/env mkdir -pv /var/www/skateboxes/releases/20131022145520/config on 162.243.33.179
DEBUG [165a7c40] Command: ( RAILS_ENV=production /usr/bin/env mkdir -pv /var/www/skateboxes/releases/20131022145520/config )
 INFO [165a7c40] Finished in 1.174 seconds with exit status 0 (successful).
DEBUG [c2f7de66] Running /usr/bin/env [ -L /var/www/skateboxes/releases/20131022145520/config/database.yml ] on 162.243.33.179
DEBUG [c2f7de66] Command: [ -L /var/www/skateboxes/releases/20131022145520/config/database.yml ]
DEBUG [c2f7de66] Finished in 0.572 seconds with exit status 1 (failed).
DEBUG [09de2f2c] Running /usr/bin/env [ -f /var/www/skateboxes/releases/20131022145520/config/database.yml ] on 162.243.33.179
DEBUG [09de2f2c] Command: [ -f /var/www/skateboxes/releases/20131022145520/config/database.yml ]
DEBUG [09de2f2c] Finished in 0.304 seconds with exit status 1 (failed).
 INFO [05570e6e] Running /usr/bin/env ln -s /var/www/skateboxes/shared/config/database.yml /var/www/skateboxes/releases/20131022145520/config/database.yml on 162.243.33.179
DEBUG [05570e6e] Command: ( RAILS_ENV=production /usr/bin/env ln -s /var/www/skateboxes/shared/config/database.yml /var/www/skateboxes/releases/20131022145520/config/database.yml )
 INFO [05570e6e] Finished in 0.541 seconds with exit status 0 (successful).
 INFO [8499b753] Running /usr/bin/env rm -rf /var/www/skateboxes/current on 162.243.33.179
DEBUG [8499b753] Command: ( RAILS_ENV=production /usr/bin/env rm -rf /var/www/skateboxes/current )
 INFO [8499b753] Finished in 0.762 seconds with exit status 0 (successful).
 INFO [bddc6793] Running /usr/bin/env ln -s /var/www/skateboxes/releases/20131022145520 /var/www/skateboxes/current on 162.243.33.179
DEBUG [bddc6793] Command: ( RAILS_ENV=production /usr/bin/env ln -s /var/www/skateboxes/releases/20131022145520 /var/www/skateboxes/current )
 INFO [bddc6793] Finished in 0.289 seconds with exit status 0 (successful).
DEBUG [38a6b176] Running /usr/bin/env ls -x /var/www/skateboxes/releases on 162.243.33.179
DEBUG [38a6b176] Command: ( RAILS_ENV=production /usr/bin/env ls -x /var/www/skateboxes/releases )
DEBUG [38a6b176] Finished in 0.741 seconds with exit status 0 (successful).
DEBUG [38a6b176]    20131022133912  20131022133939  20131022134435  20131022135522  20131022145350
DEBUG [38a6b176]    20131022145520
DEBUG [38a6b176] Finished in 0.741 seconds with exit status 0 (successful).
 INFO Keeping 5 of 6 deployed releases on 162.243.33.179
 INFO [7da6047f] Running /usr/bin/env rm -rf /var/www/skateboxes/releases/20131022133912 on 162.243.33.179
DEBUG [7da6047f] Command: ( RAILS_ENV=production /usr/bin/env rm -rf /var/www/skateboxes/releases/20131022133912 )
 INFO [7da6047f] Finished in 0.530 seconds with exit status 0 (successful).
DEBUG [7cdd5da9] Running /usr/bin/env if test ! -d /var/www/skateboxes/releases; then echo "Directory does not exist '/var/www/skateboxes/releases'" 1>&2; false; fi on 162.243.33.179
DEBUG [7cdd5da9] Command: if test ! -d /var/www/skateboxes/releases; then echo "Directory does not exist '/var/www/skateboxes/releases'" 1>&2; false; fi
DEBUG [7cdd5da9] Finished in 0.727 seconds with exit status 0 (successful).
 INFO [906548e8] Running /usr/bin/env echo "Branch master deployed as release 20131022145520 by kyledecot; " >> /var/www/skateboxes/revisions.log on 162.243.33.179
DEBUG [906548e8] Command: echo "Branch master deployed as release 20131022145520 by kyledecot; " >> /var/www/skateboxes/revisions.log
 INFO [906548e8] Finished in 0.279 seconds with exit status 0 (successful).

【问题讨论】:

  • 这个文件是你的 git 仓库的一部分吗?确定你没有 .gitignore 吗?
  • 确实被忽略了。我已经更新了我的问题。

标签: ruby-on-rails ruby ruby-on-rails-4 capistrano


【解决方案1】:

这不是失败,请参阅https://github.com/leehambley/sshkit/pull/33

上面写着failed,因为它不是一个文件,因此测试命令([又名man (1) test)已经退出,状态为1

有问题的命令来自this code,转载如下:

desc 'Symlink linked files'
task :linked_files do
  next unless any? :linked_files
  on roles :app do
    execute :mkdir, '-pv', linked_file_dirs(release_path)

    fetch(:linked_files).each do |file|
      target = release_path.join(file)
      source = shared_path.join(file)
      unless test "[ -L #{target} ]"
        if test "[ -f #{target} ]"
          execute :rm, target
        end
        execute :ln, '-s', source, target
      end
    end
  end
end
desc 'Check files to be linked exist in shared'
task :linked_files do
  next unless any? :linked_files
  on roles :app do |host|
    linked_files(shared_path).each do |file|
      unless test "[ -f #{file} ]"
        error t(:linked_file_does_not_exist, file: file, host: host)
        exit 1
      end
    end
  end
end

任务名称说明了一切,真的,如果你的文件列在:linked_files变量中,那么它必须存在于shared_path中,否则会导致Capistrano在文件不存在时中止。

你还没有说这是否会导致你的部署失败,而且由于你发布的日志太少,只表明正常行为,没有人能猜到。

您似乎正在发布来自Symlink linked files 任务的日志,该任务应该在config/database.ymlfail,如果它不存在,它有failed 可以找到它,所以它不必被删除。

【讨论】:

  • 好的,我已经更新了我的问题并提供了更多详细信息。也许我对实际应该发生的事情感到困惑。
  • 这不会导致部署失败。我已经用完整的输出更新了我的帖子。
  • 我只是不确定这里的问题是什么,这是成功部署的日志。
  • 至于为什么说“失败”,请参阅我回答中的第一个链接。
  • 我猜它部署正常,但它说“失败”,因为这个文件一开始不存在(直到它符号链接它)。我猜输出有点误导。看到一个红色的“失败”就好像出了什么问题。
猜你喜欢
  • 1970-01-01
  • 2013-09-15
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-12-03
  • 1970-01-01
  • 2012-03-29
  • 1970-01-01
相关资源
最近更新 更多