Azure DevOps 通过 appcenter 分发 android 应用程序而不分发
Azure DevOps distribute android app via appcenter not distributing
我有一个在 Azure Devops 上构建的 React 本机应用程序,没问题,
现在创建分发,它在“作业”上显示一个灰色箭头,我找不到分发的应用程序,
什么是 Result: False
?
这里是 yaml
trigger:
- master
pool:
vmImage: 'macOS-10.14'
variables:
- group: AndroidKeystore
steps:
- task: NodeTool@0
displayName: 'Install Node'
inputs:
versionSpec: '12.16.1'
- script: npm install
displayName: 'Install node dependencies'
- script: |
npm i jetifier
npx jetify
displayName: 'npx'
- script: |
rm -r android/app/src/main/res/drawable-*
rm -r android/app/src/main/res/raw
displayName: 'delete before'
- task: Gradle@2
inputs:
workingDirectory: 'android'
gradleWrapperFile: 'android/gradlew'
gradleOptions: '-Xmx3072m'
publishJUnitResults: false
testResultsFiles: '**/TEST-*.xml'
tasks: 'assembleRelease'
- task: AndroidSigning@3
inputs:
apkFiles: '**/*.apk'
apksign: true
apksignerKeystoreFile: 'my-release-key.keystore'
apksignerKeystorePassword: '$(jarsignerKeystorePassword)'
apksignerKeystoreAlias: 'my-key-alias'
apksignerKeyPassword: '$(jarsignerKeyPassword)'
- script: mv android/app/build/outputs/apk/release/app-release.apk ReactNativePipeline$(Build.BuildNumber).apk
displayName: 'Rename apk'
- task: PublishBuildArtifacts@1
inputs:
pathtoPublish: ReactNativePipeline$(Build.BuildNumber).apk
artifactName: drop
publishLocation: 'container'
- task: AppCenterDistribute@3
displayName: "Create a release on App Center"
condition: and(succeeded(), eq(variables['Build.SourceBranch'], 'refs/heads/master'))
inputs:
serverEndpoint: 'VSAC'
appSlug: 'Wisr/WisrRN-Android2'
appFile: 'ReactNativePipeline$(Build.BuildNumber).apk'
releaseNotesOption: 'input'
releaseNotesInput: |
$(Build.SourceVersionMessage)
latest source: '$(Build.SourceVersion)'
An automated release from Azure DevOps
destinationType: 'groups'
distributionGroupId: 'testBench'
那么如何使构建在特定组“testBench”上可用
What is Result: False ?
这是条件的结果。从任务日志中,Build.SourceBranch 是 refs/heads/androidPipe
。
refs/heads/androidPipe eq refs/heads/master Result: false
在您的 Yaml 示例中,条件设置:
condition: and(succeeded(), eq(variables['Build.SourceBranch'], 'refs/heads/master'))
这意味着当Build.SourceBranch
是master时,它会运行 AppCenterDistribute任务。否则不会运行任务(跳过任务)。
这里有两种方法可以解决这个问题:
1.You 可以改变条件:
condition: and(succeeded(), eq(variables['Build.SourceBranch'], 'refs/heads/androidPipe'))
2.You 可以使用 master 分支到 运行 管道。然后任务就会执行。
顺便说一句,如果你不需要这个条件,你也可以删除它。这样的话,不管是哪个分支,这个任务都会运行.
更多详细信息,您可以参考this doc关于条件
我有一个在 Azure Devops 上构建的 React 本机应用程序,没问题,
现在创建分发,它在“作业”上显示一个灰色箭头,我找不到分发的应用程序,
什么是 Result: False
?
这里是 yaml
trigger:
- master
pool:
vmImage: 'macOS-10.14'
variables:
- group: AndroidKeystore
steps:
- task: NodeTool@0
displayName: 'Install Node'
inputs:
versionSpec: '12.16.1'
- script: npm install
displayName: 'Install node dependencies'
- script: |
npm i jetifier
npx jetify
displayName: 'npx'
- script: |
rm -r android/app/src/main/res/drawable-*
rm -r android/app/src/main/res/raw
displayName: 'delete before'
- task: Gradle@2
inputs:
workingDirectory: 'android'
gradleWrapperFile: 'android/gradlew'
gradleOptions: '-Xmx3072m'
publishJUnitResults: false
testResultsFiles: '**/TEST-*.xml'
tasks: 'assembleRelease'
- task: AndroidSigning@3
inputs:
apkFiles: '**/*.apk'
apksign: true
apksignerKeystoreFile: 'my-release-key.keystore'
apksignerKeystorePassword: '$(jarsignerKeystorePassword)'
apksignerKeystoreAlias: 'my-key-alias'
apksignerKeyPassword: '$(jarsignerKeyPassword)'
- script: mv android/app/build/outputs/apk/release/app-release.apk ReactNativePipeline$(Build.BuildNumber).apk
displayName: 'Rename apk'
- task: PublishBuildArtifacts@1
inputs:
pathtoPublish: ReactNativePipeline$(Build.BuildNumber).apk
artifactName: drop
publishLocation: 'container'
- task: AppCenterDistribute@3
displayName: "Create a release on App Center"
condition: and(succeeded(), eq(variables['Build.SourceBranch'], 'refs/heads/master'))
inputs:
serverEndpoint: 'VSAC'
appSlug: 'Wisr/WisrRN-Android2'
appFile: 'ReactNativePipeline$(Build.BuildNumber).apk'
releaseNotesOption: 'input'
releaseNotesInput: |
$(Build.SourceVersionMessage)
latest source: '$(Build.SourceVersion)'
An automated release from Azure DevOps
destinationType: 'groups'
distributionGroupId: 'testBench'
那么如何使构建在特定组“testBench”上可用
What is Result: False ?
这是条件的结果。从任务日志中,Build.SourceBranch 是 refs/heads/androidPipe
。
refs/heads/androidPipe eq refs/heads/master Result: false
在您的 Yaml 示例中,条件设置:
condition: and(succeeded(), eq(variables['Build.SourceBranch'], 'refs/heads/master'))
这意味着当Build.SourceBranch
是master时,它会运行 AppCenterDistribute任务。否则不会运行任务(跳过任务)。
这里有两种方法可以解决这个问题:
1.You 可以改变条件:
condition: and(succeeded(), eq(variables['Build.SourceBranch'], 'refs/heads/androidPipe'))
2.You 可以使用 master 分支到 运行 管道。然后任务就会执行。
顺便说一句,如果你不需要这个条件,你也可以删除它。这样的话,不管是哪个分支,这个任务都会运行.
更多详细信息,您可以参考this doc关于条件