对于所有有类似需求的人。这就是我所做的。
- 我的应用程序同时支持 android 和 ios,因此每当我们添加原生模块时,我们必须执行
cd ios && pod install
此步骤来更新Podfile.lock
文件。
- 当代码被推送到 repo 并触发 CI/CD 管道时,我检查我的 git 历史记录以查看文件夹
android/
是否ios/
更新了文件。
- 如果是,我会触发我的原生构建,否则我会执行 codepush。
这是有关如何在 Circle CI 上执行条件管道的帮助。https://medium.com/labs42/monorepo-with-circleci-conditional-workflows-69e65d3f1bd0
FILES_CHANGED=`git diff --name-only $1 $2 | grep "android/\|ios/"`
PARAMETERS='"trigger": false,'
if [[ $FILES_CHANGED == '' ]]; then
PARAMETERS+='"js": true'
echo "JS Code changes detected..."
else
PARAMETERS+='"native": true'
echo "Native Code changes detected..."
fi
上面的 shell 代码片段有助于检查已更改的文件。