Appveyor BYOC: Parallels Desktop Support

rs2308249789370450's Avatar


11 Nov, 2019 09:00 PM

Hi there,

I see that Parallels Desktop support has been included in a recent November release (appveyor-7.0.2546), and I see in my new Appveyor Server installation allows me to select it as a build cloud.

However, beyond this I cant seem to find any documentation on its behaviour or how it works. Currently I have 2 Parallels Desktop VM's - macOS Catalina, Windows 10 which all contain the necessary build tools I need. I'd like to use these for CI tests/building/deployment of an Electron app, as a small test. My only other alternative is Travis which is rather expensive and locks me to GitHub, so a free self-hosted solution would be very useful.

My main question is how the Parallels BYOC feature actually works with Appveyor Server, and the ones below:

  1. Can Appveyor start and stop the Parallels VM's dynamically when a build job comes through? I don't want to leave multiple VM's running indefinitely waiting for jobs.
  2. How would one register a Parallels VM image? (Surely I wouldn't need to install the CI into each VM?)
  3. What would a minimal example appveyor.yml file look like which uses a Parallels VM as the environment?

I would hope the Server can control the VMs as they're required, as Parallels does provide a CLI interface to control VMs (example: prlctl start "macOS Catalina - CI")

Apologies if this is a very basic question, I just want to ensure I have the correct understanding! Thanks in advance

  1. Support Staff 1 Posted by Feodor Fitsner on 12 Nov, 2019 12:42 AM

    Feodor Fitsner's Avatar

    Here you are: - these are v1 docs for Parallels Desktop support. Give it a try and let us know what you think.

    At the moment there is only macOS guests supported, but adding Windows guests won't be a problem - let me know if you have an interest/time to test that and we'll do a build for you.

  2. Support Staff 2 Posted by Feodor Fitsner on 12 Nov, 2019 12:43 AM

    Feodor Fitsner's Avatar

    ...and, absolutely, VMs are created on demand, from the snapshot, and deleted when the build is finished.

  3. 3 Posted by rs2308249789370... on 15 Nov, 2019 12:11 AM

    rs2308249789370450's Avatar

    Great to hear, thank you for the docs. I hope to make time this weekend to get this working!

    Happy to help test out Windows support. I'd really like to have builds run on Windows 10 and MacOS VM's at the same time

    Haven't had chance to look extensively at the documentation just yet, so one quick question whilst I'm here - is there any bare minimum appveyor.yml showing how the cloud is set to a Parallels image? Will help me hit the ground running

  4. Support Staff 4 Posted by Feodor Fitsner on 15 Nov, 2019 05:08 AM

    Feodor Fitsner's Avatar
  5. 5 Posted by rs2308249789370... on 27 Nov, 2019 04:51 AM

    rs2308249789370450's Avatar


    Sorry for not getting back to you, only just managed to set the time to get this working with Parallels.

    Followed the instructions without issue for configuring a (MacOS) Parallels image. However, am a little unsure how to proceed with the documentation as its a little unclear in places following the installation of Packer and moving it to /usr/local/bin/ for it to be recognised via PATH.

    I've hit an issue at point 2 in the docs, hope I'm not being stupid!

    On host machine:

    1. Download Packer unpack it and copy packer executable to /usr/local/bin (or any other directory in your PATH variable): cp packer /usr/local/bin/packer.
    2. Clone build-images repository: git clone, change directory to it and checkout parallels branch: git checkout parallels
    3. Unregister VM prepared earlier: prlctl unregister <VMNAME>
    4. Locate VM’s folder, usually it’s $HOME/Parallels/<VMNAME>.pvm.

    My questions:
    - Where am I cloning the repository to?
    - What is meant by "change directory to it"?
    - There is no parallels branch in this repository to checkout.

  6. 6 Posted by Wasa Pleshakov on 27 Nov, 2019 06:21 PM

    Wasa Pleshakov's Avatar

    let me try to answer those questions.

    • Those instructions are to be executed in terminal window. In phrase "change directory to it" we skipped word "current": "change current directory to it".
    • Packer comes in one standalone executable and it can be placed anywhere you like on a host machine. It does not matter for the next steps in the documentation until it can be found in PATH and executed on step 6.
    • parallels branch has been merged into master branch and the doc was not updated.
    • You can clone build-images repository wherever you like. Usually, I clone it to Home directory. git clone creates a subfolder named after repository e.g. build-images. Change current directory to that subfolder since the rest of the instructions should be done from there.

    I have updated the doc to make it more clear and up to date.

  7. Feodor Fitsner closed this discussion on 03 Apr, 2020 06:46 PM.

Comments are currently closed for this discussion. You can start a new one.

Keyboard shortcuts


? Show this help
ESC Blurs the current field

Comment Form

r Focus the comment reply box
^ + ↩ Submit the comment

You can use Command ⌘ instead of Control ^ on Mac