Bincrafters has recently been doing some re-evaluation of our continuous integration templates and scripts. The primary purpose of this post is to raise awareness of an important discovery regarding the Conan CI templates, which is likely to be having a subtle but significant negative impact for many Conan packagers. Additionally, we wanted to share an important update regarding our CI strategy for OSX builds.
Update 20180203 - Applies only to CircleCI.
After writing this post, we discovered that the PYENV commands are necessary on TravisCI, and only CircleCI can run Conan properly without the PYENV install. Apologies for any confusion this may have caused.
Travis CI Template Problem for OSX Most of the packagers in Bincrafters use a common set of shell scripts with TravisCI to build packages on Linux and OSX. These shell scripts are generated by the
conan new command when using the
--ci flags. We took this code for granted, and only took a closer look at it recently as we tested CircleCI for OSX builds. We recently discovered that the majority of the scripts were related to PYENV setup and configuration, and that this was not necessary. We removed the code and saw a 2 minute reduction in build times.
The details of this are documented in an open ticket here: As a result, we urge anyone using TravisCI to build Conan packages for OSX to remove the code related to PYENV. Here is a simple example of such modifications:
TravisCI and CircleCI for OSX
Currently, the Bincrafters team is exploring several other CI services to grapple with the load of OSX builds we generate. TravisCI has served us well, by performing thousands of builds at no cost to us or our community (it’s incredible really). We will continue to use them for Linux builds for the foreseeable future. The TravisCI team has indicated that they are working on infrastructure changes to improve the situation around OSX builds for OSS projects. We hope this involves enabling us to pay for dedicated OSX builds similar to how Appveyor works for Windows builds, but they have not been willing to make any commitments around this.
In the meantime, we have found CircleCI’s “2.0” builds with their OSX capabilities to be the closest thing to what we need. We are currently engaged in a trial of their service, and will be building a vast number of Conan packages on CircleCI over the next two weeks. Of note, at this time CircleCI does not support XCode 7x, only 8x and 9x. So, we may choose to end support for XCode 7x builds in our packages. If this affects you, please let us know by opening a ticket here:
Template Updates for Bincrafters Packagers
Bincrafters maintains a Github repository strictly for holding package “Templates” here:
This repository is used by members of the Bincrafters team, and community members who want to build packages consistent with the standards and conventions of Bincrafters. If you use this repository, please note that due to the situations explained above, numerous files relating to CI have changed, including the
README.md file, which has badges for each CI provider we use.
It’s a good practice to check this repository every time you start a new package, and any time you go back to update or refresh an existing package, because it receives minor updates on a regular basis, and major updates at least once a month.
Bincrafters is continuing to rebuild all our packages, now using these latest improvements in our CI standards and conventions. Hopefully, this will improve our productivity and turnaround times, and enable us to tackle a truly massive number of packages this year.