这里是azure DevOps的新手,试图在示例android应用程序上设置ci/cd进行测试。我有以下天青-哌啶。yml
trigger:
- master
pool: default
variables:
- name: 'apkFilePath'
value: '**/*debug*.apk'
steps:
- task: Gradle@2
inputs:
workingDirectory: ''
gradleWrapperFile: 'gradlew'
gradleOptions: '-Xmx3072m'
publishJUnitResults: false
testResultsFiles: '**/TEST-*.xml'
tasks: 'assembleDebug'
- task: CopyFiles@2
displayName: "Copy files"
continueOnError: false
inputs:
Contents: ${apkFilePath}
targetFolder: '$(Build.ArtifactStagingDirectory)'
- task: PublishBuildArtifacts@1
continueOnError: false
displayName: "Publish to azure"
inputs:
PathtoPublish: '$(Build.ArtifactStagingDirectory)'
ArtifactName: 'debug'
当我运行管道时,我在publishBuildArtifacts步骤中收到警告##[警告]目录'/Users/XXXX/Desktop/myagent/_work/2/a'为空。不会向生成项目"debug"添加任何内容。
我猜文件没有被复制到"$(Build.ArtifactStagingDirectory(",但我无法理解为什么?
任何帮助都将被视为
我没有在yaml文件中发现任何错误。您得到的错误一定是由于apkFilePath造成的。如果您检查Microsoft的"复制文件任务"文档,您会发现"内容"是作为副本一部分包含的所需文件路径。并且它支持多行匹配模式,如下所示。
-
*
复制指定源文件夹中的所有文件 -
**
复制指定源文件夹中的所有文件以及所有子文件夹中的全部文件 -
**bin**
从任何bin文件夹递归复制所有文件
请记住,该模式用于仅匹配文件路径,而不匹配文件夹路径。尝试以下yaml片段将.apk文件从源代码复制到工件目录。
- task: CopyFiles@2
displayName: 'Copy Files'
inputs:
SourceFolder: 'MobileApp/SourceCode -Android'
Contents: '**/*.apk'
TargetFolder: '$(build.artifactStagingDirectory)'
或
- task: CopyFiles@2
- displayName: 'Copy Files'
inputs:
SourceFolder: $(Build.SourcesDirectory) //optional
contents: '**/*.debug.apk'
targetFolder: '$(build.artifactStagingDirectory)'
SourceFolder是包含要复制的文件的文件夹。如果保留为空,则从repo的根文件夹进行复制(与指定$(Build.SourcesDirectory)
时相同(。
查看这些使用Azure DevOps构建Android移动应用程序以及如何使用Azure DevOp构建和签署您的Android应用程序文档以了解更多信息。还要查看堆栈溢出中发布的类似问题,以获得更多了解。