Uploaded image for project: 'Thrift'
  1. Thrift
  2. THRIFT-4351

Use Travis CI Build Stages to optimize the CI build

    XMLWordPrintableJSON

Details

    • Improvement
    • Status: Closed
    • Major
    • Resolution: Fixed
    • 0.10.0
    • 0.11.0
    • Build Process
    • None
    • Travis CI

    Description

      Due to the time limit restrictions in Travis, the thrift project leverages many redundant builds in identical containers:

      1. build docker image if needed then make precross and run cross on a subset of protocols
      2. build docker image if needed then make precross and run cross on a different subset of protocols
      3. build docker image if needed then make precross and run cross on a third subset of protocols
      4. build docker image if needed then make check

      The first four build jobs build most of the same stuff.
      Alternatively, what if we could do this instead:

      In parallel:

      1. build docker image for ubuntu-trusty if needed
      2. build docker image for ubuntu-xenial if needed

      then, in parallel:

      1. make check on ubuntu-trusty and store the build away
      2. make check on ubuntu-xenial and store the build away
      3. some other jobs like ubsan can run in parallel here

      then, in parallel:

      1. make cross (no bootstrap, no configure) on the ubuntu-trusty build result from above with all protocols
      2. make cross (no bootstrap, no configure) on the ubuntu-xenial build result from above with all protocols

      Ideally if we could carry the docker image across build jobs that would be ideal. I'm actually going to float that idea to the travis team.

      https://docs.travis-ci.com/user/build-stages/

      Attachments

        Activity

          People

            jking3 James E. King III
            jking3 James E. King III
            Votes:
            0 Vote for this issue
            Watchers:
            2 Start watching this issue

            Dates

              Created:
              Updated:
              Resolved: