2015-02-23 39 views
5

我想在AppVeyor上運行一些需要redis的可用實例的xUnit測試。 我沒有「服務」 AppVeyor的,所以我結束了一個定製的解決方案中發現Redis的,因爲你可以從appveyor.yml在appveyor上啓動redis-server

version: 1.0.{build} 
before_build: 
- nuget restore .\Hangfire.Redis.StackExchange.sln 
- START .\packages\Redis-32.2.6.12.1\tools\redis-server.exe ".\packages\Redis-32.2.6.12.1\tools\redis.conf" 
- '@ECHO Redis Started' 
build: 
    publish_nuget: true 
    publish_nuget_symbols: true 
    verbosity: minimal 

不幸的構建過程停留在START .\packages\Redis-32.2.6.12.1\tools\redis-server.exe ".\packages\Redis-32.2.6.12.1\tools\redis.conf"

看任何想法或可能的解決方法?

回答

3

任何有興趣,就是這樣做的伎倆appveyor.yml。 它基本上直接從GitHub下載版本,解壓後的文件夾中,安裝並啓動Redis的作爲服務

version: 1.0.{build} 
before_build: 
- ps: >- 
    Invoke-WebRequest "https://github.com/MSOpenTech/redis/releases/download/win-2.8.17.4/redis-2.8.17.zip" -OutFile .\redis-2.8.17.zip; 

    $destFolder = "redis-2.8.17"; 

    $shell = new-object -com shell.application; 


    $zip = $shell.NameSpace("$pwd\redis-2.8.17.zip"); 

    if (Test-Path $pwd\$destFolder) 

    { 
     del $pwd\$destFolder -Force -Recurse 
    } 

    md ".\redis-2.8.17"; 

    foreach($item in $zip.items()) 

    { 
     $shell.Namespace("$pwd\redis-2.8.17").copyhere($item); 
    it kind of worked 

    cd $destFolder 

    .\redis-server.exe --service-install 

    .\redis-server.exe --service-start 

    cd .. 
- nuget restore Hangfire.Redis.StackExchange.sln 
build: 
    publish_nuget: true 
    publish_nuget_symbols: true 
    verbosity: minimal 
4

嘗試運行Redis的作爲Windows服務:

before_build: 
- nuget restore .\Hangfire.Redis.StackExchange.sln 
- packages\Redis-32.2.6.12.1\tools\redis-server.exe --service-install 
- packages\Redis-32.2.6.12.1\tools\redis-server.exe --service-start 
- '@ECHO Redis Started' 
+0

好主意!不幸的是,2.6.12版本的redis不支持作爲服務來安裝,但我會嘗試巧克力 – mCasamento 2015-02-24 08:15:25

+1

It Worked! ;)我打算在這裏發佈答案 – mCasamento 2015-02-24 08:52:04

+2

太棒了!爲了將來的參考 - 另一種啓動進程而不阻塞構建的方法是使用'Start-Process' PowerShell cmdlet。通常,您應該使用'Start-Sleep' cmdlet在下一行添加一些延遲以允許進程啓動。 – 2015-02-25 18:21:52

2

我個人一直使用的巧克力上安裝AppVeyor需要任何基礎設施建設工人。因此,這裏的,我會用appveyor.yml(以及適用於我對我自己的項目需要的Redis):

version: 1.0.{build} 
before_build: 
- choco install redis-64 
- redis-server --service-install 
- redis-server --service-start 
- nuget restore .\Hangfire.Redis.StackExchange.sln 
build: 
    publish_nuget: true 
    publish_nuget_symbols: true 
    verbosity: minimal 
0

這裏是例子appveyor.yml與PowerShell腳本與工作Redis的-3.2.100這是不是目前市面上chocolately:

appveyor.yml

install: 
    - cmd: cd c:\ && mkdir c:\redis-3.2.100 
    - ps: c:\Users\root\repos\<YOUR_REPO>\deploy\redis.ps1 

redis.ps1

Add-Type -assembly "system.io.compression.filesystem" 
$source="https://github.com/MicrosoftArchive/redis/releases/download/win-3.2.100/Redis-x64-3.2.100.zip" 
$destination="c:\redisarchive" 
Invoke-WebRequest $source -OutFile $destination 
[IO.Compression.ZipFile]::ExtractToDirectory('c:\redisarchive', 'c:\redis-3.2.100') 

cd c:\redis-3.2.100 
.\redis-server.exe --service-install 
.\redis-server.exe --service-start 
cd ..