Search code examples
rubywindowscontinuous-integrationappveyorscoop-installer

Build error when installing certain tools on AppVeyor CI via Scoop


I've created the following appveyor.yml file:

init:
- ps: iex (new-object net.webclient).downloadstring('https://get.scoop.sh')
install:
- ps: scoop install ruby

which aims at installing Ruby, but the build fails with:

scoop install ruby
Installing 'ruby' (2.5.1-2) [64bit]
Downloading https://github.com/oneclick/rubyinstaller2/releases/download/rubyinstaller-2.5.1-2/rubyinstaller-2.5.1-2-x64.7z (8.8 MB)...
Checking hash of rubyinstaller-2.5.1-2-x64.7z... ok.
Extracting... done.
Linking ~\scoop\apps\ruby\current => ~\scoop\apps\ruby\2.5.1-2
Persisting gems
Running post-install script...
Successfully installed rake-12.3.1
Parsing documentation for rake-12.3.1
Installing ri documentation for rake-12.3.1
Done installing documentation for rake after 0 seconds
1 gem installed
'ruby' (2.5.1-2) was installed successfully!
Notes
-----
Install MSYS2 via 'scoop install msys2' and then run 'ridk install' to install the toolchain!
'ruby' suggests installing 'msys2'.
The build phase is set to "MSBuild" mode (default), but no Visual Studio project or solution files were found in the root directory. If you are not building Visual Studio project switch build mode to "Script" and provide your custom build command.

The same issue happens with shellcheck, e.g.

init:
- ps: iex (new-object net.webclient).downloadstring('https://get.scoop.sh')
install:
- ps: scoop install shellcheck
test_script:
- shellcheck -V

Please note that I can easily install other tools such as:

scoop install curl grep sed less touch python perl

without any issues (see this build), but it fails on Ruby and ShellCheck.

What am I missing?


Solution

  • Error you describes (The build phase is set to "MSBuild" mode (default)...) has no relation to Scoop or anything which happens at install stage. By default AppVeyor tries to detect Visual Studio solution or project. To disable that behavior you can set build: off or rename test_script: to build_script:.


    Here is the working appveyor.yml:

    init:
    - ps: iex (new-object net.webclient).downloadstring('https://get.scoop.sh')
    install:
    - ps: scoop install ruby shellcheck
    build: off
    test_script:
    - shellcheck -V