几个月来,我们的工作配置一直很好,但大约1.5周前,情况开始变得不稳定。有时它可以运行,有时不能。
我们曾经在我们的 run-tests.yml 文件中这样写:
- name: Install SwiftLint
run: brew install swiftlint
9天前,测试突然在这一步骤失败。以下是来自GitHub Actions的日志:
==> 正在倒入swiftlint-0.42.0.catalina.bottle.tar.gz
错误:
brew link
步骤未成功完成 该公式已构建,但未链接到 /usr/local 无法创建 bin/swiftlint 的符号链接 目标 /usr/local/bin/swiftlint 已存在。您可能需要将其删除: rm '/usr/local/bin/swiftlint'要强制进行链接并覆盖所有冲突文件: brew link --overwrite swiftlint
要列出将被删除的所有文件: brew link --overwrite --dry-run swiftlint
可能会发生冲突的文件为: /usr/local/bin/swiftlint
==> 总结 /usr/local/Cellar/swiftlint/0.42.0: 6个文件,12.2MB 错误:进程以退出代码1完成。
经过一些研究,查看错误消息并看到其他作业成功运行(这意味着SwiftLint可以正确安装),我们决定设置一个故障转移机制:尝试链接现有的SwiftLint,如果失败则简单安装它:
- name: Link SwiftLint or install it
run: brew link --overwrite swiftlint || brew install swiftlint
这个在前几天是有效的,但昨天又出现了。错误日志让我们感到困惑,因此我们决定在这里询问其他人是否也遇到了这个问题,并了解如何解决。错误日志:
运行brew link --overwrite swiftlint || brew install swiftlint 错误:没有这样的桶:/usr/local/Cellar/swiftlint ==> 从https://homebrew.bintray.com/bottles/swiftlint-0.42.0.catalina.bottle.tar.gz下载 ==> 从https://d29vzk4ow07wi7.cloudfront.net/e9023ed754eb8cb78a9f2b469a90875ca42a7afffd3e96f8142252e81d889793?response-content-disposition=attachment%3Bfilename%3D%22swiftlint-0.42.0.catalina.bottle.tar.gz%22&Policy=eyJTdGF0ZW1lbnQiOiBbeyJSZXNvdXJjZSI6Imh0dHAqOi8vZDI5dnprNG93MDd3aTcuY2xvdWRmcm9udC5uZXQvZTkwMjNlZDc1NGViOGNiNzhhOWYyYjQ2OWE5MDg3NWNhNDJhN2FmZmZkM2U5NmY4MTQyMjUyZTgxZDg4OTc5Mz9yZXNwb25zZS1jb250ZW50LWRpc3Bvc2l0aW9uPWF0dGFjaG1lbnQlM0JmaWxlbmFtZSUzRCUyMnN3aWZ0bGludC0wLjQyLjAuY2F0YWxpbmEuYm90dGxlLnRhci5neiUyMiIsIkNvbmRpdGlvbiI6eyJEYXRlTGVzc1RoYW4iOnsiQVdTOkVwb2NoVGltZSI6MTYxMTgzMjUzNH0sIklwQWRkcmVzcyI6eyJBV1M6U291cmNlSXAiOiIwLjAuMC4wLzAifX19XX0_&Signature=lH2~FMqNvi1jQxbtgvCFQoZPh3SFuZa3JCgsZ1h3cie4zpArrLUxmRU6OpNk0tgEJ9y3IWpYtBs6xz-NsyeYgZQkbwLGjPA42wBxzT2CfaOgCXlUEK6a7ve5ar7NwOOOUBmr1ypkraZkAP3OVEZ89TFj-ztS8rhGrUNQ3juJOKj11V-SSn07zZVuKwbNsLHqsjHSjqigrRHDng3lQPUE-al~coYbjTED2n87I4lbWSM2m9x30C-vrE5rrKHMyAqgTMiPxECz9ml8pMAuxisNNhLVsg2QySRsw5VtIjJi1h0WglzxHai37yV6fnzuuduDzlhPxtFx1jnvNEkpU5~mGg__&Key-Pair-Id=APKAIFKFWOMXM2UMTSFA下载 ==> 倒入swiftlint-0.42.0.catalina.bottle.tar.gz 错误:brew链接步骤未成功完成 公式已构建,但未链接到/usr/local 无法创建符号链接bin/swiftlint 目标/usr/local/bin/swiftlint 已经存在。您可能想要删除它: rm'/usr/local/bin/swiftlint' 要强制链接并覆盖所有冲突文件: brew link --overwrite swiftlint 要列出将被删除的所有文件: brew link --overwrite --dry-run swiftlint 可能会发生冲突的文件是: /usr/local/bin/swiftlint ==> 总结 /usr/local/Cellar/swiftlint/0.42.0:6个文件,12.2MB 错误:进程以退出代码1完成。
首先它说无法链接现有的SwiftLint。好的。然后它继续下载它...然后它说无法链接,因为它已经存在?!
当然,我们可以继续尝试以下操作:
- name: Link SwiftLint or install it
run: brew link --overwrite swiftlint || brew install swiftlint || brew link --overwrite swiftlint
但这似乎太hacky,必须有更好的解决方案。
非常感谢您提供的想法和解决方案。