diff --git a/Dist-dotnet-4.5.props.in b/Dist-dotnet-4.5.props.in index 285175e7ed..bf77900511 100644 --- a/Dist-dotnet-4.5.props.in +++ b/Dist-dotnet-4.5.props.in @@ -5,7 +5,6 @@ @USINGMONO@ mono @BUILDWINRT@ - true @VERSION@ $(MSBuildProjectDirectory)\..\..\..\@KEYFILE@ diff --git a/Makefile b/Makefile index fba4bffb71..65a73be6bd 100644 --- a/Makefile +++ b/Makefile @@ -32,8 +32,6 @@ ensure-deliverables: rabbit-vsn file ${RELEASE_DIR}/${NAME_VSN}-client-htmldoc.zip file ${RELEASE_DIR}/${NAME_VSN}-client-htmldoc file ${RELEASE_DIR}/${NAME_VSN}-dotnet-4.5.zip - file ${RELEASE_DIR}/${NAME_VSN}-wcf-htmldoc.zip - file ${RELEASE_DIR}/${NAME_VSN}-wcf-htmldoc ensure-release-dir: rabbit-vsn touch ${RELEASE_DIR}/ @@ -49,9 +47,7 @@ doc: rabbit-vsn ensure-release-dir ensure-docs unzip -q -j ${RELEASE_DIR}/${NAME_VSN}-tmp-xmldoc.zip -d build/tmpdoc/xml cd ${RELEASE_DIR} && \ rm -rf ${NAME_VSN}-htmldoc && \ - unzip -q ${NAME_VSN}-client-htmldoc.zip -d ${NAME_VSN}-client-htmldoc && \ - rm -rf ${NAME_VSN}-wcf-htmldoc && \ - unzip -q ${NAME_VSN}-wcf-htmldoc.zip -d ${NAME_VSN}-wcf-htmldoc + unzip -q ${NAME_VSN}-client-htmldoc.zip -d ${NAME_VSN}-client-htmldoc clean: rm -rf $(GENSRC_DIR) $(RELEASE_DIR)/* diff --git a/appveyor.yml b/appveyor.yml index 418c648b9a..3e33056077 100644 --- a/appveyor.yml +++ b/appveyor.yml @@ -1,8 +1,9 @@ -version: "4.1.0.{build}" +version: "5.1.0.{build}" platform: Any CPU configuration: Release skip_tags: true +image: Visual Studio 2017 environment: BUILDWINRT: true @@ -10,56 +11,27 @@ environment: SNKSECRET: secure: C8FL0UTKVN8YcMW1wdssabbkSWMIrpJTqgUNeI2NfQw= -init: - - appveyor DownloadFile https://raw.githubusercontent.com/dotnet/cli/rel/1.0.0-preview2/scripts/obtain/dotnet-install.ps1 - - ps: | - & .\dotnet-install.ps1 -Channel "preview" -Version "1.0.0-preview2-003121" - Remove-Item .\dotnet-install.ps1 - - echo %APPVEYOR_BUILD_VERSION% - - choco install -y rabbitmq +cache: + # Note: this must match the $rabbitmq_installer_path value in + # tools\appveyor\install.ps1 + - "%HOMEDRIVE%%HOMEPATH%\rabbitmq-server-3.7.4.exe" install: - IF DEFINED SNKSECRET (nuget install secure-file -ExcludeVersion) - IF DEFINED SNKSECRET (secure-file\tools\secure-file -decrypt %APPVEYOR_BUILD_FOLDER%\rabbit.snk.enc -secret %SNKSECRET%) ELSE (ECHO This Is A Pull Request Build) - IF NOT DEFINED SNKSECRET (copy "rabbit.snk.prbuilds" "rabbit.snk") ELSE (ECHO Using The Release Key File) - - ps: | - $regPath = "HKLM:\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\RabbitMQ" - if (Test-Path "HKLM:\SOFTWARE\Wow6432Node\") { $regPath = "HKLM:\SOFTWARE\Wow6432Node\Microsoft\Windows\CurrentVersion\Uninstall\RabbitMQ" } - $path = Split-Path -Parent (Get-ItemProperty $regPath "UninstallString").UninstallString - $version = (Get-ItemProperty $regPath "DisplayVersion").DisplayVersion - [Environment]::SetEnvironmentVariable("RABBITMQ_HOME", "$path\rabbitmq_server-$version", "Machine") - $env:RABBITMQ_HOME = "$path\rabbitmq_server-$version" - [Environment]::SetEnvironmentVariable("RABBITMQ_RABBITMQCTL_PATH", "$path\rabbitmq_server-$version\sbin\rabbitmqctl.bat", "Machine") - $env:RABBITMQ_RABBITMQCTL_PATH = "$path\rabbitmq_server-$version\sbin\rabbitmqctl.bat" - -before_build: + - ps: .\tools\appveyor\install.ps1 build_script: - - cmd: .\build.bat - - cmd: .\run-test.bat - - ps: | - $suffix = Get-Date -format "yyyyMMddhhss" - Write-Host $suffix - dotnet pack "projects\client\RabbitMQ.Client" -c Release --version-suffix=ci-$suffix - -test: off - -after_build: - -artifacts: - - path: '*.nupkg' - - path: 'projects\client\RabbitMQ.Client\bin\Release\*.nupkg' - - path: '*.log' - name: Logs + - cmd: .\build.bat -deploy: off +test_script: + - cmd: .\run-test.bat nuget: - account_feed: true - project_feed: true disable_publish_on_pr: true branches: only: - - master - - stable + - master + - stable diff --git a/build.fsx b/build.fsx index c0c3e6d18d..0727772966 100644 --- a/build.fsx +++ b/build.fsx @@ -97,7 +97,6 @@ let appRefs = let main = !! "./projects/client/RabbitMQ.Client/**/*.csproj" ++ "./projects/client/Unit/**/*.csproj" - ++ "./projects/wcf/**/*.csproj" match buildEnv with | Windows8Plus | AppVeyor -> !! "./projects/**/*.csproj" diff --git a/dist.sh b/dist.sh index 7bd746bf90..0563a84b4b 100755 --- a/dist.sh +++ b/dist.sh @@ -71,11 +71,9 @@ NAME=rabbitmq-dotnet-client NAME_VSN=$NAME-$RABBIT_VSN RELEASE_DIR=release if [ "$MONO_DIST" ] ; then - INCLUDE_WCF=true BUILD=build.sh DOTNET_PROGRAM_PREPEND="mono" else - INCLUDE_WCF=true BUILD=build.bat DOTNET_PROGRAM_PREPEND= fi @@ -129,17 +127,6 @@ function dist-zips { $NAME_VSN-tmp-xmldoc.zip \ projects/client/RabbitMQ.Client \ ../../.. - - if [ -z "$MONO_DIST" ]; then - ### HTML documentation for the WCF bindings library dist - gendoc-dist \ - build/bin/RabbitMQ.ServiceModel.xml \ - $NAME_VSN-wcf-htmldoc.zip \ - "" \ - "" \ - projects/wcf/RabbitMQ.ServiceModel \ - ../../.. - fi } @@ -182,9 +169,6 @@ function src-dist { function dist-target-framework { TARGET_FRAMEWORK="$1" - BUILD_WCF= - test -z "$MONO_DIST" && BUILD_WCF="true" - mkdir -p tmp/dist/bin @@ -207,7 +191,6 @@ function dist-target-framework { ### Copy bin files to be zipped to tmp/dist/ cp projects/client/RabbitMQ.Client/build/bin/RabbitMQ.Client.xml tmp/dist/bin/ cp projects/client/RabbitMQ.Client/build/bin/RabbitMQ.Client.dll tmp/dist/bin/ - test "$BUILD_WCF" && cp projects/wcf/RabbitMQ.ServiceModel/build/bin/RabbitMQ.ServiceModel.dll tmp/dist/bin/ cp-license-to tmp/dist/ ### Zip tmp/dist diff --git a/run-test.bat b/run-test.bat index 10ee5a52e2..df086e1749 100644 --- a/run-test.bat +++ b/run-test.bat @@ -1,9 +1,8 @@ -@ECHO OFF - +@echo off dotnet restore .\projects\client\RabbitMQ.Client || exit /b dotnet build .\projects\client\RabbitMQ.Client -f netstandard1.5 || exit /b dotnet restore .\projects\client\Unit || exit /b dotnet build .\projects\client\Unit || exit /b -CD .\projects\client\Unit -dotnet test -f netcoreapp2.0 --where="cat != RequireSMP & cat != LongRunning & cat != GCTest" -CD ..\..\.. +cd .\projects\client\Unit +dotnet test -f netcoreapp2.0 --filter="testcategory != requiresmp & testcategory != longrunning & testcategory != gctest" +cd ..\..\.. diff --git a/tools/appveyor/install.ps1 b/tools/appveyor/install.ps1 new file mode 100644 index 0000000000..bd05bc1953 --- /dev/null +++ b/tools/appveyor/install.ps1 @@ -0,0 +1,116 @@ +$ProgressPreference = 'SilentlyContinue' +$ErrorActionPreference = 'Stop' +Set-StrictMode -Version 2.0 + +[Net.ServicePointManager]::SecurityProtocol = [Net.ServicePointManager]::SecurityProtocol -bor 'Tls12' + +$rabbitmq_installer_download_url = 'https://github.com/rabbitmq/rabbitmq-server/releases/download/v3.7.4/rabbitmq-server-3.7.4.exe' +$rabbitmq_installer_path = Join-Path -Path $HOME -ChildPath 'rabbitmq-server-3.7.4.exe' + +$erlang_reg_path = 'HKLM:\SOFTWARE\Ericsson\Erlang' +if (Test-Path 'HKLM:\SOFTWARE\WOW6432Node\') +{ + $erlang_reg_path = 'HKLM:\SOFTWARE\WOW6432Node\Ericsson\Erlang' +} +$erlang_erts_version = Get-ChildItem -Path $erlang_reg_path -Name +$erlang_home = (Get-ItemProperty -LiteralPath $erlang_reg_path\$erlang_erts_version).'(default)' + +$env:ERLANG_HOME = $erlang_home +[Environment]::SetEnvironmentVariable('ERLANG_HOME', $erlang_home, 'Machine') + +Write-Host '[INFO] Downloading RabbitMQ' + +if (-Not (Test-Path $rabbitmq_installer_path)) +{ + Invoke-WebRequest -UseBasicParsing -Uri $rabbitmq_installer_download_url -OutFile $rabbitmq_installer_path +} +else +{ + Write-Host "[INFO] Found $rabbitmq_installer_path in cache." +} + +Write-Host '[INFO] Creating Erlang cookie files' + +function Set-ErlangCookie { + Param($Path, $Value = 'RABBITMQ-COOKIE') + Remove-Item -Force $Path -ErrorAction SilentlyContinue + [System.IO.File]::WriteAllText($Path, $Value, [System.Text.Encoding]::ASCII) +} + +$erlang_cookie_user = Join-Path -Path $HOME -ChildPath '.erlang.cookie' +$erlang_cookie_system = Join-Path -Path $env:SystemRoot -ChildPath 'System32\config\systemprofile\.erlang.cookie' + +Set-ErlangCookie -Path $erlang_cookie_user +Set-ErlangCookie -Path $erlang_cookie_system + +Write-Host '[INFO] Installing and starting RabbitMQ with default config' + +& $rabbitmq_installer_path '/S' | Out-Null +(Get-Service -Name RabbitMQ).Status + +Write-Host '[INFO] Setting RABBITMQ_RABBITMQCTL_PATH' + +$regPath = 'HKLM:\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\RabbitMQ' +if (Test-Path 'HKLM:\SOFTWARE\WOW6432Node\') +{ + $regPath = 'HKLM:\SOFTWARE\WOW6432Node\Microsoft\Windows\CurrentVersion\Uninstall\RabbitMQ' +} +$path = Split-Path -Parent (Get-ItemProperty $regPath 'UninstallString').UninstallString +$rabbitmq_version = (Get-ItemProperty $regPath "DisplayVersion").DisplayVersion + +$rabbitmq_home = "$path\rabbitmq_server-$rabbitmq_version" +[Environment]::SetEnvironmentVariable('RABBITMQ_HOME', $rabbitmq_home, 'Machine') +$env:RABBITMQ_HOME = $rabbitmq_home + +$rabbitmqctl_path = "$path\rabbitmq_server-$rabbitmq_version\sbin\rabbitmqctl.bat" +[Environment]::SetEnvironmentVariable('RABBITMQ_RABBITMQCTL_PATH', $rabbitmqctl_path, 'Machine') +$env:RABBITMQ_RABBITMQCTL_PATH = $rabbitmqctl_path + +Write-Host '[INFO] Waiting for epmd to report that RabbitMQ has started' + +$epmd_running = $false +[int]$count = 1 + +$epmd = [System.IO.Path]::Combine($erlang_home, "erts-$erlang_erts_version", "bin", "epmd.exe") + +Do { + $epmd_running = & $epmd -names | Select-String -CaseSensitive -SimpleMatch -Quiet -Pattern 'name rabbit at port 25672' + if ($epmd_running -eq $true) { + Write-Host '[INFO] epmd reports that RabbitMQ is at port 25672' + break + } + + if ($count -gt 60) { + throw '[ERROR] too many tries waiting for epmd to report RabbitMQ on port 25672' + } + + Write-Host "[INFO] epmd NOT reporting yet that RabbitMQ is at port 25672, count: $count" + $count = $count + 1 + Start-Sleep -Seconds 5 + +} While ($true) + +[int]$count = 1 + +Do { + $proc_id = (Get-Process -Name erl).Id + if (-Not ($proc_id -is [array])) { + & $rabbitmqctl_path wait -t 300000 -P $proc_id + if ($LASTEXITCODE -ne 0) { + throw "[ERROR] rabbitmqctl wait returned error: $LASTEXITCODE" + } + break + } + + if ($count -gt 120) { + throw '[ERROR] too many tries waiting for just one erl process to be running' + } + + Write-Host '[INFO] multiple erl instances running still' + $count = $count + 1 + Start-Sleep -Seconds 5 + +} While ($true) + +Write-Host '[INFO] Getting RabbitMQ status' +& $rabbitmqctl_path status diff --git a/tools/check-distribution b/tools/check-distribution index 6be8d08a6c..e57b0fdbac 100644 --- a/tools/check-distribution +++ b/tools/check-distribution @@ -118,7 +118,6 @@ done NET11ZIP=$(ls rabbitmq-dotnet-*-net-1.1.zip) NET20ZIP=$(ls rabbitmq-dotnet-*-net-2.0.zip) COREDOCZIP=$(ls rabbitmq-dotnet-*-net-2.0-htmldoc.zip) -WCFDOCZIP=$(ls rabbitmq-dotnet-*-net-2.0-wcf-htmldoc.zip) SRCZIP=$(ls rabbitmq-dotnet-*.zip | grep -v '.*-net-') if [ $(echo $NET11ZIP | wc -w) != 1 ]; then @@ -133,10 +132,6 @@ if [ $(echo $COREDOCZIP | wc -w) != 1 ]; then echo Expected exactly one core documentation zip. exit 2 fi -if [ $(echo $WCFDOCZIP | wc -w) != 1 ]; then - echo Expected exactly one WCF documentation zip. - exit 2 -fi if [ $(echo $SRCZIP | wc -w) != 1 ]; then echo Expected exactly one source zip. exit 2 @@ -162,14 +157,13 @@ if ! mkdir $TMPDIRNAME 2>/dev/null; then exit 3 fi -cp $NET11ZIP $NET20ZIP $COREDOCZIP $WCFDOCZIP $SRCZIP $TMPDIRNAME +cp $NET11ZIP $NET20ZIP $COREDOCZIP $SRCZIP $TMPDIRNAME cp bundle/user-guide.pdf $TMPDIRNAME/rabbitmq-dotnet-$BUILD_TAG-user-guide.pdf cp bundle/api-guide.pdf $TMPDIRNAME/rabbitmq-dotnet-$BUILD_TAG-api-guide.pdf -cp bundle/"RabbitMQ Service Model.pdf" $TMPDIRNAME/rabbitmq-dotnet-$BUILD_TAG-wcf-service-model.pdf if [ "x$SIGNING_KEY" != "x" ]; then echo "Signing zips with SIGNING_KEY $SIGNING_KEY" - for z in $NET11ZIP $NET20ZIP $COREDOCZIP $WCFDOCZIP $SRCZIP; do + for z in $NET11ZIP $NET20ZIP $COREDOCZIP $SRCZIP; do if ! (HOME=$GNUPG_PATH gpg \ --default-key $SIGNING_KEY \ -abs \ @@ -192,10 +186,9 @@ mkdir -p $UPLOAD_ROOT/releases/source mkdir -p $UPLOAD_ROOT/releases/doc/rabbitmq-dotnet-$RELEASE_TAG mv $NET11ZIP $NET11ZIP.asc $NET20ZIP $NET20ZIP.asc $UPLOAD_ROOT/releases/binary mv $SRCZIP $SRCZIP.asc $UPLOAD_ROOT/releases/source -mv *.pdf $COREDOCZIP $COREDOCZIP.asc $WCFDOCZIP $WCFDOCZIP.asc $UPLOAD_ROOT/releases/doc/rabbitmq-dotnet-$RELEASE_TAG +mv *.pdf $COREDOCZIP $COREDOCZIP.asc $UPLOAD_ROOT/releases/doc/rabbitmq-dotnet-$RELEASE_TAG cd $UPLOAD_ROOT/releases/doc/rabbitmq-dotnet-$RELEASE_TAG unzip -q $COREDOCZIP -unzip -q $WCFDOCZIP cd /tmp rm $TMPDIRNAME/installfiles rmdir $TMPDIRNAME