swift - GitHub Actions 上的 SwiftLint 安装步骤失败
问题描述
最近 GitHub Actions 发生了一些变化,我们不确定发生了什么或如何解决它。我们正在测试和构建 iOS 应用程序,并使用 SwiftLint 进行自动 PR 检查。
几个月来,我们的工作配置就像一个魅力,但大约 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 || 冲泡安装 swiftlint
错误:没有这样的小桶:/usr/local/Cellar/swiftlint
==> 下载https://homebrew.bintray.com/bottles/swiftlint-0.42.0.catalina.bottle.tar.gz
==> 浇注 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。好的。然后它继续下载它..然后它说它无法链接,因为它已经在那里了?!
当然,我们可以继续尝试以下方法:
- name: Link SwiftLint or install it
run: brew link --overwrite swiftlint || brew install swiftlint || brew link --overwrite swiftlint
但这似乎太老套了,必须有一些更好的解决方案。
非常感谢您的想法和解决方案。
解决方案
实际上,解决方案似乎非常简单明了。查看 GitHub Actions 的最新虚拟 macOS 环境,我发现 SwiftLint 现在已预装。
奇怪的是,Homebrew 在某些 VM 上能够安装 SwiftLint,而在其他 VM 上却不能。我希望这一步可以在所有机器上工作或在所有机器上失败。
无论如何,现在只需删除链接/安装步骤即可解决此问题。
推荐阅读
- css - 阻止 SASS 父选择器(带有伪类)级联到子级
- node.js - MongoError:E11000 重复键错误,虽然我没有对我的任何模型属性进行唯一验证
- python - 我正在尝试更改 tkinter python 中按钮的边框颜色
- docusignapi - 我可以使用相同的信封发送电子邮件签名和嵌入式签名吗?
- android - 我可以从 api 密钥访问 Google play api(在应用程序购买 json 中)吗?
- java - 使用自定义属性在 aws cognito 中进行并发会话控制
- database-migration - DMS 任务在 Oracle 正在进行的复制中失败(完全加载工作正常)
- android - 如何使用协程在 forEach 中等待来自服务器的响应
- node.js - 在数据库中找不到用户时的“无效状态码”
- python - 不遍历向量的复杂向量乘法