Bring Your Own Cloud (BYOC) allows running builds on your own infrastructure. Builds could be run inside VMs (Azure, AWS, GCE, Hyper-V), in Docker containers (Windows, Linux and macOS) or directly on the host (Windows, Linux and macOS). BYOC is available for hosted AppVeyor accounts and self-hosted AppVeyor Server installations.
Some of the reasons you may want to run builds on your infrastructure:
AppVeyor really shines at running builds on dynamically provisioned VMs. While AppVeyor also supports running builds on a host directly (aka “self-hosted agent”) creating VMs on demand has a number of advantages:
One of the benefits of hosted AppVeyor service is that you get build VM with a tons of pre-installed software, curated and regularly updated by AppVeyor team. The greatest fear of running builds on your own VMs is a necessity of maintaining build VM images (the template is used to create a VM).
You’ve been heared! BYOC is not just a feature, but it is a framework and significant part of this framework is the code helping you to create customized build VM images for all platforms and clouds we support: Azure, AWS, GCP, Hyper-V and Docker - thanks to Packer by HashiCorp. All scripts and Packer templates used by BYOC framework are open-source.
To configure your own build environment select Self-hosted jobs in the top menu and click Add cloud. We created a wizard that will guide you through the process and give you commands based on your selection that should be run on your computer:
Below you can find additional notes as well as alternative manual instructions for each of the clouds/platforms supported by BYOC:
|Cloud/Platform||Builds run in|
|Windows||Windows host directly|
|Linux||Linux host directly|
|macOS||macOS host directly|
|Docker||Windows or Linux containers on Windows, Linux or macOS|
|Azure||Windows or Linux VMs provisioned in Azure cloud|
|AWS||Windows or Linux VMs provisioned in AWS cloud|
|GCE||Windows or Linux VMs provisioned in GCE cloud|
|Hyper-V||Windows or Linux VMs provisioned on Hyper-V host|
To run builds in your own cloud/computer you should update project settings.
If you are configuring AppVeyor project via UI settings (no
appveyor.yml in the repository) open project settings and then click Environment tab:
Build cloud- select your private build cloud name;
Build worker image- select your build worker image;
If you are configuring AppVeyor project via appveyor.yml then UI settings for build cloud and image are ignored. Specify build cloud and image in
build_cloud: <private_build_cloud_name> image: <private_build_cloud_image>
Alternatively, you can configure build cloud and image via environment variables (defined either on UI or in
APPVEYOR_BUILD_WORKER_CLOUD- the name of your build cloud
APPVEYOR_BUILD_WORKER_IMAGE- the name of your build worker image
NOTE: Build clouds and images configured via environment variables override both UI and
appveyor.ymlsettings. This could be useful for quick cloud testing or multi-job builds.
[TBD] - grouping multiple clouds, failover, etc.