仅在首次使用 Skaffold 构建后才忽略图像中文件的更新?

Ignore updates to files in image only after building with Skaffold for the first time?

我有一个包含 Angular 项目的部署。为了测试我的 Angular 项目,我使用 ng serve 来托管我可以连接到的自己的快速更新服务器。为了开发,我非常频繁地保存和编辑这些文件。因为这个图像用于我的 Skaffold 部署,这意味着 Skaffold 不断地重建和编译我的 angular 项目。

在我没有主动更新 Angular 方面的时候,我希望它只构建最新的文件,然后在 [=39] 之前不再检查它们的更新=] skaffold dev 再一次。

目前 skaffold.yaml 图片的 Angular 看起来像这样:

    - image: angular
      context: ../Images/angular
      custom:
        dependencies:
          ignore: ['../Images/angular']

这成功地 运行s 一次 angular 图像,然后再也不会检查它的更新,但如果我对其进行更改,请停止 Skaffold,然后 运行 skaffold dev 同样,它不会重建图像。

我理解为什么这样做,这是有道理的,也是意料之中的。但是我想知道是否有更好的方法来处理在开发过程中快速变化的图像的图像构建,例如 Vue/Angular/React。或者也许有更好的方法将文件定义为在 skaffold dev 期间被更改忽略,而不是 运行 之间的所有更改。

我想停止不断构建它以节省笔记本电脑电池的主要原因。

Skaffold 支持其他触发模式,包括手动触发模式:

skaffold dev --trigger=manual

Skaffold 将等待您点击 enter 以启动下一个开发重建。

另一种方法是使用 Skaffold Control API 切换自动构建。例如,您可以使用 REST API 关闭自动构建:

curl -X PUT -d '{"enabled":false}' localhost:50052/v1/build/auto_execute

然后您可以根据需要重新启用它。如果您希望构建映像但不部署(例如,查看构建时错误),则可以使用控件 API 切换自动部署,您也可以手动触发 builds/deploys/sync .


可以通过运行skaffold dev -v info找到控制端口; gRPC 端口通常为 50051,REST 端口通常为 50052:

$ skaffold dev -v info
INFO[0000] starting gRPC server on port 50051
INFO[0000] starting gRPC HTTP server on port 50052
INFO[0000] Skaffold &{Version:v1.23.0 ConfigVersion:skaffold/v2beta15 GitVersion: GitCommit:e8f3c652112c338e75e03497bc8ab09b9081142d BuildDate:2021-04-28T00:55:12Z GoVersion:go1.14.14 Compiler:gc Platform:darwin/amd64} 
...

或者您可以显式配置一个端口:

skaffold dev --rpc-http-port=50099

对于旧版本的 Skaffold,您可能需要使用 --enable-rpc 显式打开 RPC 模式。