<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:media="http://search.yahoo.com/mrss/"><channel><atom:link href="https://www.finalbuilder.com/DesktopModules/LiveBlog/API/Syndication/GetRssFeeds?Category=deployment&amp;mid=632&amp;PortalId=0&amp;tid=181&amp;ItemCount=20" rel="self" type="application/rss+xml" /><title>VSoft Technologies Blogs</title><description>VSoft Technologies Blogs - posts about our products and software development.</description><link>https://www.finalbuilder.com/resources/blogs</link><item><title>ClickOnce and VSTO Application Signing with Signotaur</title><link>https://www.finalbuilder.com/resources/blogs/postid/876/clickonce-and-vsto-application-signing-with-signotaur</link><category>.NET,Code Signing,Continua CI,Delphi,Deployment,Signotaur</category><pubDate>Tue, 14 Oct 2025 00:23:40 GMT</pubDate><description>&lt;p&gt;&lt;/p&gt;&lt;p&gt;If you've been working with ClickOnce or VSTO applications, you know that signing them isn't quite like signing a regular executable. We're pleased to announce that Signotaur now handles ClickOnce and VSTO application signing, taking care of the manifest orchestration so you don't have to.&lt;/p&gt;

        &lt;h2&gt;What Makes ClickOnce and VSTO Different?&lt;/h2&gt;
        
        &lt;p&gt;When you sign a standard executable or DLL, you're dealing with a single file. The process is straightforward: calculate a hash, sign it, embed the signature. One file, one operation.&lt;/p&gt;
        
        &lt;p&gt;ClickOnce and VSTO applications are a different beast entirely. These deployment packages consist of multiple files tied together by manifest files that describe the application structure, dependencies, and deployment configuration. The challenge? Everything needs to be signed in a specific order, and those manifests need to be updated with new hash values after each signing operation.&lt;/p&gt;
        
        &lt;p&gt;Here's what's happening under the hood:&lt;/p&gt;
        &lt;ol style="margin-left: 1.4em;  margin-bottom: 1em;"&gt;
            &lt;li&gt;&lt;strong&gt;Application files&lt;/strong&gt; get signed first (your assemblies, dependencies, etc.)&lt;/li&gt;
            &lt;li&gt;The &lt;strong&gt;application manifest (.manifest)&lt;/strong&gt; needs to be updated with the new hash values of those signed files&lt;/li&gt;
            &lt;li&gt;Then the application manifest itself gets signed&lt;/li&gt;
            &lt;li&gt;The &lt;strong&gt;deployment manifest (.application)&lt;/strong&gt; needs to be updated with the hash of the signed application manifest&lt;/li&gt;
            &lt;li&gt;Finally, the deployment manifest gets signed&lt;/li&gt;
        &lt;/ol&gt;
        
        &lt;p&gt;Miss a step or do things out of order, and Windows will reject your deployment package. It's tedious and error prone to manage manually, which is exactly why we've automated it.&lt;/p&gt;

        &lt;h2&gt;Certificate Requirements&lt;/h2&gt;
        
        &lt;p&gt;ClickOnce and VSTO signing requires an RSA certificate with specific characteristics:&lt;/p&gt;
        
        &lt;ul style="margin-bottom: 1em;"&gt;
            &lt;li&gt;&lt;strong&gt;Algorithm&lt;/strong&gt;: RSA only (ECC/ECDSA certificates are not supported by the ClickOnce/VSTO signing infrastructure)&lt;/li&gt;
            &lt;li&gt;&lt;strong&gt;Key size&lt;/strong&gt;: Minimum 2048 bits, though 3072 bits is recommended for better security&lt;/li&gt;
            &lt;li&gt;&lt;strong&gt;Certificate type&lt;/strong&gt;: Must be a code signing certificate (Authenticode) from a trusted Certificate Authority&lt;/li&gt;
            &lt;li&gt;&lt;strong&gt;Key storage&lt;/strong&gt;: Since June 2023, CA/B Forum requirements mandate that private keys be stored on secure hardware (USB tokens or HSMs)&lt;/li&gt;
        &lt;/ul&gt;
        
        &lt;p&gt;Signotaur supports all of these requirements, whether your certificates are stored on YubiKeys, SafeNet tokens, other PKCS#11 HSMs, or in the Windows Certificate Store.&lt;/p&gt;

        &lt;h2&gt;The Publisher Name Challenge&lt;/h2&gt;
        
        &lt;p&gt;Getting the manifests signed is only half the battle. Making your application display the proper publisher name instead of "Unknown Publisher" during installation is notoriously tricky. Even with a properly signed application, several factors can cause Windows to show "Unknown Publisher":&lt;/p&gt;
        
        &lt;ul style="margin-bottom: 1em;"&gt;
            &lt;li&gt;Certificate chain issues (missing intermediate certificates)&lt;/li&gt;
            &lt;li&gt;Publisher name in the deployment manifest not matching the certificate's Common Name exactly&lt;/li&gt;
            &lt;li&gt;Whitespace differences introduced during the signing process&lt;/li&gt;
            &lt;li&gt;Self-signed or test certificates (which will always show as unknown)&lt;/li&gt;
            &lt;li&gt;Certificate not from a trusted root CA&lt;/li&gt;
        &lt;/ul&gt;
        
        &lt;p&gt;When everything is configured correctly, users see a clean installation prompt with your verified publisher information:&lt;/p&gt;
        
        &lt;p style="text-align: center;"&gt;&lt;img src="https://cdn.finalbuilder.com/blog/daves/signotaur-clickonce/verified-publisher-install.png" alt="Application Install window showing verified publisher details"&gt;&lt;/p&gt;
        
        &lt;p&gt;When something's wrong — even if the manifests are technically signed — users see the dreaded "Unknown Publisher" warning:&lt;/p&gt;
        
        &lt;p style="text-align: center;"&gt;&lt;img src="https://cdn.finalbuilder.com/blog/daves/signotaur-clickonce/unknown-publisher-install.png" alt="Application Install window showing Unknown Publisher warning"&gt;&lt;/p&gt;
        
        &lt;p&gt;This is why using certificates from trusted CAs and ensuring proper manifest configuration is so important. Signotaur handles all the signing mechanics correctly so all you need to display the verified publisher name is a valid certificate from a publicly trusted Certificate Authority.&lt;/p&gt;

        &lt;h2&gt;Signing Made Simple&lt;/h2&gt;
        
        &lt;p&gt;To sign a ClickOnce or VSTO application, you only need to point Signotaur at the deployment manifest:&lt;/p&gt;
        &lt;div&gt;&lt;div id="highlighter_119824" class="syntaxhighlighter  xml"&gt;&lt;table border="0" cellpadding="0" cellspacing="0"&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td class="gutter"&gt;&lt;div class="line number1 index0 alt2"&gt;&gt;&lt;/div&gt;&lt;/td&gt;&lt;td class="code"&gt;&lt;div class="container"&gt;&lt;div class="line number1 index0 alt2"&gt;&lt;code class="xml plain"&gt;SignotaurTool.exe sign -a &lt;APIKey&gt; -s &lt;SignServer&gt; -t &lt;Thumbprint&gt; --tr &lt;TimeStampServer&gt; --td SHA256 path\to\MyApp.application&lt;/code&gt;&lt;/div&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/div&gt;&lt;/div&gt;
        
        &lt;p&gt;Signotaur will parse the manifest, identify all the files that are part of the application, sign them in the correct order, and update the hash values throughout the manifest chain. Any files sitting in the deployment folder that aren't referenced in the manifest will be ignored, even if they match your file spec. This keeps things clean and ensures only application files get signed.&lt;/p&gt;

        &lt;h2&gt;Command-Line Parameters&lt;/h2&gt;
        
        &lt;p&gt;We've added a new &lt;em&gt;--application-name&lt;/em&gt; parameter specifically for ClickOnce and VSTO deployments. This value appears in the Windows Start menu when users install your application, giving it a proper identity in the system.&lt;/p&gt;
        
        &lt;p&gt;The existing &lt;em&gt;--description&lt;/em&gt; and &lt;em&gt;--description-url&lt;/em&gt; parameters are used to populate the publisher name and support URL in the deployment manifest. This means if you're already using these parameters for other signing operations, your scripts should work with minimal changes.&lt;/p&gt;

        &lt;h2&gt;What This Means for Your Build Process&lt;/h2&gt;
        
        &lt;p&gt;If you've been juggling multiple tools or scripts to handle ClickOnce and VSTO signing, you can simplify your build pipeline. Signotaur handles the entire process as a single operation, maintaining the correct signing order and manifest updates automatically. This is particularly useful in CI/CD environments where you need reliable, repeatable signing without manual intervention.&lt;/p&gt;
        
        &lt;p&gt;The usual benefits of Signotaur apply here: your certificates stay securely on the server, private keys never travel over the network, and the command-line interface integrates cleanly with your existing build scripts.&lt;/p&gt;

        &lt;hr&gt;
        
        &lt;p&gt;For detailed command-line syntax and examples, check out the &lt;a href="https://docs.finalbuilder.com/sn/1.0/"&gt;Signotaur documentation&lt;/a&gt;. If you run into any issues or have questions about signing ClickOnce or VSTO applications, our support team is here to help.&lt;/p&gt;</description><guid isPermaLink="false">876</guid></item><item><title>Daily Builds with Continua CI</title><link>https://www.finalbuilder.com/resources/blogs/postid/838/daily-builds-with-continua-ci</link><category>Continua CI,Delphi,Deployment,Triggers</category><pubDate>Sun, 24 May 2020 09:22:55 GMT</pubDate><description>&lt;p&gt;Generally, at VSoft, we like to build. So we build every commit and this allows us to look back at our build history and see which changes caused the build to fail. We use manual stage promotion to prevent every build being released until we decide that it is ready to go.&lt;/p&gt;

&lt;p&gt;&lt;img alt="Build promotion" src="https://cdn.finalbuilder.com/blog/daves/dailytriggers/buildpromotion.png" /&gt;&lt;/p&gt;

&lt;p&gt;Many teams like to trigger a build at the end of each day, or during the night, compiling the work for the day in one single package.&lt;/p&gt;

&lt;p&gt;The obvious choice for this scenario is the Daily Trigger. This can be set to run a build at a specific time every day, or just weekdays - even just weekends for those with alternative lifestyles.&lt;/p&gt;

&lt;p&gt;&lt;img alt="Build promotion" src="https://cdn.finalbuilder.com/blog/daves/dailytriggers/dailytrigger.png" /&gt;&lt;/p&gt;

&lt;p&gt;But what if the team is just having a design day, is off on a team building excursion or, perish the thought, a day of meetings! No commits are made, but the daily build still runs even though there are no changes. One possible solution is to use a Discard condition.&lt;/p&gt;

&lt;p&gt;&lt;img alt="Discard condition" src="https://cdn.finalbuilder.com/blog/daves/dailytriggers/discardcondition.png" /&gt;&lt;/p&gt;

&lt;p&gt;This will prevent the build running if there are no changes since the last build.&lt;/p&gt;

&lt;p&gt;&lt;img alt="Build being discarded" src="https://cdn.finalbuilder.com/blog/daves/dailytriggers/discardcondition.gif" /&gt;&lt;/p&gt;

&lt;p&gt;Another option has been added to Continua CI recently. The Quiet Period setting on Repository Triggers now allows you to enter an End Time rather than an Interval.&lt;/p&gt;

&lt;p&gt;&lt;img alt="Quiet period end time on repository trigger" src="https://cdn.finalbuilder.com/blog/daves/dailytriggers/endtimerepositorytrigger.png" /&gt;&lt;/p&gt;

&lt;p&gt;Any builds triggered from a repository change are then queued right through the day until the specified end time. Any additional changes added to the configuration repositories during the day are added to the queued build, and when the end time comes up, the build executes on the latest changeset.&lt;/p&gt;

&lt;p&gt;&lt;img alt="Build waiting on quiet period end time" src="https://cdn.finalbuilder.com/blog/daves/dailytriggers/quietperiodtrigger.png" /&gt;&lt;/p&gt;

&lt;p&gt;If you're going home earlier than the end time and want stuff deployed already, you can swiftly end the quiet period at the click of a button. Using a repository trigger in this way means that you can ignore changes to some files, changesets with a specific comment, or commits from certain users.&lt;/p&gt;

&lt;p&gt;&lt;img alt="Trigger with user exclusion" src="https://cdn.finalbuilder.com/blog/daves/dailytriggers/triggeruserexclusion.png" /&gt;&lt;/p&gt;

&lt;p&gt; - like that hands-on manager who thinks of his commit count as a key performance indicator.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://www.commitstrip.com/en/2016/05/09/when-the-pm-fixes-a-bug/" target="_blank"&gt;&lt;img alt="'When the PM fixes a bug' cartoon by commitstrip.com" src="https://cdn.finalbuilder.com/blog/daves/dailytriggers/strip-quand-les-pm-se-mettent-au-code-650-finalenglish-1.jpg" /&gt;&lt;/a&gt; &lt;/p&gt;


</description><guid isPermaLink="false">838</guid></item><item><title>Introducing Continua CI Version 1.9.1 Beta</title><link>https://www.finalbuilder.com/resources/blogs/postid/835/introducing-continua-ci-version-191-beta</link><category>.NET,Continua CI,Delphi,Deployment</category><pubDate>Wed, 01 May 2019 07:00:08 GMT</pubDate><description>&lt;p&gt;This new &lt;a href="/downloads/continuaci/continua-ci-version-history-v191" target="_blank"&gt;beta release&lt;/a&gt; includes substantial improvements to the expressions engine including new several expressions objects and functions. We have also made some updates to the stage editor, implemented automatic report generation for some reporting actions, and added several new deployment actions providing support for Docker, Azure, SQL packages, File Transfer and SSH.&lt;/p&gt;

&lt;p&gt;Continue reading for details of all the new features.&lt;/p&gt;

&lt;ul&gt;
	&lt;li&gt;&lt;a href="#expressions-engine"&gt;Enhanced expressions engine&lt;/a&gt;&lt;/li&gt;
	&lt;li&gt;&lt;a href="#stage-editor-changes"&gt;Stage editor changes&lt;/a&gt;&lt;/li&gt;
	&lt;li&gt;&lt;a href="#deployment-actions"&gt;New premium deployment actions&lt;/a&gt;&lt;/li&gt;
	&lt;li&gt;&lt;a href="#other-actions"&gt;Other new and updated actions&lt;/a&gt;&lt;/li&gt;
	&lt;li&gt;&lt;a href="#automatic-reporting"&gt;Automatic reporting&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;&lt;a name="expressions-engine"&gt;Enhanced expressions engine&lt;/a&gt; &lt;a class="up-link" href="#" title="Go to top"&gt;&lt;img src="https://cdn.finalbuilder.com/i/up-icn.png" /&gt;&lt;/a&gt;&lt;/h2&gt;

&lt;p&gt;The expression engine in Continua CI evaluates expression objects and variables denoted with $ and % characters. It also provides auto-completion suggestions when typing such expressions into expression fields. This has now been overhauled to include function return types, chaining of functions, nesting functions as function parameters, selection and filtering of collections and many improvements to expression parsing. We have added several new functions, objects and collections to give access to more values and allow you to manipulate those values.&lt;/p&gt;

&lt;p&gt;&lt;img alt="Expression in Set Variable action list categories" src="https://cdn.finalbuilder.com/blog/daves/v1.9.1/setvariableaction.png" /&gt;&lt;/p&gt;

&lt;p&gt;You can now, for example, use the following expression to get the time that the penultimate build stage finished;&lt;/p&gt;

&lt;pre class="brush:javascript;toolbar:false;gutter:false;"&gt;
 $Build.Stages.Item($Build.Stages.Count.Decrement()$).Finished.ToLongTimeString()$&lt;/pre&gt;

&lt;p&gt;combine the result of multiple flags by chaining functions, as in this expression;&lt;/p&gt;

&lt;pre class="brush:plain;toolbar:false;gutter:false;"&gt;
$Build.HasErroredStages.Or($Build.HasFailedStages$).Or($Build.HasWarnings$)$&lt;/pre&gt;

&lt;p&gt;or use the following expression to get the comment of the first build changeset in the build containing the word 'merge' (ignoring case):&lt;/p&gt;

&lt;pre class="brush:plain;toolbar:false;gutter:false;"&gt;
$Source.SuperFancyRepo.Changesets.First(Comment, Contains, "merge", true).Comment$&lt;/pre&gt;

&lt;p&gt;We have also included functions to get the value of a variable as a type, allowing you to use properties or functions on the variable value.&lt;/p&gt;

&lt;p&gt;You can, for example, now use the following expression to get the abbreviated day of the week from a variable entered using a DateTime prompt;&lt;/p&gt;

&lt;pre class="brush:javascript;toolbar:false;gutter:false;"&gt;
$Utils.GetDateTime(%DateTimeTest%).DayOfWeek.Substring(0, 3)$&lt;/pre&gt;

&lt;p&gt;use expressions to do some more complex maths on a Numeric variable;&lt;/p&gt;

&lt;pre class="brush:plain;toolbar:false;gutter:false;"&gt;
  $Utils.GetNumber(%NumberTest%).Floor().Modulus(10).Multiply(100)$&lt;/pre&gt;

&lt;p&gt;or get the first selected value in a checkbox select variable with this expression:&lt;/p&gt;

&lt;pre class="brush:plain;toolbar:false;gutter:false;"&gt;
$Utils.GetString(%CheckboxSelectTest%).SplitWithQuotes(",").First()$&lt;/pre&gt;

&lt;p&gt;You can see a full list of available expression objects, collection and functions on the &lt;a href="https://wiki.finalbuilder.com/x/C4DmAQ"&gt;Expression Objects page&lt;/a&gt; of the documentation.&lt;/p&gt;

&lt;p&gt;Auto-completion has also been revamped so show more information in the suggestions list. A list of parameters with types is now shown for each for each function. Descriptions are also displayed on mouse over for each object, collection and function in the suggestions list. We have also removed some annoying quirks with expression auto-completion where the cursor would end up in the wrong place or end characters would be added in the wrong place.&lt;/p&gt;

&lt;h2&gt;&lt;a name="stage-editor-changes"&gt;Stage editor changes&lt;/a&gt; &lt;a class="up-link" href="#" title="Go to top"&gt;&lt;img src="https://cdn.finalbuilder.com/i/up-icn.png" /&gt;&lt;/a&gt;&lt;/h2&gt;

&lt;p&gt;As Continua CI matures, the number of actions (and categories) has increased. This can make it more difficult to find the action you need. We have therefore redesigned the action list.&lt;/p&gt;

&lt;p&gt;The list of categories has been pulled up into a drop down menu with all actions listed below by default.&lt;/p&gt;

&lt;p&gt;&lt;img alt="Action list categories" src="https://cdn.finalbuilder.com/blog/daves/v1.9.1/actionlistcategories.png" /&gt;&lt;/p&gt;

&lt;p&gt;The filtering of actions using the search box is now fuzzier, using partial and keyword matches.&lt;/p&gt;

&lt;p&gt;&lt;img alt="Action list search" src="https://cdn.finalbuilder.com/blog/daves/v1.9.1/actionlistsearch.png" /&gt;&lt;/p&gt;

&lt;p&gt;Stage buttons now resize (up to a maximum) to fit the stage name. If you stage names are short, this means you can fit more stages into your browser width. If your stage names are long, then the text will no longer escape the stage borders. Really long stage names which do not fit the maximum stage button size will now be truncated.&lt;/p&gt;

&lt;p&gt;&lt;img alt="Stages" src="https://cdn.finalbuilder.com/blog/daves/v1.9.1/stages.png" /&gt;&lt;/p&gt;

&lt;p&gt;All actions now include a Validate button to allow you to check that all fields have valid values before saving.&lt;/p&gt;

&lt;h2&gt;&lt;a name="deployment-actions"&gt;New premium deployment actions&lt;/a&gt; &lt;a class="up-link" href="#" title="Go to top"&gt;&lt;img src="https://cdn.finalbuilder.com/i/up-icn.png" /&gt;&lt;/a&gt;&lt;/h2&gt;

&lt;p&gt;We have added a set of premium actions which can be used for deploying the results of your build. The following actions can only be used if you have purchased one or more concurrent build licenses.&lt;/p&gt;

&lt;p&gt;&lt;b&gt;File Transfer action:&lt;/b&gt; This allows you to upload files to a remote server via FTP, FTPS and SFTP. &lt;a href="https://wiki.finalbuilder.com/x/GADc" target="_blank" title="Further information on File Transfer action"&gt;&lt;img src="https://cdn.finalbuilder.com/i/info.png" /&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;b&gt;SSH Run Script action:&lt;/b&gt; This can be used to run a script or list of commands on an SSH server. &lt;a href="https://wiki.finalbuilder.com/x/KIAJAQ" target="_blank" title="Further information on SSH Run Script action"&gt;&lt;img src="https://cdn.finalbuilder.com/i/info.png" /&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;b&gt;Azure actions:&lt;/b&gt; Several new actions are available to allow you to deploy web apps, function apps, files and blobs to Azure. &lt;a href="https://wiki.finalbuilder.com/x/OwBJAg" target="_blank" title="Further information on Azure actions"&gt;&lt;img src="https://cdn.finalbuilder.com/i/info.png" /&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;img alt="Azure actions" src="https://cdn.finalbuilder.com/blog/daves/v1.9.1/azureactions.png" /&gt;&lt;/p&gt;

&lt;ul class="horizontal"&gt;
	&lt;li&gt;Create Azure Resource Group&lt;/li&gt;
	&lt;li&gt;Delete Azure Resource Group&lt;/li&gt;
&lt;/ul&gt;

&lt;ul class="horizontal"&gt;
	&lt;li&gt;Create Azure App Service Plan&lt;/li&gt;
	&lt;li&gt;Delete Azure App Service Plan&lt;/li&gt;
&lt;/ul&gt;

&lt;ul class="horizontal"&gt;
	&lt;li&gt;Create Azure Web App&lt;/li&gt;
	&lt;li&gt;Deploy Azure Web App&lt;/li&gt;
	&lt;li&gt;Upload Azure Web App&lt;/li&gt;
	&lt;li&gt;Control Azure Web App&lt;/li&gt;
	&lt;li&gt;Delete Azure Web App&lt;/li&gt;
&lt;/ul&gt;

&lt;ul class="horizontal"&gt;
	&lt;li&gt;Create Azure Function&lt;/li&gt;
	&lt;li&gt;Deploy Azure Function&lt;/li&gt;
	&lt;li&gt;Delete Azure Function&lt;/li&gt;
&lt;/ul&gt;

&lt;ul class="horizontal"&gt;
	&lt;li&gt;Create Azure Storage Account&lt;/li&gt;
	&lt;li&gt;Get Azure Storage Account Keys&lt;/li&gt;
	&lt;li&gt;Delete Azure Storage Account&lt;/li&gt;
&lt;/ul&gt;

&lt;ul class="horizontal"&gt;
	&lt;li&gt;Create Azure Storage Container&lt;/li&gt;
	&lt;li&gt;Delete Azure Storage Container&lt;/li&gt;
&lt;/ul&gt;

&lt;ul class="horizontal"&gt;
	&lt;li&gt;Upload Azure Blob&lt;/li&gt;
	&lt;li&gt;Delete Azure Blob&lt;/li&gt;
&lt;/ul&gt;

&lt;ul class="horizontal"&gt;
	&lt;li&gt;Create Azure File Share&lt;/li&gt;
	&lt;li&gt;Delete Azure File Share&lt;/li&gt;
&lt;/ul&gt;

&lt;ul class="horizontal"&gt;
	&lt;li&gt;Create Azure Directory&lt;/li&gt;
	&lt;li&gt;Delete Azure Directory&lt;/li&gt;
&lt;/ul&gt;

&lt;ul class="horizontal"&gt;
	&lt;li&gt;Upload Azure File&lt;/li&gt;
	&lt;li&gt;Delete Azure File&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;b&gt;&lt;/b&gt;&lt;/p&gt;

&lt;p&gt;&lt;b&gt;Docker actions:&lt;/b&gt; These new actions are available to allow you to build, deploy and manage Docker containers. &lt;a href="https://wiki.finalbuilder.com/x/AwAPAg" target="_blank" title="Further information on Docker actions"&gt;&lt;img src="https://cdn.finalbuilder.com/i/info.png" /&gt;&lt;/a&gt;&lt;/p&gt;

&lt;ul class="horizontal"&gt;
	&lt;li&gt;Docker Build&lt;/li&gt;
	&lt;li&gt;Docker Command&lt;/li&gt;
	&lt;li&gt;Docker Commit&lt;/li&gt;
	&lt;li&gt;Docker Inspect&lt;/li&gt;
	&lt;li&gt;Docker Pull&lt;/li&gt;
	&lt;li&gt;Docker Push&lt;/li&gt;
	&lt;li&gt;Docker Run&lt;/li&gt;
	&lt;li&gt;Docker Stop&lt;/li&gt;
	&lt;li&gt;Docker Tag&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;b&gt;&lt;/b&gt;&lt;/p&gt;

&lt;p&gt;&lt;b&gt;SQL Package actions:&lt;/b&gt; These new actions allow you to create, update and export SQL Server database schemas and table data. &lt;a href="https://wiki.finalbuilder.com/x/PwBJAg" target="_blank" title="Further information on SQL Package actions"&gt;&lt;img src="https://cdn.finalbuilder.com/i/info.png" /&gt;&lt;/a&gt;&lt;/p&gt;

&lt;ul class="horizontal"&gt;
	&lt;li&gt;SQL Package Export&lt;/li&gt;
	&lt;li&gt;SQL Package Extract&lt;/li&gt;
	&lt;li&gt;SQL Package Import&lt;/li&gt;
	&lt;li&gt;SQL Package Publish&lt;/li&gt;
	&lt;li&gt;SQL Package Script&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;&lt;a name="other-actions"&gt;Other new and updated actions&lt;/a&gt; &lt;a class="up-link" href="#" title="Go to top"&gt;&lt;img src="https://cdn.finalbuilder.com/i/up-icn.png" /&gt;&lt;/a&gt;&lt;/h2&gt;

&lt;p&gt;&lt;b&gt;Extent Reports:&lt;/b&gt; Wrapper for the Extent Reports CLI for reporting on NUnit results. &lt;a href="https://wiki.finalbuilder.com/x/3oE6Ag" target="_blank" title="Further information on Extent Reports action"&gt;&lt;img src="https://cdn.finalbuilder.com/i/info.png" /&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;b&gt;ReportGenerator:&lt;/b&gt; Updated to include all the latest command line options. &lt;a href="https://wiki.finalbuilder.com/x/WQMZ" target="_blank" title="Further information on ReportGenerator action"&gt;&lt;img src="https://cdn.finalbuilder.com/i/info.png" /&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;b&gt;Rename Directory:&lt;/b&gt; Does what it says on the tin.. &lt;a href="https://wiki.finalbuilder.com/x/BgAxAg" target="_blank" title="Further information on Rename Directory action"&gt;&lt;img src="https://cdn.finalbuilder.com/i/info.png" /&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;&lt;a name="automatic-reporting"&gt;Automatic reporting&lt;/a&gt; &lt;a class="up-link" href="#" title="Go to top"&gt;&lt;img src="https://cdn.finalbuilder.com/i/up-icn.png" /&gt;&lt;/a&gt;&lt;/h2&gt;

&lt;p&gt;Currently, there are a few steps to configure when setting up a report. You have to ensure that the report files are included in the Workspace Rules and that the report is defined in the Reports section of the configuration wizard. Furthermore, it's also recommended to include the report files in the artifact rules so that you can control when they are cleaned up.&lt;/p&gt;

&lt;p&gt;To simplify this process, we have added a new option to automatically register the report with the server to actions which generate reports (FinalBuilder, ReportGenerator and the new Extent Reports action). Ticking this option shows a new tab where you can enter the name, description and run order of the report. When a stage completes, any report files generated by actions where this option is turned on, will automatically be copied to the server workspace. The main report file will be registered as a report and all report files will be registered as artifacts.&lt;/p&gt;

&lt;p&gt;&lt;img alt="FinalBuilder automatic report option" src="https://cdn.finalbuilder.com/blog/daves/v1.9.1/finalbuilderautomaticreport.png" /&gt;&lt;/p&gt;

&lt;p&gt;Download the installers for Continua CI v1.9.1 Beta from the &lt;a href="/downloads/continuaci" target="_blank"&gt;Downloads&lt;/a&gt; page&lt;/p&gt;
&lt;style type="text/css"&gt;ul.horizontal {
		overflow: auto;
		margin: 10px 0 0 0;
		}
		ul.horizontal li {
			  float: left;
			  margin-left: 2em
		}
.syntaxhighlighter {
    background-color: #eee !important;
    margin-top: 0 !important;
    padding: 10px;
    outline-style: dashed;
    outline-width: 1px;
    outline-color: #666;
    width: 97% !important;
}
.syntaxhighlighter .line.alt2 {
    background-color: #eee !important;
}
.syntaxhighlighter table td.code
{
    overflow-y: hidden !important;
}
.syntaxhighlighter .plain, .syntaxhighlighter .plain a
{
    color: #639099 !important;
}
h1 { margin-bottom: 0.6em !important;
}

.up-link {
 float: right
}
&lt;/style&gt;
</description><guid isPermaLink="false">835</guid></item></channel></rss>