Travis-ci 多模块多语言项目文件

Travis-ci file for multi-module multi-language project

有没有办法设置 travis-ci 以不同语言构建多个项目?

假设我的回购是

AwesomeRepoThatDoestOneThingInDifferentLanguages
-cpp
-csharp
-python2
-python3
-java
-go
-ruby
-lua
-objectivec

现在,我想对此应用 ci。 如果我只是将 .travis.yml 文件添加到我的 python2 项目中,travis-ci 会抱怨没有找到 .travis.yml ,因为它在 repo 的根目录中寻找一个。 那么,有没有一种方法可以将 .travis.yml 放在顶部,然后在我的每个子模块中进一步调用 travis.yml?

我找到了一种真正做到这一点的方法。这还没有完成,因为一些工作仍然失败,我需要单独修复它们,但总的来说这个想法工作得很好。 我正在使用 travis ci 的矩阵方式。这是我的 .travis.yml 如果其他人有相同的问题或场景,我认为这可能会有所帮助。

---
matrix:
  include:
    -
      before_script:
        - "cd java"
      jdk: oraclejdk8
      language: java
      script: "mvn clean package"
    -
      before_script:
        - "cd python2"
        - "pip install --upgrade setuptools"
        - "pip install nose"
        - "pip freeze > requirements.txt"
        - "pip install -r requirements.txt"
        - "cd tests"
      cache: pip
      language: python
      python: 2.7
      script: nosetests
    -
      before_script:
        - "cd python3"
        - "pip install --upgrade setuptools"
        - "pip install nose"
        - "pip freeze > requirements.txt"
        - "pip install -r requirements.txt"
        - "cd tests"
      language: python
      python: 3.6
      script: nosetests
    -
      before_script:
        - "cd objectivec"
      language: objective-c
      os: osx
      osx_image: xcode10
      script:
        - "xcodebuild clean test -project DiffMatchPatch.xcodeproj -scheme DiffMatchPatch -destination 'platform=OS X,arch=x86_64'"

    -
      before_script:
        - "sudo add-apt-repository --yes ppa:ubuntu-sdk-team/ppa"
        - "sudo apt-get update -qq"
        - "sudo apt-get install -qq qt5-qmake qtbase5-dev qtdeclarative5-dev libqt5webkit5-dev libsqlite3-dev"
      language: cpp
      script:
        - "qmake -qt=qt5 -v"
        - "qmake -qt=qt5"
        - make
    -
      before_script:
        - "cd csharp"
      dotnet: "1.1.5"
      env: DOTNETCORE=1
      language: csharp
      mono: latestscript
      script:
        - "dotnet restore"
      solution: solution-name.sln
    -
      before_script:
        - "cd dart"
      dart: "1.15.0"
      dart_task:
        -
          test: "--exclude-tags no-xvfb"
        -
          test: "--tags no-xvfb"
      language: dart
      with_content_shell: true
    -
      after_success:
        - coveralls -b .. -r .. -i ./lua --dump c.report.json
        - luacov-coveralls -j c.report.json -v
      before_install:
        - "cd lua"
        - "pip install --upgrade pip"
        - "pip install --upgrade setuptools"
        - "pip freeze > requirements.txt"
        - "pip install -r requirements.txt"
        - "sudo wget https://luarocks.org/releases/luarocks-2.4.4.tar.gz"
        - "sudo tar zxpf luarocks-2.4.4.tar.gz"
        - "cd luarocks-2.4.4"
        - "./configure --prefix=/usr/local/openresty/luajit \
           --with-lua=/usr/local/openresty/luajit \
           --lua-suffix=jit-2.1.0-beta2 \
           --with-lua-include=/usr/local/openresty/luajit/include/luajit-2.1; sudo make bootstrap"
        - "sudo luarocks install luasocket"
        - "pip install cpp-coveralls"
        - "luarocks install Lua-cURL  --server=https://luarocks.org/dev"
        - "luarocks install luacov-coveralls --server=https://luarocks.org/dev"
        - "luarocks install lunitx"
        - "luarocks install luabitop"
      language: python
      script:
        - "lunit.sh tests/diff_match_patch_test.lua"
        - "lunit.sh tests/speedtest.lua"
notifications:
  email:
    - 
sudo: required