我正试图在Azure中为iOS和android创建CI/CD管道,用于一个React本地应用程序。
使用android管道,无论我选择创建yaml还是使用经典编辑器并使用预先配置的android任务,构建任务(bundleRelease)上的管道总是失败。我收到的错误是:
FAILURE: Build failed with an exception.无法读取脚本'/home/vsts/work/1/s/app-rn/node_modules/@react-native-community/cli-platform-android/native_modules.gradle‘,因为它不存在。
生成在12s错误中失败:进程'/home/vsts/work/1/s/app-rn/android/gradlew‘失败,退出代码1在(/home/vsts/work/_tasks/Gradle_8d8eebd8-2b94-4c97-85af-839254cc6da4/2.200.2/node_modules/azure-pipelines-task-lib/toolrunner.js:944:25) at ExecState.CheckComplete (/home/vsts/work/_tasks/Gradle_8d8eebd8-2b94-4c97-85af-839254cc6da4/2.200.2/node_modules/azure-pipelines-task-lib/toolrunner.js:927:18) at ChildProcess.(/home/vsts/work/_tasks/Gradle_8d8eebd8-2b94-4c97-85af-839254cc6da4/2.200.2/node_modules/azure-pipelines-task-lib/toolrunner.js:840:19) at ChildProcess.emit (events.js:198:13) at maybeClose (内部/child_process.js:982:16) at Process.ChildProcess._handle.onexit (内部/child_process.js:259:5) ##errorError: The process '/home/vsts/work/1/s/app-rn/android/gradlew‘失败,退出代码1完成: Gradle
这是android/setings.gradle中引用的行:
来自: file("../node_modules/@react-native-community/cli-platform-android/native_modules.gradle");applyNativeModulesSettingsGradle(设置,"../")
节点模块文件夹位于'app-rn‘目录中,与"android“文件夹处于同一级别,所以只使用一个"../”是正确的吗?
我可以通过termianl或使用android在本地构建Android解决方案,所以我完全不知道为什么在DevOps中会出现这种情况。
我的iOS管道也出现了类似的问题。这一问题发生在可可豆时:
这是我的PodFile的图片,位于'iOS‘文件夹中。“iOS”文件夹与“节点-模块”位于同一级别,都位于文件夹‘app-rn’中:
以下是用于android的yaml:
# Android
# Build your Android project with Gradle.
# Add steps that test, sign, and distribute the APK, save build artifacts, and more:
# https://learn.microsoft.com/azure/devops/pipelines/languages/android
variables:
- group: DriverApp
trigger:
- master
pool:
vmImage: 'ubuntu-latest'
name: $(date:yyyy).$(Month)$(rev:.r)
steps:
- script: yarn install
- task: Gradle@2
inputs:
gradleWrapperFile: 'app-rn/android/gradlew'
workingDirectory: 'app-rn/android/'
options: '-PversionName=$(Build.BuildNumber) -PversionCode=$(Build.BuildId)'
tasks: 'bundleRelease'
publishJUnitResults: false
javaHomeOption: 'JDKVersion'
gradleOptions: '-Xmx3072m'
sonarQubeRunAnalysis: false
- task: AndroidSigning@3
inputs:
apkFiles: '**/*.aab'
apksignerKeystoreFile: 'keystore.jks'
apksignerKeystorePassword: '$(AndroidKeyStorePassword)'
apksignerKeystoreAlias: '$(AndroidKeyAlias)'
apksignerKeyPassword: '$(AndroidKeyAliasPassword)'
zipalign: false
- task: PublishBuildArtifacts@1
inputs:
# PathtoPublish: 'android/app/build/outputs/apk/release'
PathtoPublish: 'android/app/build/outputs/'
ArtifactName: 'drop'
publishLocation: 'Container'iOS的yaml:
# trigger:
# branches:
# include:
# - master
variables:
- group: DriverApp
pool:
vmImage: 'macos-latest'
steps:
- checkout: self
persistCredentials: true
clean: true
- task: NodeTool@0
displayName: 'Install Node'
inputs:
versionSpec: '12.19.0' # you can use your desired version here
# workingDirectory: 'app-rn/'
- script: yarn install
displayName: Install Dependencies
- task: InstallAppleCertificate@2
displayName: Install Apple Certificate
inputs:
certSecureFile: 'AppleDistributionCertificate.p12'
certPwd: '$(AppleCertificatePassword)'
keychain: 'temp'
deleteCert: true
- task: InstallAppleProvisioningProfile@1
displayName: 'Install Apple Provisioning Profile'
inputs:
provisioningProfileLocation: 'secureFiles'
provProfileSecureFile: 'iEquos_App_Store.mobileprovision'
removeProfile: true
- task: CocoaPods@0
displayName: 'Install CocoaPods'
inputs:
workingDirectory: 'app-rn/ios'
- task: Xcode@5
displayName: 'Build IPA'
inputs:
actions: 'build'
configuration: 'Release'
sdk: 'iphoneos'
xcWorkspacePath: 'app-rn/ios/iEquos.xcworkspace'
scheme: 'iEquos'
packageApp: true
exportPath: 'output'
signingOption: 'manual'
signingIdentity: '$(APPLE_CERTIFICATE_SIGNING_IDENTITY)'
provisioningProfileUuid: '$(APPLE_PROV_PROFILE_UUID)'
- task: CopyFiles@2
displayName: 'Copy IPA'
inputs:
contents: '**/*.ipa'
targetFolder: '$(build.artifactStagingDirectory)'
overWrite: true
flattenFolders: true
- task: PublishBuildArtifacts@1
displayName: 'Publish IPA to artifacts'
inputs:
PathtoPublish: '$(build.artifactStagingDirectory)'
ArtifactName: 'ios'
publishLocation: 'Container'我在堆栈溢出中搜索过类似的问题,但似乎只有在本地( nto ) DevOps中才会遇到这些问题。正如我前面提到的,我可以在本地构建安卓和iOS应用程序。
我是相当新的张贴堆栈溢出,所以请告诉我,如果我应该提供更多的信息。
任何帮助都将不胜感激。
发布于 2022-06-23 05:34:39
您在azure-pipelines.yml文件中尝试过这样的方法吗:
- script: /usr/local/bin/pod deintegrate
workingDirectory: 'app-rn/ios'
displayName: 'pod deintegrate'
- script: /usr/local/bin/pod install
workingDirectory: 'app-rn/ios'
displayName: 'pod install'包括:
- task: CocoaPods@0
displayName: 'Install CocoaPods'
inputs:
workingDirectory: 'app-rn/ios'https://stackoverflow.com/questions/71309155
复制相似问题