如何将应用程序包 (.aab) 上传到我的私有 Nexus 存储库?

问题描述

我有一个 GitLab CI 管道,用于构建 Ionic 应用程序,然后将其上传到我的 Nexus Maven 存储库。我生成一个 apk 和一个 aab 文件,我通过 cURL 上传。但是,即使将 APK 文件正确推送到 repo,也找不到 AAB 文件

.gitlab-ci.yml 文件

build-apk:
  stage: build
  tags: [docker]
  script:
    - rm package-lock.json
    - npm install -g [email protected] [email protected]
    - npm run build:android:$STAGE
    - cd platforms/android
    - ./gradlew bundleRelease
    - cd ../..
    - echo $ANDROID_DEBUG_KEYSTORE | base64 --decode > key.keystore
    - mv platforms/android/app/build/outputs/apk/release/app-release-unsigned.apk app-release.apk
    - mv platforms/android/app/build/outputs/bundle/release/app.aab $CI_PROJECT_NAME.aab
    - jarsigner -verbose -sigalg SHA1withRSA -digestalg SHA1 -keystore key.keystore -storepass "$ANDROID_DEBUG_PAsspHRASE" app-release.apk <keyName>
    - jarsigner -verbose -sigalg SHA1withRSA -digestalg SHA1 -keystore key.keystore -storepass "$ANDROID_DEBUG_PAsspHRASE" $CI_PROJECT_NAME.aab <keyName>
    - $ANDROID_SDK_ROOT/build-tools/30.0.2/zipalign 4 app-release.apk $CI_PROJECT_NAME.apk

deploy-mobile:
  stage: deploy
  tags: [shell]
  cache: {}
  script:
    - curl -u $NEXUS_USER:$NEXUS_PWD -v --upload-file $CI_PROJECT_NAME.aab $NEXUS_MAVEN/$CI_PROJECT_NAME/$CI_PROJECT_NAME-$TAG.aab
    - curl -u $NEXUS_USER:$NEXUS_PWD -v --upload-file $CI_PROJECT_NAME.apk $NEXUS_MAVEN/$CI_PROJECT_NAME/$CI_PROJECT_NAME-$TAG.apk
  dependencies:
    - build-apk

当我比较两个命令的日志时,我看到的唯一区别是 aab 上传的 HTTP 响应是 400 个错误请求(apk 上传201 Created 结束) >).

是否有任何缺失的信息我应该添加到我的 cURL 命令中以便上传 aab 文件?我必须使用 Maven 命令上传 aab 文件吗?

解决方法

问题来自我的存储库配置,因为它不允许上传不符合 MIME 要求的文件。取消选中该选项会导致上传成功。
下一步是弄清楚我的 NXRM 版本是否可以添加 support for custom MIME 类型,因为禁用对存储库中存在的所有文件的验证是不正确的。

Repository configuration: the checkbox for validating that all content is of a MIME type appropriate for a Maven repository is checked