Note about this beta release - it's not intended for installing on production environment.
AppVeyor Enterprise is a downloadable version of AppVeyor CI that can be installed on your own premises behind the firewall. AppVeyor Enterprise is great solution for organizations willing to use AppVeyor for testing their applications in a fully controlled environment. While hosted AppVeyor CI service saves you from managing build environment, AppVeyor Enterprise has its own benefits:
Why AppVeyor requires Windows 8/Server 2012 or higher? AppVeyor Web worker requires WebSockets support which was added in Windows 8/Server 2012. Windows 7/Server 2008 don’t have built-in WebSockets support.
AppVeyor is a distributed application consisting of several roles that can be installed on a single or multiple servers across the network.
AppVeyor Web role is a web application hosting AppVeyor web dashboard, REST API and WebSockets endpoint for real-time build log. Web role communicates with Worker role by sending messages to Service Bus queue.
Web role has the following dependencies:
Default Web Site(site with ID=1). Original web site content is not deleted - just root folder is changed, but make sure you don’t have production website in “Default Web Site”.
C:\AppVeyor\Artifactslocal folder for storing build artifacts. If you change that folder make sure there is “Modify” permission for application pool identity set on it.
Worker role is responsible for processing long-running jobs. It’s a Windows service running under “LocalSystem” account.
Worker role has the following dependencies:
Build agent executes build jobs on local or remote computers.
Build Agent has the following dependencies:
PATHdepending on source controls of your projects.
AppVeyor can run builds on build workers of two types:
Stateful workers are “always on” Build Agent machines for which any changes are preserved between builds. For example, any Chocolatey package installed, any NuGet package downloaded or any database created stay there and “visible” for next builds. While stateful builds can drastically reduce overall build time by having everything ready and pre-heated for consequent builds they require your build scenarios to include “setup” and “teardown” code increasing complexity of your builds. This approach is recommended for builds with minimum environment changes.
Stateless build workers are virtual machines provisioned from template or reset to the initial “clean” state and dedicated to a single build. When the build is finished machine is “decommissioned”, i.e. either deleted or reverted to “clean” state and returned to the pool.
All AppVeyor roles with Redis, SQL Server and Service Bus are installed on a single machine. This is quick and easy way for small teams and individual developers to have their own build server on Azure or AWS virtual machine.
Web and Worker roles along with dependencies are installed on one server and Build Agent services are installed on multiple servers.
This is fault-tolerant and highly-available AppVeyor solution deployed as Azure Cloud Service inside your own Microsoft Azure subscription. It allows running builds on any cloud or on-premise virtual machines.
Some of the advantages of this “private” cloud deployment:
Contact us if you are interested in trying out this solution.
AppVeyor installer is implemented as PowerShell module and used for installing and upgrading AppVeyor components and dependencies.
To install AppVeyor installer module open PowerShell console and enter the following command:
iex ((new-object net.webclient).DownloadString('https://www.appveyor.com/downloads/on-premise/install.ps1'))
The module is installed into
C:\Program Files\AppVeyor\Modules\appveyor-installer directory and
C:\Program Files\AppVeyor\Modules is added into
Next time you open PowerShell console AppVeyor installer module will be automatically loaded into PS session.
For installing AppVeyor roles use
-Roles- AppVeyor roles to install. Supported values:
BuildAgent). If this parameters is not specified all three roles will be installed.
-Force- answer “yes” to all questions.
-SqlServer- SQL Server instance name that will be used for AppVeyor and Service Bus databases. For example,
-Version- AppVeyor version to install. If not specified the most recent version will be installed. To get the list of all available versions use
-Express- used for unattended “all-in-one” installation on clean machine. Perfect solution for provisioning your own build server on Azure or AWS VM. Installs all AppVeyor dependencies and AppVeyor components.
For unattended installation of
BuildAgent roles with all dependencies such as IIS, SQL Server, Service Bus, Redis, Git, NuGet, etc. use this command:
Installing AppVeyor Web and Worker roles only (if you are going to run builds on different machines):
Install-AppVeyor -Roles Server -Force
Installing AppVeyor with existing SQL Server:
Install-AppVeyor -Force -SQLServer '(local)\SQLEXPRESS'
If Worker role is successfully installed you should see
Appveyor.Worker service running.
AppVeyor installer installs Web role to “Default Web Site”. When the installation of Web role is finished open
http://localhost in web browser and follow the wizard to create AppVeyor administrator account.
To install the latest version of Build Agent service on remote machine use the following command:
Install-AppVeyor -Roles BuildAgent -Force
Next, you should configure Build Agent to connect AppVeyor Web role running on another server. Run
regedit and find
HKEY_LOCAL_MACHINE\SOFTWARE\AppVeyor\Build Agent key. Update the following values under that key:
ApplicationUrl- Web role URL, for example
AuthorizationToken- authorization token of Web role. Can be found on Web role machine under
You can change the values of other parameters like
The only reserved parameters that cannot be changed are
For updating AppVeyor roles use
-Roles- AppVeyor roles to update. Supported values:
BuildAgent). If this parameters is not specified all three roles will be updated.
-Version- version to update roles to. If not specified the most recent version will be used.
-Force- answer “yes” to all questions.
The following command updates all roles to the most recent version:
To review and change AppVeyor configuration settings login as AppVeyor administrator and select System Settings in the account menu.
For artifacts storage you can choose between Local file system and Azure Blob storage.
By default, AppVeyor configures Local File System with
C:\AppVeyor\Artifacts root directory.
The following services are supported for sending out build notifications:
Installing and configuring your own SMTP service is out-of-scope of this guide. However, for testing purposes you can try using SMTP server of your current email provider. For example, if you have Gmail account use these settings:
AppVeyor is not affiliated with Mailgun in any way. We recommend it because we use it ourselves in production and love it.
Let us know if you are interested in trying it out.
Some AppVeyor settings such as database or Service Bus connection strings cannot be changed on UI. These and other settings are stored in the registry under these keys:
During installation AppVeyor uses randomly-generated values for security keys, account passwords and other sensitive values. All these values as well as other installer data such as AppVeyor roles and versions installed can be found under this registry key:
When something goes wrong:
AppVeyorevent log in Event Viewer under
Applications and Services Logs\AppVeyor. Web, Worker and Build Agent roles write logs there.
This section is still under construction - please let us know if you are interested to run “stateless” builds on Azure VMs.
Setup process outline:
This section is still under construction - please let us know if you are interested to run “stateless” builds on Hyper-V VMs.
Setup process outline: