React Native CircleCI 管道总是失败(Android)

问题描述 投票:0回答:2

我正在使用 CircleCI 通过 AppCenter 将 APK 发送给 QA 测试人员,但是当我升级到 RN 0.72 时,构建总是失败,我的 confi.yml 是:

    version: 2.1
     jobs: 
  node: 
    working_directory: ~/driver-app
    docker:
      - image: circleci/node:lts
    steps:
      - checkout
      - restore_cache: 
          key: yarn-v1-{{ checksum "yarn.lock" }}-{{ arch }}
      - restore_cache: 
          key: node-v1-{{ checksum "package.json" }}-{{ arch }}
      - run: yarn install --ignore-engines
      - save_cache:
          paths:
            - node_modules
          key: node-v1-{{ checksum "package.json" }}-{{ arch }}
      - run:
          name: Decrypt env file 
          command: openssl enc -aes-256-cbc -md sha512 -pbkdf2 -iter 100000 -pass pass:$ENCRYPT_SECRET_KEY -d -p -in encrypted-env-staging -out .env
      - persist_to_workspace:
          root: ~/driver-app
          paths:
            - node_modules
android-build: 
    working_directory: ~/driver-app/android
    docker:
      - image: circleci/android:api-30-node
    environment:
      APP_VERSION: "2.3.8"
    steps:
      - checkout:
          path: ~/driver-app
      - attach_workspace:
          at: ~/driver-app
      - restore_cache:
          key: jars-{{ checksum "build.gradle" }}-{{ checksum  "app/build.gradle" }}
      - save_cache:
          paths:
            - .gradle
          key: jars-{{ checksum "build.gradle" }}-{{ checksum  "app/build.gradle" }}
      - run:
          name: Decrypt env file 
          command: openssl enc -aes-256-cbc -md sha512 -pbkdf2 -iter 100000 -pass pass:$ENCRYPT_SECRET_KEY -d -p -in ~/driver-app/encrypted-env-staging -out ~/driver-app/.env
      - run: 
          name: Decrypt google-services.json
          command:  openssl enc -aes-256-cbc -md sha512 -pbkdf2 -iter 100000 -salt -pass pass:$ENCRYPT_SECRET_KEY -d -p -in app/encrypted-google-services -out app/google-services.json
      - run: 
          name: Decrypt production keystore
          command: openssl enc -aes-256-cbc -md sha512 -pbkdf2 -iter 100000 -salt -d -p -in app/encrypted-tkyr-keystore -out app/tkyrkey.keystore -pass pass:$ENCRYPT_SECRET_KEY
      - run: 
          name: Change the .gradlew permission
          command: chmod +x ./gradlew
      - run:
          name: Assemble Release APK
          command: ./gradlew assembleRelease -PMYAPP_UPLOAD_STORE_FILE=tkyrkey.keystore -PMYAPP_UPLOAD_KEY_ALIAS=$MYAPP_UPLOAD_KEY_ALIAS -PMYAPP_UPLOAD_STORE_PASSWORD=$MYAPP_UPLOAD_STORE_PASSWORD -PMYAPP_UPLOAD_KEY_PASSWORD=$MYAPP_UPLOAD_KEY_PASSWORD
      - run:
          name: Rename the APK
          command: mv app/build/outputs/apk/release/app-release.apk app/build/outputs/apk/release/test_driver_app_v$APP_VERSION.apk 
      - run:
          name: Install appcenter cli
          command: sudo npm install appcenter-cli -g
      - run:
          name: Distribute APK to testers
          command: appcenter distribute release --debug --app hhmem-tkyr.net/TkyrCaptain --file app/build/outputs/apk/release/test_driver_app_v$APP_VERSION.apk --group "App Testers" --token $APPCENTER_CLI_TOKEN
      - run:
          name: Remove secrets
          command: rm -rf app/google-services.json ~/driver-app/.env.staging app/tkyrkey.keystore
  
workflows:
  build-android-workflow:
    jobs:
      - node:
          filters:
            branches:
              only:
                - test
      - android-build:  
          requires:
            - node
          filters:
            branches:
              only:
                - test

在我升级 RN 库之前,构建是成功的,但是当我升级到 v0.72 后,问题就出现了。

失败原因是:

FAILURE:构建失败并出现异常。

  • 地点: 脚本'/home/circleci/driver-app/node_modules/@react-native-community/cli-platform-android/native_modules.gradle'行:389

  • 出了什么问题: 评估脚本时出现问题。

React Native 需要 Node.js >= 16。您当前使用的版本是 v14.17.5。请将 Node.js 升级到受支持的版本,然后重试。

  • 尝试:

使用 --stacktrace 选项运行以获取堆栈跟踪。 使用 --info 或 --debug 选项运行以获得更多日志输出。 使用 --scan 运行以获得完整的见解。

8秒内构建失败

退出,代码退出状态 1

react-native cicd circleci
2个回答
0
投票

我可以找到此问题的解决方案,即添加另一个命令来使用

n
节点版本管理器安装所需的 NodeJS 版本 V16。

 - steps:
   ...
    - run: sudo n 16
   ...

0
投票

circleci/android:api-30-node
似乎有较旧的节点版本。
要使用最新的 Node 版本构建 Android,请使用以下图片

 - image: cimg/android:2023.12-node

更多信息@https://circleci.com/developer/images/image/cimg/android

© www.soinside.com 2019 - 2024. All rights reserved.