在我的项目中,我有两台服务器:开发和生产。我正在使用Git管理静态文件(CSS / JS等),并使用Grunt管理数据库。但是在部署数据库之后,我需要从生产服务器中删除Cache文件夹。我怎么能和Grunt一起做?
顺便说一下,我可以在没有使用Grunt的Git的情况下管理我的文件吗?
提前致谢。
答案 0 :(得分:2)
正如我想的那样,这很容易:
对于这个任务之王,您只需要grunt-shell和grunt-ssh个包裹。我只遇到一个问题--SSH拒绝连接,因为ssh-agent目前还没有激活。以下是将git提交提取到远程服务器并部署数据库的示例代码:
shell: {
git: {
command: ['eval `ssh-agent -s`', 'ssh-add ~/.ssh/yourKey.pem', 'grunt sshexec:gitpull'].join(' && ')
},
db: {
command: ['eval `ssh-agent -s`', 'ssh-add ~/.ssh/yourKey.pem', 'grunt db_push', 'grunt sshexec:clear'].join(' && ')
}
},
sshexec: {
gitpull: {
command: ['cd /var/www/', 'sudo -u yourSudoUser git pull --no-edit'].join("&&"),
options: {
host: 'youHost.com',
username: 'username',
agent: process.env.SSH_AUTH_SOCK
}
},
clearCache: {
command: ['cd /var/www/core', 'sudo rm -rf cache'].join("&&"),
options: {
host: 'yourHost.com',
username: 'username',
agent: process.env.SSH_AUTH_SOCK
}
}
}
- 无编辑 - 如果没有设置,git会提供GNU nano的窗口,您必须在其中编辑提交消息。此窗口无法关闭,因为Nano快捷方式在当前会话中不起作用。
'eval ssh-agent -s
','ssh-add~ / .ssh / yourKey.pem' - 启动 SSH-agent 并添加keyPair。 NB!请注意,在ssh-agent启动后,在shell任务中执行 grunt sshexec:gitpull 。否则,在单独的任务中执行sshexec时,您将无法访问ssh-agent。
'grunt db_push' - grunt-deployments 模块的任务。
还有一件事:考虑将Grunt和npm更新为npm update npm -g
和npm install grunt@0.4.4 -g
的最新版本。更新后,这个任务非常顺利。