Google 云构建,如何加快应用程序的构建时间(npm 包)
Google Cloud Builds, How to speed up build time of application(npm packages)
我的网络应用程序运行在Google云平台,最近我发现应用程序的构建时间真的很长,尤其是当你在测试一个功能的时候,比方说刷新页面,你可以看到它确实需要很久才开始申请。我正在寻找的是如何加快这个过程。我正在使用 docker 图像在 google 云注册表上构建。我不想每次都重新构建所有 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 云 API 特别是 "Speeding up your Builds" 部分 (https://cloud.google.com/cloud-build/docs/speeding-up-builds)
我认为它只是缓存构建图像并使用它。有什么方法可以在 Google Cloud 中专门缓存 npm 包、依赖项等,这样我就不必每次都构建整个应用程序了吗?我的主要目标是减少构建时间,加快构建过程。
谢谢!
您可以使用 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'
你试过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
我的网络应用程序运行在Google云平台,最近我发现应用程序的构建时间真的很长,尤其是当你在测试一个功能的时候,比方说刷新页面,你可以看到它确实需要很久才开始申请。我正在寻找的是如何加快这个过程。我正在使用 docker 图像在 google 云注册表上构建。我不想每次都重新构建所有 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 云 API 特别是 "Speeding up your Builds" 部分 (https://cloud.google.com/cloud-build/docs/speeding-up-builds)
我认为它只是缓存构建图像并使用它。有什么方法可以在 Google Cloud 中专门缓存 npm 包、依赖项等,这样我就不必每次都构建整个应用程序了吗?我的主要目标是减少构建时间,加快构建过程。
谢谢!
您可以使用 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'
你试过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