在 Appveyor 上设置 R 包 SQL-集成测试
Setting up R package SQL-integration tests on Appveyor
我正在寻找 运行 在我的 Appveyor 上的 R 包中进行一些 SQL 集成测试。我正在使用一个 mdf 文件来设置感兴趣的数据库,但我发现我的 R 包中有一个 mdf 文件存在问题。以下是相关步骤:
1) 在构建之前,调用 PowerShell 脚本使用我的包中的 mdf 文件创建数据库。
- 这一步没有出错
2) yml 文件 运行s R 通过 travis-tool.sh run_tests
测试并尝试将 R 项目文件从 c:\projects\HCRTools
复制到构建目录,即 C:\Users\appveyor\AppData\Local\Temp
此步骤失败,因为 mdf 现在绑定到 SQL 服务器并且无法复制:
“file.copy(pkgname, Tdir, recursive = TRUE) 中的警告:
将 .\hcrtools\inst\CIDatabase\SAM_log.ldf 复制到 C:\Users\appveyor\AppData\Local\Temp\1\RtmpCq659a\Rbuild92c6989d34\hcrtools\inst\CIDatabase\SAM_log.ldf 时出现问题:权限被拒绝
错误
复制到构建目录失败
非常感谢您在上传 mdf 工件时提供的任何帮助,但它不在 R 包中!无法完成这项工作。
yml 文件:
init:
ps: |
$ErrorActionPreference = "Stop"
Invoke-WebRequest http://raw.github.com/krlmlr/r-appveyor/master/scripts/appveyor-tool.ps1 -OutFile "..\appveyor-tool.ps1"
Import-Module '..\appveyor-tool.ps1'
install:
ps: Bootstrap
services:
- mssql2012sp1
build_script:
- ps: iex .\inst\CIDatabase\CIBuild_DBCreate.ps1 #<-- Create DB (w/ no error)!
- Rscript -e "source('http://bioconductor.org/biocLite.R')" -e "chooseCRANmirror(ind=81)"
- travis-tool.sh install_deps
test_script:
- travis-tool.sh run_tests #<-- mdf copy error occurs!
on_failure:
- 7z a failure.zip *.Rcheck\*
- appveyor PushArtifact failure.zip
environment:
global:
WARNINGS_ARE_ERRORS: 0
_R_CHECK_FORCE_SUGGESTS_: 1
R_ARCH: x64
matrix:
- R_VERSION: release
用于上传工件和创建数据库的 PowerShell 文件:
#-- Push artifacts up
Push-AppveyorArtifact inst/CIDatabase/SAM.mdf
Push-AppveyorArtifact inst/CIDatabase/SAM_log.ldf
#-- Use mdf/ldf to create SAM db
$mdfFile = "c:\projects\HCRTools\inst\CIDatabase\SAM.mdf"
$ldfFile = "c:\projects\HCRTools\inst\CIDatabase\SAM_log.ldf"
sqlcmd -S "(local)\SQL2012SP1" -Q "CREATE DATABASE [SAM] ON (FILENAME = '$mdfFile'), (FILENAME = '$ldfFile') for ATTACH"
注意:一直在使用 https://github.com/hadley/devtools 作为 R 包应用程序示例。感谢您的指导!
我克隆了你的存储库,并且能够通过在命令失败之前停止 SQL 服务器并在之后启动它来解决这个问题。在 Travis-tool.sh inside RunTests() function.
中看起来像这样
net stop “SQL Server (SQL2012SP1)”
R CMD build ${R_BUILD_ARGS} .
net start “SQL Server (SQL2012SP1)”
这有助于避免复制文件问题。但是,我真的不知道 SQL 服务器是否处于 运行 状态是该失败步骤所必需的。或者也许 SQL 服务器根本不需要测试,可以在 travis-tool.sh.
之外的测试之前停止
无论如何,我希望这能让你知道你能做什么。
--伊利亚.
我正在寻找 运行 在我的 Appveyor 上的 R 包中进行一些 SQL 集成测试。我正在使用一个 mdf 文件来设置感兴趣的数据库,但我发现我的 R 包中有一个 mdf 文件存在问题。以下是相关步骤:
1) 在构建之前,调用 PowerShell 脚本使用我的包中的 mdf 文件创建数据库。
- 这一步没有出错
2) yml 文件 运行s R 通过 travis-tool.sh run_tests
测试并尝试将 R 项目文件从 c:\projects\HCRTools
复制到构建目录,即 C:\Users\appveyor\AppData\Local\Temp
此步骤失败,因为 mdf 现在绑定到 SQL 服务器并且无法复制:
“file.copy(pkgname, Tdir, recursive = TRUE) 中的警告: 将 .\hcrtools\inst\CIDatabase\SAM_log.ldf 复制到 C:\Users\appveyor\AppData\Local\Temp\1\RtmpCq659a\Rbuild92c6989d34\hcrtools\inst\CIDatabase\SAM_log.ldf 时出现问题:权限被拒绝 错误 复制到构建目录失败
非常感谢您在上传 mdf 工件时提供的任何帮助,但它不在 R 包中!无法完成这项工作。
yml 文件:
init:
ps: |
$ErrorActionPreference = "Stop"
Invoke-WebRequest http://raw.github.com/krlmlr/r-appveyor/master/scripts/appveyor-tool.ps1 -OutFile "..\appveyor-tool.ps1"
Import-Module '..\appveyor-tool.ps1'
install:
ps: Bootstrap
services:
- mssql2012sp1
build_script:
- ps: iex .\inst\CIDatabase\CIBuild_DBCreate.ps1 #<-- Create DB (w/ no error)!
- Rscript -e "source('http://bioconductor.org/biocLite.R')" -e "chooseCRANmirror(ind=81)"
- travis-tool.sh install_deps
test_script:
- travis-tool.sh run_tests #<-- mdf copy error occurs!
on_failure:
- 7z a failure.zip *.Rcheck\*
- appveyor PushArtifact failure.zip
environment:
global:
WARNINGS_ARE_ERRORS: 0
_R_CHECK_FORCE_SUGGESTS_: 1
R_ARCH: x64
matrix:
- R_VERSION: release
用于上传工件和创建数据库的 PowerShell 文件:
#-- Push artifacts up
Push-AppveyorArtifact inst/CIDatabase/SAM.mdf
Push-AppveyorArtifact inst/CIDatabase/SAM_log.ldf
#-- Use mdf/ldf to create SAM db
$mdfFile = "c:\projects\HCRTools\inst\CIDatabase\SAM.mdf"
$ldfFile = "c:\projects\HCRTools\inst\CIDatabase\SAM_log.ldf"
sqlcmd -S "(local)\SQL2012SP1" -Q "CREATE DATABASE [SAM] ON (FILENAME = '$mdfFile'), (FILENAME = '$ldfFile') for ATTACH"
注意:一直在使用 https://github.com/hadley/devtools 作为 R 包应用程序示例。感谢您的指导!
我克隆了你的存储库,并且能够通过在命令失败之前停止 SQL 服务器并在之后启动它来解决这个问题。在 Travis-tool.sh inside RunTests() function.
中看起来像这样net stop “SQL Server (SQL2012SP1)”
R CMD build ${R_BUILD_ARGS} .
net start “SQL Server (SQL2012SP1)”
这有助于避免复制文件问题。但是,我真的不知道 SQL 服务器是否处于 运行 状态是该失败步骤所必需的。或者也许 SQL 服务器根本不需要测试,可以在 travis-tool.sh.
之外的测试之前停止无论如何,我希望这能让你知道你能做什么。
--伊利亚.