Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/google-cloud-platform/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
谷歌云构建,如何加快应用程序的构建时间(npm包)_Npm_Google Cloud Platform_Google Cloud Build - Fatal编程技术网

谷歌云构建,如何加快应用程序的构建时间(npm包)

谷歌云构建,如何加快应用程序的构建时间(npm包),npm,google-cloud-platform,google-cloud-build,Npm,Google Cloud Platform,Google Cloud Build,我的web应用程序运行在Google云平台上,最近我意识到应用程序的构建时间非常长,特别是当您测试一个功能时,比如说刷新页面,您可以看到启动应用程序需要非常长的时间。我想要的是如何加快这个过程。我正在使用docker图像在google云注册表上构建。我不想每次都重新构建所有npm包,当某些npm包中有更新时,我想重新构建应用程序 这是聚合物的my cloudbuild.yaml文件 steps: - name: 'gcr.io/cloud-builders/docker' args: [ '

我的web应用程序运行在Google云平台上,最近我意识到应用程序的构建时间非常长,特别是当您测试一个功能时,比如说刷新页面,您可以看到启动应用程序需要非常长的时间。我想要的是如何加快这个过程。我正在使用docker图像在google云注册表上构建。我不想每次都重新构建所有npm包,当某些npm包中有更新时,我想重新构建应用程序

这是聚合物的my 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']
我读过谷歌云API,特别是加速构建一节

我认为它只是缓存构建图像并使用它。有没有什么方法可以在谷歌云中专门缓存npm包、依赖项等,这样我就不必每次构建整个应用程序?我的主要目标是减少构建时间,加快构建过程

谢谢

你可以用docker

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

这是构建步骤的大致情况:

- name: 'gcr.io/cloud-builders/docker'
  args: [
          'build',
          '-t', 'test_image',
          '-f', 'Dockerfile',
          '.'
        ]
  id: 'build_test_image'
你试过Kaniko吗?它可以将缓存保存在gcr.io中,如果您使用正确的步骤构建了Dockerfile,请参见,它将为您节省大量时间。以下是cloudbuild.yaml示例:


更多信息:

Hello@markushinsche,感谢您的回复!实际上,我在docker中找到了我的应用程序,我想在googlebuild.yaml主目录中的构建步骤之前尝试一下,我想比较package.json文件。若并没有更新,那个么我不想再次安装所有的npm包。但我不知道如何比较docker外部和内部的package.json文件。我想运行我的javascript文件并发送两个package.json检查它们是否相等,然后我想创建映像npm I缓存或npm安装-取决于条件结果。在docker文件中如何运行if-else运行命令:您找到如何正确地执行此操作了吗?
- name: 'gcr.io/kaniko-project/executor:latest'
  args:
  - --destination=gcr.io/$PROJECT_ID/image
  - --cache=true
  - --cache-ttl=XXh