DEV Community

loading...

Build stage on Travis CI

kengotoda profile image Kengo TODA ・1 min read

Today I found a Travis CI blog post regarding build stage on Travis CI. Now it goes GA so we all can enjoy this feature.

Here is the my PR to introduce build stage. In my feeling, it has one good point:

No more if in analysis and deploy part

When I run analysis like SonarCloud, it was necessary to limit target JVM & environment variable to make PR page easy to read. For example, here is a .travis.yml snippet that runs analysis only with specific condition:

jdk:
  - oraclejdk8
  - oraclejdk9
script:
  - ./mvnw org.jacoco:jacoco-maven-plugin:prepare-agent verify -B
  - if [[ $TRAVIS_JDK_VERSION == "oraclejdk8" ]]; then ./mvnw sonar:sonar -B; fi

In case of build stage, script runs with the first value in env, jdk and others by default. So we can remove if from .travis.yml:

jdk:
  - oraclejdk8
  - oraclejdk9
script:
  - ./mvnw verify -B
jobs:
  include:
    - stage: analysis
      script:
        - ./mvnw org.jacoco:jacoco-maven-plugin:prepare-agent verify sonar:sonar -B

One point, is that, each build stage and job doesn't share generated files. So here we need to run verify phase even in analysis stage, to generate analysis targets (.class file in this case).

This merit works even to deploy phase. This feature should reduce complexity in our .travis.yml.

That's all. Enjoy hacking with Travis CI!

Discussion (0)

pic
Editor guide