Continuous integration 使用“过时”自动更新CI/CD中过时的依赖项`

Continuous integration 使用“过时”自动更新CI/CD中过时的依赖项`,continuous-integration,yarnpkg,continuous-delivery,Continuous Integration,Yarnpkg,Continuous Delivery,我的团队正在开发一个基于MaterialUI组件的React组件库。我们雇主的客户希望自动发出信号和/或升级过时的依赖项(特别是当对MaterialUI的依赖项至少过时时)。我们使用纱线作为依赖项管理器 我发现Thread通过Thread outlated命令列出了所有过时的依赖项(或指定的特定依赖项)。然后可以使用纱线升级命令升级所述依赖项,将要更新的依赖项作为参数提供给该命令。要使用单个命令执行此操作,请运行warn upgrade interactive列出过时的依赖项,然后用户可以选择更

我的团队正在开发一个基于MaterialUI组件的React组件库。我们雇主的客户希望自动发出信号和/或升级过时的依赖项(特别是当对MaterialUI的依赖项至少过时时)。我们使用纱线作为依赖项管理器

我发现Thread通过
Thread outlated
命令列出了所有过时的依赖项(或指定的特定依赖项)。然后可以使用
纱线升级
命令升级所述依赖项,将要更新的依赖项作为参数提供给该命令。要使用单个命令执行此操作,请运行
warn upgrade interactive
列出过时的依赖项,然后用户可以选择更新这些依赖项

我想知道是否有办法使这个过程自动化。我试着将
纱线过时的结果输送到
纱线更新
以及
纱线版本
,但是
纱线升级
似乎忽略了它接收到的任何输入,并更新了每个包,而
纱线版本
抛出错误,说版本不正确

我意识到,
warn upgrade interactive
使开发人员可以轻松快速地完成此过程,但随着时间的推移,该项目旨在成为开源项目,客户更喜欢集中的解决方案,而不是依靠每个参与者自己跟踪此过程。据我所知,
纱线升级互动
无法自动进行,因为它需要用户输入以选择要更新的包

我发现的其他解决方案,如ReliateOT或“过时的通知程序”之类的包,似乎只适用于GitHub。该项目目前正在Azure DevOps上运行,当它上市时,将在GitLab上运行


我们是否可以在CI/CD环境中或使用任何(免费)解决方案来实现这一点?客户希望拥有尽可能少的依赖项。

您不能仅通过管道传输该输出,但在正确格式化输出后,您可以使用xargs将所有
过时的
包传递给
更新。在中有一个这样做的例子:
纱线过时--json |$(纱线箱)/格式化纱线过时--format json | jq'.minor[],.patch[]|[0]'| xargs-I{}纱线升级{}
@jornsharpe你能告诉我每个管道中发生了什么吗?我知道第一个将
输出到
json
,第二个将其保存到纱线箱中的.json文件中,但我不太确定
jq.minor[]、.patch[]|[0]
xargs-I{}纱线升级{}
要做什么。不,第二个使用纱线二进制文件目录中的可执行文件来处理json,否则你就没法再管下去了。对于其他人,请看,。感谢链接,我想我理解现在发生的事情。我只是很难弄清楚我将如何在CI/CD中使用jq?@jonrsharpe我对一些事情也很不确定。您的命令如何知道哪个包对应于该版本?还有,JSON格式是否必要?据我所知,
json--json
输出有效的json。。