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关于条件