Google Cloud构建,如何加快应用程序的构建时间(npm软件包)

时间:2018-11-06 19:54:01

标签: npm google-cloud-platform google-cloud-build

我的Web应用程序在Google Cloud Platform中运行,最近我意识到应用程序的构建时间非常长,尤其是在测试功能时,比如说刷新页面,您会发现启动应用程序确实需要很长时间。我正在寻找的是如何加快这一过程。我正在使用docker映像在Google Cloud Registry上构建。我不想每次都重新构建所有npm软件包,当某些npm软件包中有更新时,我想重新构建应用程序。

这是我用于聚合物的cloudbuild.yaml文件

steps:
- name: 'gcr.io/cloud-builders/docker'
  args: [ 'build', '-t', 'gcr.io/$PROJECT_ID/myapp-polymer', '.' ]
images:
- 'gcr.io/$PROJECT_ID/myapp-polymer'

然后这是我的主要cloudbuild.yaml文件

steps:
- name: 'gcr.io/cloud-builders/npm'
  args: ['--prefix', 'myapp','install']
- name: 'gcr.io/cloud-builders/npm'
  args: ['--prefix', 'myapp/functions', 'install']
- name: 'gcr.io/$PROJECT_ID/myapp-polymer'
  args: ['cd', 'myapp']
- name: 'gcr.io/$PROJECT_ID/myapp-polymer'
  args: ['build']

我阅读了Google Cloud API,特别是“加快构建速度”一节(https://cloud.google.com/cloud-build/docs/speeding-up-builds

我认为它只是缓存构建图像并使用它。有什么方法可以在Google Cloud中专门缓存npm软件包,依赖项等,从而不必每次都构建整个应用程序?我的主要目标是减少构建时间,加快构建过程。

谢谢!

2 个答案:

答案 0 :(得分:0)

您可以使用docker。

将您的npm应用程序放入docker。然后,您可以将docker映像(将docker映像的某些层上载)推送到云注册表中,例如gcr(Google云注册)。在构建步骤之前,您可以从gcr中提取图像。

构建步骤大致如下:

- name: 'gcr.io/cloud-builders/docker'
  args: [
          'build',
          '-t', 'test_image',
          '-f', 'Dockerfile',
          '.'
        ]
  id: 'build_test_image'

答案 1 :(得分:0)

您尝试过Kaniko吗?它可以将缓存保存在gcr.io中,并且如果您以正确的步骤构建了Dockerfile(请参见https://cloud.google.com/blog/products/gcp/7-best-practices-for-building-containers),则可以节省很多时间。这是cloudbuild.yaml示例:

- name: 'gcr.io/kaniko-project/executor:latest'
  args:
  - --destination=gcr.io/$PROJECT_ID/image
  - --cache=true
  - --cache-ttl=XXh

更多信息:https://cloud.google.com/cloud-build/docs/kaniko-cache