从Google云源控制中自动部署Google Cloud功能



我无法弄清楚如何从云源控制或直接从github中自动部署新推出的云功能。我通过创建另一个函数和github webhook找到了类似的解决方案,但是由于功能无法ssh(并且安装了SSH键),因此它仅与公共存储库一起使用。(https://cloud.google.com/community/tutorials/cloud-functions-github-auto-deployer)

有什么想法如何实现这一目标?谢谢

您可以使用Google Cloud Builder实现此目标。在您的存储库上创建一个触发器,触发的构建将新代码部署到Google Cloud函数。

我做了一个快速的示例:https://github.com/philmod/auto-deploy-gcf

欢呼,Philmod

我设法为此问题找到了合理的解决方法。我希望它可以帮助其他人解决同样的问题。

必需的设置

在开始这些步骤之前,您需要在CI/CD系统上设置SSH键。这就是使您的构建系统SSH访问您的私人存储库的原因。这是一些讨论如何做的文章。

  • Gitlab CI 101 -SSH键
  • NPM私人模块的替代品

您还需要通过git+ssh安装软件包,以便将其包含在您的package.json中(以及可选的yarn.lock)。

yarn add git+ssh://git@gitlab.com:erichiggins/top_secret.git

此时,您应该在package.json中看到以下条目:

...
"dependencies": {
  "top_secret": "git+ssh://git@gitlab.com:erichiggins/top_secret.git"
},
...

安装软件包(两次)

这是我在部署阶段之前在CI/CD设置上的Shell脚本中运行的命令,以便使用git+ssh安装私有存储库作为软件包。我将使用top_secret的假软件包名称以使其更清楚。

我在此示例中正在使用yarn和GitLab,但是如果您喜欢的话,npm和GitHub也是如此。))

yarn install
cd node_modules/top_secret
yarn pack
mv top_secret-v*.tgz ../../
cd ../../
yarn add file:top_secret-v1.0.0.tgz

注意: yarn pack命令将产生一个包含版本号的文件名,但是您不能使用通配符(*yarn add。我遇到了使用yarn pack --filename和无版本的文件名的CC_12遇到的问题,因此您可能需要进行硬码或找到使用yarn pack生成的文件名。

的创意解决方案。

结果

如果您尝试在本地运行这两个命令,您会注意到您最终在package.json文件的dependencies部分中只有一个新条目,它看起来像这样:

"top_secret": "file:node_modules/top_secret",

这是发生的事情:

  1. 您正在通过git+ssh在具有访问的系统上安装私人存储库作为软件包。
  2. 您将其从node_modules/目录重新包装到tarball文件(.tgz)。
  3. 您正在使用file:
  4. 从本地TARBALL文件安装相同的软件包
  5. 由于包装名称是相同的,因此用file:输入替换git+ssh的CC_20条目。

现在,您对云功能的部署现在应该在没有任何问题的情况下进行,并包括您的私人包。祝你好运,让我知道您是否对这些说明有任何问题 - 我很乐意纠正任何错误并重写任何不清楚的事情。

替代方法

如果您不介意额外的努力或私人回购的变化频率不够频繁以证明CI/CD中的额外复杂性,也可以使用npm pack/yarn pack来创建TARBALL文件,请运行相同的yarn add file:...命令上面列出的以修改您的package.json并简单地将TARBALL文件检查到您的存储库中。

注意:请注意,如果您要检查tarball file的存储库是公开的,那么您的私人回购/软件包的来源也将公开。

参考:

  • yarn add的文档
  • yarn pack的文档
  • npm pack的文档
  • npm install的文档
  • Gitlab CI 101 -SSH键
  • NPM私人模块的替代品

相关内容

  • 没有找到相关文章

最新更新