Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/api/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在appveyor上启动redis服务器_Redis_Appveyor - Fatal编程技术网

在appveyor上启动redis服务器

在appveyor上启动redis服务器,redis,appveyor,Redis,Appveyor,我想在AppVeyor上运行一些xUnit测试,它需要一个可用的redis实例。 我没有在AppVeyor的“服务”中找到Redis,所以我最终得到了一个定制的解决方案,正如您在AppVeyor.yml中看到的那样 version: 1.0.{build} before_build: - nuget restore .\Hangfire.Redis.StackExchange.sln - START .\packages\Redis-32.2.6.12.1\tools\redis-server.

我想在AppVeyor上运行一些xUnit测试,它需要一个可用的redis实例。 我没有在AppVeyor的“服务”中找到Redis,所以我最终得到了一个定制的解决方案,正如您在AppVeyor.yml中看到的那样

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
不幸的是,构建过程在
开始时卡住了。\packages\Redis-32.2.6.12.1\tools\Redis-server.exe“\packages\Redis-32.2.6.12.1\tools\Redis.conf”


有什么想法或可能的解决方法吗?

尝试将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'

对任何感兴趣的人来说,都是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

就我个人而言,我总是使用Chocolate在AppVeyor Build Worker上安装所需的任何基础设施。下面是我将使用的appveyor.yml(在我自己需要Redis的项目中它对我有用):


以下是appveyor.yml的示例,其中包含一个与redis-3.2.100一起使用的powershell脚本,该脚本目前在Chocolate上不可用:

appveyor.yml

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

好主意!不幸的是,redis的2.6.12版本不支持作为服务安装,但我会通过Chocolate尝试同样的想法(它奏效了!)我要把答案贴在这里太好了!供将来参考-另一种在不阻止生成的情况下启动进程的方法是使用
start process
PowerShell cmdlet。通常,您应该使用
Start Sleep
cmdlet在下一行添加一些延迟,以允许进程启动。
install:
    - cmd: cd c:\ && mkdir c:\redis-3.2.100
    - ps: c:\Users\root\repos\<YOUR_REPO>\deploy\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 ..