有没有一种好方法可以执行 gcloud
命令以将应用程序部署到 GAE 并查看控制台上回显的 stderr/stdout?我尝试过 gulp-exec 但它似乎批量输出,仅在完成后转储。当尝试本地预览时,它也不会很好地播放。
最佳答案
最后我不想使用另一个 npm,但受到 gulp-run
部分的启发,我想出了以下假设“干净”和“build' 任务存在,并且还覆盖了属于我的 'build' 一部分的 gulp-replace 任务的每个环境的一些常量,关键是子 shell 的生成并将其输出通过管道传输到当前进程的:
// gulp deploy [-a dev|staging|prod]
gulp.task('deploy', function() {
var commands = {
remote: 'gcloud preview app deploy app.yaml -q --set-default --project ',
local: 'gcloud preview app run app.yaml'
};
var environments = {
dev: {
app: 'myapp-dev',
},
staging: {
app: 'myapp-staging',
MY_ENDPOINT: 'https://staging.example.com'
},
prod: {
app: 'myapp',
MY_ENDPOINT: 'https://example.com'
}
};
var command = commands.local;
var env = environments[argv.a];
if (env) {
command = commands.remote + env.app;
constantsMap.MY_ENDPOINT = env.MY_ENDPOINT;
}
// Now that our constants are configured, kick off the build, then deploy.
runSequence('clean', 'build', function() {
var title = util.format('$ %s\n', $.util.colors.blue(command));
process.stdout.write(title);
// run the command in its own subshell and pipe the output to our own.
var subshell = childProcess.spawn('sh', ['-c', command]);
subshell.stdout.pipe(process.stdout);
subshell.stderr.pipe(process.stderr);
});
});
这依赖于 npms:run-sequence、util、yargs、gulp-load-plugins
关于google-app-engine - 简单的 gulp 任务部署到谷歌应用程序引擎并将输出流到控制台?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32623815/