Deployment Publisher

This publisher provides the base processing for the other publishers; it will detect a new version of NuGet package, download and unpack its contents the configured folder.

When a matching trigger HealthCheck result notification is published (see "TargetHealthCheckName" in Configuration section below for more detail) this publisher executes the following process (The following "Items" in quotes refer to Configuration settings),
  1. The target NuGet package is checked against that already installed (if installed) and if a newer version exists...
  2. The NuGet package is downloaded from the "Feed" and unpacked into the "DownloadFolder"\"PackageId" folder.
    1. Once the download has completed a notification message is generated.

Typical Usage

This publisher is intended for use in automated deployment scenarios. If you bundle the "deployable" (this could be an entire website or just new assemblies/plugins of an existing application) into a NuGet package (good walk-thru here) then this plugin will download it and unpack the files into a target folder. At the end of the deployment a new notification will be sent with the result of this process.

Configuration

Once installed a new configuration file will be available, Config\Publishers\deployment.contrib.castle.config...
<component id="DeploymentPublisherConfiguration"
			 lifestyle="singleton"
			 type="Wolfpack.Contrib.Deployment.DeploymentConfig, Wolfpack.Contrib.Deployment">
	<parameters>
		<Enabled>False</Enabled>
		<FriendlyId>DeploymentPublisher</FriendlyId>
		<PublishOnlyIfFailure>False</PublishOnlyIfFailure>
		<!-- This is the friendlyId of the NuGet Release Check to monitor -->
		<TargetHealthCheckName>NuGetReleaseHealthCheck</TargetHealthCheckName>
		<!-- nuget deployment properties -->        
		<Feed>http://www.myget.org/F/wolfpack/</Feed>
		<PackageId>Wolfpack.Contrib.Demo</PackageId>
		<DownloadFolder>_deploy\demo</DownloadFolder>
	</parameters>
</component>
  1. To enable the publisher just set the "Enabled" element value to "true" on the component.
  2. If you are only interested in receiving alerts when the process "fails" (non zero return code) then you can set the "PublishOnlyIfFailure" element to true otherwise you will receive alerts for both success and failure.
  3. "Feed" should be set to the location hosting the NuGet package - leave blank for the official NuGet feed (default).
  4. "PackageId" is the name of the NuGet package to download.
  5. "DownloadFolder" is the folder where the package will be downloaded to. A sub-folder, named with the PackageId will be created and the contents of the NuGet package will extract here. This folder can be absolute or relative, if relative it is to the Wolfpack installation folder.
  6. "TargetHealthCheckName" is the "FriendlyId" of the HealthCheck that this publisher triggers on. Whenever a HealthCheck result notification is published, this publisher will inspect the metadata and if the source HealthCheck matches the "TargetHealthCheckName", the Result is "Success" and there is no Critical Failure it will execute.
  7. Finally, to trigger this deployment publisher we need to enable the "NuGet Release HealthCheck" plugin that was also installed. In the Config\Checks folder should be "triggerdemo.contrib.castle.config". Move this file to the appropriate subfolder, eg: EveryMinute and set the "Enabled" property to true, the remaining properties are already set up to point to the "Demo" package (see below).

Demo

The configuration file contains the settings to download a demo nuget package "Wolfpack.Contrib.Demo" from myget.org. This NuGet package has "dropkick.core" as a dependent package so this will also be installed into your "_deploy" folder. The sample configuration file above will download the "Wolfpack.Contrib.Demo" package, the dependent packages (dropkick & nunit runner) and unpack the content of the package (plus install dropkick and nunit.runner).

Output

This publisher, once executed will create a new HealthCheck result notification with the following properties set...
  • Tag = name of package downloaded
  • Duration
  • Result = true (success)

Properties...
  • None

Last edited Apr 24, 2012 at 8:40 AM by jimbobdog, version 5

Comments

No comments yet.