1

我已经在生产中使用代码推送超过 2 年了。

我是如何实施的?

  • 每当我的 react native 应用程序的 android 文件夹被修改时,我假设有一个本地更改,并且我的 CI/CD 工具创建了一个本地 apk 文件。
  • 在所有其他情况下,我生成了一个 JS 包并通过 CodePush 推送。

在最新的 RN 版本 >=0.60 中,我们有原生模块的自动链接。因此,我无法确定新添加的任何库是否需要生成本机 APK 或仅需要更新包。

请提供建议如何做到这一点?

环境

react-native-code-push 版本:6.0.0

反应原生版本:0.61.4

4

1 回答 1

2

对于所有有类似需求的人。这就是我所做的。

  • 我的应用程序同时支持 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 代码片段有助于检查已更改的文件。

于 2020-06-03T17:53:47.093 回答