将代码部署部署到数字海洋工作

Getting codeship deployments to digital ocean working

天啊,为什么这么难。我现在已经花了 3 天的时间试图让这个看似简单的垃圾工作。

我需要它: - npm 安装在 CI 服务器上(有效) - 运行 测试(有效) - 构建 angular 前端(有效) - 通过 rsync 将代码发送到服务器(有效) - ssh 进入服务器(有效) - - 和 npm install(不起作用。我认为是因为 npm 警告而死) - - 重新启动 pm2 进程(不起作用,因为没有优雅的方式说开始或重新启动)

在部署步骤,我在 codeship 中有这个脚本 UI

rsync -avz --exclude 'node_modules' ~/clone/
root@xxx.xxx.xxx.xxx:/root/my-project/
ssh root@xxx.xxx.xxx.xxx cd /root/my-project && bash ./postDeploy.sh

那么postDeploy.sh脚本是这样的:

#!/bin/sh
export PATH=$PATH:/usr/local/bin
npm install --silent &> /dev/null
/usr/local/bin/pm2 stop --silent keystone &> /dev/null
/usr/local/bin/pm2 start keystone.js 2> /dev/null

我正试图用这个技巧来克服错误。 &> /dev/null

不幸的是,项目中有一些漏洞深藏在核心模块中,我无法修复,因此在这种情况下我需要 npm 保持安静。

然后是有点烦人的 PM2 问题。我需要发出停止命令,但如果服务不是 运行ning 它将失败,所以我需要再次吞下错误。启动命令可能没问题。

我想也许现在发生的事情是因为我吞下了所有输出 codeship 的脚本 运行ner 假设它失败了?

我尝试使用半生不熟的调试工具,但当我尝试登录时它神奇地要求我输入密码...嗯?

还有@codeship,如果 google 已编入索引的 80% 的有用文章不会导致您网站上出现死页,那就太棒了...

I have tried to use the half-baked debug tool, but it magically asks me for a password when I try to login in... Eh?

我会说这是一种正确的直觉。有太多可能的情况可以解释为什么您会遇到这些意外行为,而且 运行 使用 ssh 调试会话实时构建很可能会查明原因。

请参阅我们的 troubleshooting password prompts for ssh debug sessions 文档部分。

如果 ssh 调试会话无法解决您的问题,请通过 support@codeship.com 与我们联系并提供您的构建 url,我们将仔细研究。