我正在使用 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
circleci/android:api-30-node
似乎有较旧的节点版本。 - image: cimg/android:2023.12-node
更多信息@https://circleci.com/developer/images/image/cimg/android