Skip to content

Fix or replace AppVeyor bottleneck #1063

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Closed
Gabriella439 opened this issue Jul 3, 2019 · 13 comments
Closed

Fix or replace AppVeyor bottleneck #1063

Gabriella439 opened this issue Jul 3, 2019 · 13 comments

Comments

@Gabriella439
Copy link
Collaborator

Right now AppVeyor is severely limiting the rate at which we can merge pull requests because each revision it builds takes ~30 minutes and it can only build one revision at a time.

One possible solution is to replace AppVeyor with Azure DevOps since the latter supports up to 10 concurrent builds free for open source projects

@jneira
Copy link
Collaborator

jneira commented Jul 3, 2019

@Gabriel439 i am afraid that azure still doesn't support caching between builds so each one would take longer.
They are going to add support soon, though.

@EggBaconAndSpam
Copy link
Collaborator

AppVeyor doesn't seem to be doing any caching either... It's downloading everything again for each build. Switching to azure is probably not going to make things worse ;)

@ocharles
Copy link
Member

ocharles commented Jul 3, 2019

What is AppVeyor used for?

@jneira
Copy link
Collaborator

jneira commented Jul 3, 2019

@EggBaconAndSpam withouth caching it takes 40+ mins instead 15+!
@ocharles to make build+test+artifacts for windows

@jneira
Copy link
Collaborator

jneira commented Jul 3, 2019

But i agree in change the ci to azure, you have unlimited build time and you can build using linux, mac and windows.
Recently hie started to use it succesfully: haskell/haskell-ide-engine#1238

@ocharles
Copy link
Member

ocharles commented Jul 3, 2019

@ocharles to make build+test+artifacts for windows

Could this now be done using haskell.nix cross compilation to Windows on Hydra?

@joneshf
Copy link
Collaborator

joneshf commented Jul 4, 2019

Whoa, Nice!

@Gabriella439
Copy link
Collaborator Author

@ocharles: I took a look at that a while back. The main issue was that the Windows cross-compilation support doesn't appear work with the static Haskell executables work from NixOS/nixpkgs#43795 (which is Linux-specific)

@sjakobi
Copy link
Collaborator

sjakobi commented Aug 5, 2019

Currently AppVeyor takes ~35 to 45 minutes per build. I believe much of that time is spent on re-building dependencies that I wish would be cached. I've tried to look around for projects with a working cache setup, but I couldn't find one. :(

@joneshf
Copy link
Collaborator

joneshf commented Aug 6, 2019

The appveyor builds for purty tend to hit the cache and run in 2-5 minutes. It's using dhall and purescript as dependencies, though a fairly small project overall. The appveyor.yml shows the caching: STACK_ROOT is wherever Appveyor puts it and the key is relative. That looks like the only stuff that's different. Could that be it?

It doesn't look like the dhall-haskell builds are even trying to cache things at the end. For reference, at the very end of the build, the cache is updated for purty. Is it possible there's something you have to turn on in the settings? It's been a long time since I set this up, so I don't remember all the steps I went through. More than happy to provide whatever help I can though, so let me know if there's anything else I can do.

@sjakobi
Copy link
Collaborator

sjakobi commented Aug 6, 2019

Thanks for the help @joneshf! I'll try to copy a few things from purty then! :)

It doesn't look like the dhall-haskell builds are even trying to cache things at the end. For reference, at the very end of the build, the cache is updated for purty.

It seems to me that updating the cache may be limited to builds on master: This build does it, but that one doesn't.

sjakobi added a commit that referenced this issue Aug 6, 2019
* This might fix a syntax problem:
  https://www.appveyor.com/docs/build-cache/#configuring-cache-items
  says:

      Note the use of single quotes around the entire line, when
      environment variables are used.

* This adds the AppVeyor config to the files which invalidate the cache
  when changed.

Context: #1063.
mergify bot pushed a commit that referenced this issue Aug 7, 2019
* This might fix a syntax problem:
  https://www.appveyor.com/docs/build-cache/#configuring-cache-items
  says:

      Note the use of single quotes around the entire line, when
      environment variables are used.

* This adds the AppVeyor config to the files which invalidate the cache
  when changed.

Context: #1063.
@sjakobi
Copy link
Collaborator

sjakobi commented Aug 8, 2019

After #1207 and #1214 AppVeyor builds typically take 10-11 minutes now.

The main problem seems to have been that we got the syntax for the cache rules wrong!

@sjakobi sjakobi closed this as completed Aug 8, 2019
@Gabriella439
Copy link
Collaborator Author

shakes fist at YAML

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

6 participants