如何为R包的CI创建azure-pipeline.yml?
我一直在尝试让Azure管道为我的公司内部R包工作。我希望管道能够:如何为R包的CI创建azure-pipeline.yml?,r,azure,azure-devops,azure-pipelines,R,Azure,Azure Devops,Azure Pipelines,我一直在尝试让Azure管道为我的公司内部R包工作。我希望管道能够: Check() 在/testthat中运行测试 使用covr检查代码覆盖率 我们使用Azure DevOps,并在其中使用Azure回购协议。我发现的几个例子主要集中在GitHub解决方案上。然而,我曾经尝试过与他人合作,因为我对如何建立管道没有太多的知识。首先,我发现学习和前进非常困难。我也在RStudio社区上发表了文章,但是我当前的方法没有运行check()。我想尝试使用Azure DevOps提供的所有测试功能。我需要
Check()
我们使用Azure DevOps,并在其中使用Azure回购协议。我发现的几个例子主要集中在GitHub解决方案上。然而,我曾经尝试过与他人合作,因为我对如何建立管道没有太多的知识。首先,我发现学习和前进非常困难。我也在RStudio社区上发表了文章,但是我当前的方法没有运行
check()
。我想尝试使用Azure DevOps提供的所有测试功能。我需要做一些类似的事情,并且发现您的RStudio社区帖子在让我开始使用它方面非常有用-谢谢您的帖子。我现在已成功建立了一条管道,该管道:
rcmdcheck
检查包(这也会运行测试)首先,您首先需要确保testthat.R脚本使用指定的
reporter
参数运行test\u check
:
test\u check(“mypackage”,reporter=JunitReporter$new(file=“test result.xml”)
那么下面的.yml文件应该可以实现这一点:
trigger:
- master
pool:
vmImage: 'ubuntu-16.04'
container:
image: 'rocker/tidyverse:latest'
variables:
_R_CHECK_FORCE_SUGGESTS_: false
MAKEFLAGS: "-j 2"
steps:
- bash: R -q -e 'writeLines(".libPaths(\"~/R-private\")", ".Rprofile"); dir.create("~/R-private", recursive = TRUE); print(Sys.getenv());'
displayName: "Preliminaries"
- bash: R -q -e 'install.packages(c("covr", "roxygen2", "testthat", "remotes", "rcmdcheck")); remotes::install_deps(dependencies = TRUE);'
displayName: 'Install Dependencies'
- bash: R -q -e "rcmdcheck::rcmdcheck(args = '--no-manual', error_on = 'warning', check_dir = 'check')"
displayName: 'Check Package'
- bash: R -q -e 'cov <- covr::package_coverage(); covr::to_cobertura(cov, "coverage.xml")'
displayName: 'Run Code Coverage'
condition: succeededOrFailed()
- task: UseDotNet@2
displayName: 'Use .NET Core sdk'
inputs:
packageType: sdk
version: 2.2.203
installationPath: $(Agent.ToolsDirectory)/dotnet
condition: succeededOrFailed()
- task: PublishCodeCoverageResults@1
displayName: 'Publish Code Coverage'
inputs:
codeCoverageTool: 'Cobertura'
summaryFileLocation: '$(System.DefaultWorkingDirectory)/**/coverage.xml'
condition: succeededOrFailed()
- task: PublishTestResults@2
displayName: 'Publish Test Results'
inputs:
testResultsFormat: 'JUnit'
testResultsFiles: '**/test-*.xml'
condition: succeededOrFailed()
- task: PublishBuildArtifacts@1
displayName: 'Publish Check log'
inputs:
pathToPublish: 'check/mypackage.Rcheck/00check.log'
artifactName: check
condition: succeededOrFailed()
触发器:
-主人
游泳池:
vmImage:'ubuntu-16.04'
容器:
图片:“摇滚乐/潮流:最新”
变量:
_R\u检查\u力\u建议\u错误
MAKEFLAGS:“-j2”
步骤:
-bash:R-q-e'writeline(“.libpath(\“~/R-private\”),“.Rprofile”);dir.create(“~/R-private”,recursive=TRUE);打印(Sys.getenv());'
显示名称:“初步准备”
-bash:R-q-e'install.packages(c(“covr”、“roxygen2”、“testthat”、“remotes”、“rcmdcheck”);remotes::install_deps(dependencies=TRUE);'
displayName:“安装依赖项”
-bash:R-q-e“rcmdcheck::rcmdcheck(args='--no manual',error\u on='warning',check\u dir='check')”
displayName:“检查包”
-bash:R-q-e'cov