Custom text on SVG build status badges

Posted on November 26, 2014

SVG is great! We’ve just added a small, but very neat feature that allows you customizing badge text.

This looks really great for batch-specific status badges put in one line (these are statuses for Grunt.js project):

master branch badge osx-travis branch badge legacy-log branch badge

To customize SVG badge titles for pending, failing and passing states add pendingText, failingText and passingText query parameters respectively.

For example:

https://ci.appveyor.com/api/projects/status/32r7s2skrgm9ubva?svg=true&passingText=master%20-%20OK&failingText=master%20-%20Fails

Read more about status badges in AppVeyor documentation.

Enjoy!

AppVeyor premium build environment and new pricing

Posted on November 13, 2014

Based on feedback from our customers we’ve been working on improving AppVeyor performance and got amazing results!

New super-fast environment

For the last couple of months we’ve been experimenting with running builds on new “Premium” environment. It’s based on Hyper-V and hosted on a dedicated hardware with SSD drives and faster CPUs.

We moved most of our existing customers to this new environment and they were very satisfied with the results. Builds start almost instantly, run 2-3 times faster with greater stability!

We still have Azure environment for open-source projects and “Basic” plan.

New Pricing

With the introduction of the new environment we decided to review our plans once again to make them more flexible for companies with different business needs.

There is a new entry-level plan for individual developers and small teams with 1 private project and 1 concurrent job building on Azure. There is an upgraded “Pro” plan now with unlimited number of projects and super-fast builds. For those teams actively using AppVeyor new “Premium” plan now offers 3 concurrent jobs on fast environment.

Also, we introduce yearly pricing for “Pro” and “Premium” plans giving you 2 months free!

BasicProPremium
$19/month$59/month$159/month
$590/year - 2 months free$1590/year - 2 months free
1 private projectUnlimited private projectsUnlimited private projects
1 concurrent job1 concurrent job3 concurrent jobs
-Super-fast build environmentSuper-fast build environment
-Instant build startInstant build start
Forums supportPriority technical supportPriority technical support

All existing plans are honored.

If you are a student, educational organization or open-source project looking for more calculation power or concurrent jobs we provide 50% discount on all plans.

AppVeyor on-premise

You may have noticed that we don’t have “Enterprise” plan anymore. This is because “Enterprise” is reserved for AppVeyor on-premise edition that will be available in January 2015!

If you are interested to be a beta tester just reply to this message and we’ll add you to the “AppVeyor Enterprise early bird” mailing list. We’ll be publishing more information and roadmap for on-premise in the coming weeks.

Updated website

AppVeyor has gathered many great open-source projects, such as Mono, Julia, Grunt, Redis, nodegit, Chocolatey, JSON.net just to mention a few. People contribute their priceless knowledge and experience on AppVeyor forums.

To more actively engage the community in shaping AppVeyor we decided to host our entire website with documentation on GitHub where everyone could contribute by sending a pull request.

See https://github.com/appveyor/website.

The website runs on a new Jekyll-like engine (we called it NJekyll), so you can grab it and use for your own website :)

AppVeyor with a hint of Chocolatey

Posted on November 06, 2014

Chocolatey-Logo

Chocolatey is a wonderful tool that allows you installing your favourite programs with a single command. Unlike regular process of installing software with interactive setup package where you keep clicking “Next”, “Accept”, “Finish”, etc. Chocolatey does the job without questions asked. By analogy from Linux world Chocolatey is a package manager for Windows.

Chocolatey is great when you setup your development environment and it’s especially great for installing custom software during the build process on AppVeyor! As you know AppVeyor offers fully-customizable build environment where you have admin rights on build machines. For example, if you need to install MongoDB for your integration tests you can do that with the following command (the latest version of Chocolatey is already installed on AppVeyor build workers):

choco install mongodb

The list of software that can be installing with Chocolatey is huge and it’s growing fast. The catalog is community-driven and you can contribute your own packages or update existing ones. Behind the scene Chocolatey uses feed of NuGet packages. Each package contains install.ps1 and uninstall.ps1 PowerShell scripts. If it’s so-called “portable” package application files are stored along with scripts or if it’s “native” package application MSI is downloaded from the Internet and silently installed.

So, Chocolatey is well-established thing, but Chocolatey team want moving it to the next level and making Chocolatey an alternative Windows Store! They created a KickStarter campaign and are asking for our support! Let’s help Chocolatey to do an open, community-driven Application Store for Windows.

Let’s get Chocolatey!

appveyor.yml and multiple branches

Posted on July 23, 2014

The problem

If you use git flow you may want to have a different build configuration (e.g. deploying to a different environment) in a feature branch. Changing appveyor.yml in a feature branch becomes an issue when you merge it into master overriding appveyor.yml and breaking master builds.

The solution

To solve this problem AppVeyor allows having multiple per-branch configurations in a single appveyor.yml.

Multiple configurations are defined as a list with branches section in every item that:

# configuration for "master" branch
# build in Release mode and deploy to Azure
-
  branches:
    only:
      - master

  configuration: Release
  deploy:
    provider: AzureCS
    ...

# configuration for all branches starting from "dev-"
# build in Debug mode and deploy locally for testing
-
  branches:
    only:
      - /dev-.*/

  configuration: Debug
  deploy:
    provider: Local
    ...

# "fall back" configuration for all other branches
# no "branches" section defined
# do not deploy at all
-
  configuration: Debug

Unlike white- and blacklisting branches section here works like a selector, not a filter. Configuration selection algorithm is the following:

  • Check configurations with branches/only section defined. If branch is found in configuration’s only section use this configuration.
  • Check configurations with branches/except section defined. If branch is NOT found in configuration’s exceptsection use this configuration.
  • Check configurations without branches section. If such configuration is found use it.
  • If all previous steps fail, the build is not run.

Enjoy!

Shallow clone for Git repositories

Posted on June 04, 2014

AppVeyor runs every build on a new VM which is getting decommissioned right after the build finishes. The state between consequent builds of the same project is not preserved and every time a new build starts AppVeyor clones entire repository and then checkouts a specific commit. This becomes a challenge for very large repositories or repositories with long history as it takes a significant time to do a clone.

We introduced a new feature called “shallow clone” aiming to improve the situation with large repositories. It offers two options:

  1. Setting depth of git clone command
  2. Downloading repository as zipball using GitHub API

Setting depth of git clone command

By default AppVeyor clones entire repository with all the history. You can limit the number of last commits you’d like to clone. This feature works for Git repositories hosted at GitHub, BitBucket and Kiln. You can set clone depth on General tab of project settings:

Git clone depth

To set clone depth in appveyor.yml add the following in the root of config:

clone_depth: <number>

Note: Be aware that if you do a lot of commits producing queued builds and depth number is too small, git checkout operation following git clone can fail because the requested commit is not present in a cloned repository.

Downloading repository using GitHub API

As title says this option is specific to GitHub. It uses GitHub API to download specific commit of the repository as zip archive and then unpacks it on build worker machine. This feature works for regular commits, branch commits and pull requests.

You can enable this option through UI on General tab of project settings:

GitHub shallow clone

To enable it through appveyor.yml add the following in the root of config:

shallow_clone: true

Enjoy!