从谷歌云计算引擎上的启动脚本中提取git repo

时间:2018-01-15 08:28:59

标签: node.js ssh gitlab ubuntu-16.04 gcloud

为了向我的团队展示我正在构建的应用程序是如何进展的,我在Google云计算引擎上创建了一个小型开发服务器。通常关闭此服务器以节省成本,并且仅在我们一起工作时才打开。当服务器未开启时,我正在开发并推送到git repo。当我启动服务器时,应该拉出最新的更改,安装节点包和节点服务器。为此,我创建了以下启动脚本:

#! /bin/bash
cd /to/my/server/folder
git pull
sudo npm install --no-progress
nohup node src/ &

我已经创建了一个ssh密钥,并在我的gitlab帐户中添加了这个特定仓库中的只读部署密钥。该脚本在服务器上进行测试,完全正常。现在有趣的部分。 当脚本作为启动脚本(https://cloud.google.com/compute/docs/startupscript)运行时,它不起作用。错误:

permission denied (public key)
fatal: could not read from repo make sure it exists.

我试过这些修补程序: Getting permission denied (public key) on gitlab。问题是他们一般不能拉回git回购。在我的情况下,它从命令行工作正常,它从shell脚本工作正常,但它只是从启动脚本不起作用。

我还在整个频谱上尝试了很多其他的东西来自'可能是它'一个疯狂的猜测'。显然,我在这里缺少一些东西。任何人都可以帮我吗?

1 个答案:

答案 0 :(得分:1)

最后在这里找到答案:https://superuser.com/a/868699/852795。显然,谷歌启动脚本中使用的SSH密钥出了问题。解决方案是明确告诉git使用什么密钥。像这样:GIT_SSH_COMMAND="ssh -i ~/.ssh/id_rsa" git pull