我使用Turborepo作为我的monorepo项目,我有两个反应应用程序。我如何配置Turborepo和CircleCI (repos在Github上),所以如果我对一个项目进行更改,管道将不会运行到第二个项目?
我知道turbo正在使用散列algo来检查项目是否有任何更改,然后重新构建它。
我试过在这里查找,https://turborepo.org/docs/ci/circleci,但没有解释这一行为。
步骤如下:
发布于 2022-11-12 10:32:10
我已经研究了好几天这样的解决方案了。在涡轮增压器中有两个核心概念来实现这一点:
因此,您可以针对特定的项目filter您的monorepo,例如:
pnpm turbo run build --filter='my-project...[HEAD^1]' --dry=json-> -这将查看是否需要运行项目“my”的任务build,并将当前源代码与"HEAD^1“进行比较。dry=json选项可以帮助您查看是否需要运行“构建”或不运行“我的项目”。
你可以过滤更多,检查文档。
现在,我在此基础上建立的是:
if: ${{ env.CONTINUE == 'true' }}来跳过它们,如果不需要构建/部署的话。如果您可以直接使用turbo cli运行构建/部署任务,可能会简单得多,因为您可以将筛选器和构建的执行组合起来--但在我的情况下是不可能的。
如果您需要“跳过”稍后在您的工作流中出现的作业,这将更加困难,因为github不支持工作的“堕胎”。
对于所有其他命令,如lint、typecheck和test ->,只需向它们添加一个适当的筛选器选项,您就可以实现它们只在PR中的“受影响”工作区/项目上运行。
资源来源:
https://stackoverflow.com/questions/73823932
复制相似问题