Sau*_*ank 7 docker github-actions
我认为这对其他人有用。
我正在使用https://github.com/phips28/gh-action-bump-version在 Github Actions 中自动提升 NPM 版本。
有没有办法缓存这个动作的 docker 图像,这样它就不必每次都构建?它需要很长时间才能运行,并且它会在其余步骤之前预先运行。我确信这对于提取 docker 图像的类似类型的 Github Actions 来说很常见。
docker 镜像看起来很瘦,所以我不确定尝试优化镜像本身会有什么好处。更多关于如何配置 Github Actions。
有什么建议?
有些!您可以将 GitHub 工作流程文件更改为pull存储库中的图像,而不是building每次运行。虽然这不会缓存图像,但速度要快得多。这可以通过将流程编辑为如下所示来实现:
- name: \'Automated Version Bump\'\n id: version-bump\n uses: \'docker://phips28/gh-action-bump-version:master\'\n with:\n tag-prefix: \'v\'\n env:\n GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}\n\nRun Code Online (Sandbox Code Playgroud)\n请注意语句docker://的前缀uses:,以及从@master到 的更改:master,以便将名称转换为有效的图像名称。
我已经在该存储库上打开了一个PR,并提供了建议的修复:^)
\n这是一个非常好的问题,但在官方文档中几乎找不到相关信息(尽管GitHub 在其文档中承认了这一延迟)。
\n我搜索了您,并设法在 GitHub 社区论坛上找到了 2019 年 9 月关于这个主题的文章。它不可避免地与 2019 年 7 月的这篇文章相关联。
\n有一个关于每次构建如何仍然利用 docker 构建缓存、减少时间、但在使用最新版本的基础镜像等方面允许灵活性的精彩解释。
\n如果您不关心更新的灵活性,并且只想尽可能缩短构建时间,那么有一个建议的解决方案,尽管我不确定该语法当前是否仍然有效:
\n\n\n但是让\xe2\x80\x99s 说我不\xe2\x80\x99s 不希望我的Action 在每次Action 运行时都评估Dockerfile,因为我想要绝对最快的运行时间。我想要一个预定义的 Docker 容器启动并开始工作。你也可以拥有!如果您创建 Docker 映像并将其上传到 Docker Hub 或其他公共注册表,则可以指示您的操作使用该 Docker 映像,特别是在使用项中使用 docker:// 形式。有关详细信息,请参阅 GitHub Actions 文档 72。这需要更多的前期工作和维护,但如果您不需要上述 Dockerfile 评估系统提供的灵活性,那么可能值得进行权衡。
\n
不幸的是, Github 操作文档的链接已损坏,但这确实表明该操作的作者如果修改了操作,则可以允许此行为
\n如果您需要能够控制执行器主机上的缓存(以真正缓存图像),那么您可能会考虑托管自己的 GitHub runner,因为您可以完全控制那里的图像。尽管我认为这可能是一种威慑,因为 GitHub actions 很大程度上是一项免费服务(有限制,这可能是其中之一!)
\n您可能需要考虑添加一个利用文件缓存操作的任务,并尝试通过或导出gh-action-bump-version到文件内容,然后在下次运行时重新填充它。然而,这会带来复杂性,从长远来看可能不会节省您的时间。。编辑:这是一个可怕的想法,因为我们知道操作可以支持从注册表中提取图像。docker commitdocker save
我希望这对您以及其他寻求更多信息的人有所帮助
\n小智 -1
docker 博客上有一篇很棒的文章,解释了如何使用 actions/cache 和 buildx 缓存 docker 镜像(它允许您指定自定义缓存路径)。可以在这里找到: https: //www.docker.com/blog/docker-github-actions/。
| 归档时间: |
|
| 查看次数: |
793 次 |
| 最近记录: |