Skip to content
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

Support settings multiple languges in one travis ci file #4090

paladox opened this issue Jun 15, 2015 · 24 comments

Support settings multiple languges in one travis ci file #4090

paladox opened this issue Jun 15, 2015 · 24 comments


Copy link

@paladox paladox commented Jun 15, 2015

Hi please support setting multiple languges in one travis ci file please.

for example like

language: php, ruby, java, js


language: php ruby java js

Copy link

@joshk joshk commented Jun 15, 2015

Thanks for the issue.

Can you please explain the use case and how the install steps might work?

Copy link

@paladox paladox commented Jun 15, 2015

Use can be if you have one project that has mutple files for different programming langugages like for example having php and js then you want to be able to test both js and php not just one or the other.

It could go like for example

language: php, js

or can go like

language: php js

Copy link

@joshk joshk commented Jun 15, 2015

Do you have an open source which is a good example of this?

Copy link

@paladox paladox commented Jun 15, 2015

I haven't got an open source for this since it woulden work.

Copy link

@BanzaiMan BanzaiMan commented Jun 16, 2015

@paladox Is there a repo that you would like to use this sort of behavior on, or is it just an idea?

Copy link

@tecoholic tecoholic commented Jul 19, 2015

I have a project which uses Python flask for backend and AngularJS for frontend. I have tests for both the language files. I currently have set up npm to run JS tests. Now I would like to add Python nosetests as well. I think this should be a good example. project is at

Copy link

@BanzaiMan BanzaiMan commented Jul 19, 2015

@tecoholic I suggest using language: python in that case, as you have access to both Python and Node.js runtime (via nvm).

Copy link

@tecoholic tecoholic commented Jul 20, 2015

@BanzaiMan Thanks for the tip. I never knew you could straight away call nvm. Saw some places where people have installed nodejs from scratch. nvm was simple.

Copy link

@vielmetti vielmetti commented Sep 16, 2015

I'm working on a project that depends on both python and go, though it's mostly written in go, but has some vendor dependencies that are in python that need to be tested and installed with pip. I'd also like to test on linux and osx, and if all of that works, then I'd like to iterate through various versions of python, go, and the vendor dependency.

Needless to say this looks like a messy matrix, and any suggestions or examples would be welcomed.

Copy link

@elopio elopio commented Oct 1, 2015

I want to upstream my go version of the subunit library ( ). I have in that project a travis file that runs the go tests.
They already have a travis that runs the python tests ( ).
So, I have no idea how to combine the two travis files. It would be great to have support for two language tags. I will put my library in a subfolder of the upstream project, so it would also be cool if I could just move my .travis.yml file to the subfolder and the system could find it and run the tests.

Copy link

@rw rw commented Oct 30, 2015

The FlatBuffers project ( uses many languages. The compiler is built in C++, and we have runtime code for the following languages: C++, C#, Go, Java, Javascript, and Python.

Has there been any progress on this issue?

@rw rw mentioned this issue Oct 30, 2015
0 of 4 tasks complete
Copy link

@kkaefer kkaefer commented Dec 2, 2015

We are also having the same issue with Our project is fundamentally implemented in C++, but we are building and testing on a variety of platforms, including Android, plain Linux, Node.js bindings etc. We've selected "Android" as the base image, since it contains the Android NDK; but selecting that affects other parts of the system, like caching (only one global cache, which doesn't help us much since our build artifacts are vastly varying).

Copy link

@evilaliv3 evilaliv3 commented Dec 6, 2015


GlobaLeaks is an other example of this.

GlobaLeaks is a framework composed by a python web backend that servers a javascript client

The language used on travis for what relates to the testing is should so be python(2.7) and node_js (4.2); thos are the two main requirements imposed by the testing frameworks.

The missing possibility for specifying multiple languages and their respective version is causing that we need to use python(2.7) in the language directive and then install node.js with sudo that makes not possible to use the new container.

Copy link

@igormukhingmailcom igormukhingmailcom commented Dec 26, 2015

Another example:
Ansible role (needs python to install ansible via pip) that installs some php project using composer and depending from doctrine 2.5. As far as doctrine 2.5 depending from php 5.4 but travis by default have php 5.3 - build fails all the time:

So we need ability to specify both python 2.7 to install ansible and php 5.4 to install doctrine 2.5 via composer.

Playing around this and trying to solve problem hadn't succeeded...

bblacey referenced this issue in bblacey/FreeCAD-MacOS-CI Feb 2, 2016
Copy link

@externl externl commented Feb 12, 2016

Same here, building and testing Ice requires C++, Python, Java, Ruby, PHP, and Node.js. Would be great if we could specify various versions of each language.

I tried to do this manually using the various version managers (nvm, phpenv, etc.) but they're not all available at the same time.

Copy link

@kengz kengz commented Feb 16, 2016

Tinkered a bit and worked out the below solution using the Travis Ubuntu 14.04 Trusty beta and sudo. Putting it out there if anyone needs it.

This pretty much let you setup a VM where you can install anything; I have node_js and python3, pip3, which are not available on the default container-based VMs.

sudo: required
dist: trusty
language: node_js
  - "5.5"
  - "4.2"
  - "3.4"
      - ubuntu-toolchain-r-test
      # nodejs >v4 compiler requirements
      - g++-4.8
      - openjdk-7-jdk
  - sudo apt-get -y install python3-pip python-dev
  - sudo pip3 install -U setuptools
  - sudo pip3 install -U virtualenvwrapper
  - python3 -V
  - pip3 -V
  # install Neo4j locally:
  - wget
  - tar -xzf neo4j-community-2.3.2-unix.tar.gz
  - sed -i.bak s/ neo4j-community-2.3.2/conf/
  - neo4j-community-2.3.2/bin/neo4j start
  - npm install
  - sudo pip3 install -r requirements.txt
    - CXX=g++-4.8
    - NODE_ENV=development
Copy link

@BanzaiMan BanzaiMan commented Feb 16, 2016

The directive language: X does 2 things which have far reaching effects.

  1. It specifies how build script is compiled from the data in .travis.yml. Specifying multiple languages does not make sense here.
  2. It chooses the build image that the jobs will use. Historically speaking, having a large build image had a tremendous effect on VM's boot time (a few minutes for a large image that has every thing, vs a few seconds for a language-specific image). This is an issue with builds that want to use multiple languages.

On the new infrastructure running Trusty builds, the boot time issue is much less of a concern, so we have one build image that has everything (the "mega" image mentioned in

If you need multiple language runtimes, Trusty is currently the best bet. This may change in the future, but I don't know when that future comes.

Copy link

@ghost ghost commented Mar 7, 2016

@BanzaiMan Could I use docker containers to have multiple languages and avoid some of the boot time issue?

Copy link

@cheelee cheelee commented Mar 12, 2016

This feature is starting to look like something we'd use at where we intend to support multiple languages (e.g. Scala, Julia, octave, python) for a common access API template to a standard JSON format for worm movement data.

Meanwhile, I'll be taking a look at the Trusty option as a workaround.

Copy link

@aviau aviau commented May 6, 2016

Same issue here. Python backend and js frontend. Would like to run javascript tests.

Copy link

@nwalters512 nwalters512 commented May 7, 2016

The Blue Alliance uses a Python backend and is moving to a JS-powered client. It would be great to be able to easily run both sets of unit tests on Travis.

Copy link

@jayvdb jayvdb commented May 8, 2016

Can someone please fix the spelling mistake in the issue title... ;-) ping @paladox

@BanzaiMan BanzaiMan changed the title Support settings mutple languges in one travis ci file Support settings multiple languges in one travis ci file May 8, 2016
@travis-ci travis-ci locked and limited conversation to collaborators May 8, 2016
Copy link

@BanzaiMan BanzaiMan commented May 8, 2016

It is unlikely that this is going to change in the near future. We will update this ticket when we have news to share.

Copy link

@DrTorte DrTorte commented Sep 19, 2018

Hey everyone!

As of right now, we don't have any specific plans to implement this. For those that need this functionality there are some examples of workarounds (thanks everyone!) and the [generic image] ( provides a good springboard for several languages.

If we do end up doing something like this we'll be sharing such news and I'll see if I can find out if there's anything in the roadmap with similar functionality. Thanks everyone for your feedback!

Sign up for free to subscribe to this conversation on GitHub. Already have an account? Sign in.
None yet
Linked pull requests

Successfully merging a pull request may close this issue.

None yet