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 heard! 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:
Commands are PowerShell cmdlets that are part of AppVeyorBYOC module. PowerShell is the universal shell/language that can be installed on Windows, Linux and macOS.
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 appveyor.yml
instead:
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.yml
).
APPVEYOR_BUILD_WORKER_CLOUD
- the name of your build cloudAPPVEYOR_BUILD_WORKER_IMAGE
- the name of your build worker imageNOTE: Build clouds and images configured via environment variables override both UI and
appveyor.yml
settings. This could be useful for quick cloud testing or multi-job builds.
[TBD] - grouping multiple clouds, failover, etc.