微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

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

如何解决仅在首次使用 Skaffold 构建后才忽略对映像中文件的更新?

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

有时我不主动更新 Angular 方面的内容,我希望它只构建最新的文件,然后在我再次运行 skaffold dev 之前不再检查它们的更新。

目前,Angular 图像的 skaffold.yaml 如下所示:

    - image: angular
      context: ../Images/angular
      custom:
        dependencies:
          ignore: ['../Images/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

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


你可以通过运行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 模式。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。