我正在尝试建立一个使用 nx.dev 开发的 monorepo 完整 CI/CD 管道,在其中我只构建和部署在提交中发生更改的应用程序和服务。
我的云构建链接到我的 github 存储库,当推送更改时,它会启动构建。首先 npm install 然后构建更改的应用程序。
根据 nx https://nx.dev/guides/monorepo-affected#ci上的 nrwls 文档,他们说要使用
npm run affected:build -- --base=origin/master~1 --head=origin/master
这会将当前提交与之前的提交进行比较,以找出要构建的服务或应用程序。
我尝试过使用它,但在云构建中运行时出现此错误
Step #1: fatal: Not a valid object name master~1
Step #1: Command failed: git merge-base master~1 master
Step #1: fatal: Not a valid object name master~1
当使用 cloud-build-local 在本地构建它时,它可以正常工作并成功确定要构建哪些服务。
我认为它失败的原因是因为当云构建检出 git 存储库时,它只检出提交而没有检出以前的提交信息。因此它不能引用之前的提交。
有什么办法可以解决这个问题还是我错过了什么?
谢谢!