Skip to content

Latest commit

 

History

History

.travis

Description of CI build configuration

Variables needed by travis

  • GITHUB_TOKEN - GitHub token with push access to repository
  • DOCKER_USERNAME - Username (netdatabot) with write access to docker hub repository
  • DOCKER_PASSWORD - Password to docker hub
  • encrypted_8daf19481253_key - key needed by openssl to decrypt GCS credentials file
  • encrypted_8daf19481253_iv - IV needed by openssl to decrypt GCS credentials file
  • COVERITY_SCAN_TOKEN - Token to allow coverity test analysis uploads

Stages

Test

Unit tests and coverage tests are executed here. Stage consists of 2 parallel jobs:

  • C tests - executed every time
  • dashboard.js - test if source files create the same file as it is in current repo
  • coverity test - executed only when pipeline was triggered from cron

Build

Stage is executed every time and consists of 5 parallel jobs which execute containerized and non-containerized installations of netdata. Jobs are run on following operating systems:

  • OSX
  • ubuntu 14.04
  • ubuntu 16.04 (containerized)
  • CentOS 6 (containerized)
  • CentOS 7 (containerized)
  • alpine (containerized)

Images for system containers are stored on dockerhub and are created from Dockerfiles located in netdata/helper-images repository.

Packaging

This stage is executed only on "master" brach and allows us to create a new tag just looking at git commit message. It executes one script called releaser.sh which is responsible for creating a release on GitHub by using hub. This script is also executing other scripts which can also be used in other CI jobs:

  • .travis/tagger.sh
  • .travis/generate_changelog.sh
  • packaging/docker/build.sh
  • .travis/create_artifacts.sh

Alternatively new release can be also created by pushing new tag to master branch. Additionally this step is also executing .travis/labeler.sh which is a temporary workaround to automatically label issues and PR. This script should be replaced with GitHub Actions when they are available to public.

tagger.sh

Script responsible to find out what will be the next tag based on a keyword in last commit message. Keywords are:

  • [netdata patch release] to bump patch number
  • [netdata minor release] to bump minor number
  • [netdata major release] to bump major number
  • [netdata release candidate] to create a new release candidate (appends or modifies suffix -rcX of previous tag) All keywords MUST be surrounded with square brackets. Tag is then stored in GIT_TAG variable.
generate_changelog.sh

Automatic changelog generator which updates our CHANGELOG.md file based on GitHub features (mostly labels and pull requests). Internally it uses github-changelog-generator and more information can be found on that project site.

build.sh and create_artifacts.sh

Scripts used to build new container images and provide release artifacts (tar.gz and makeself archives)

Nightlies

Tarball and self-extractor build AND Nightly docker images

As names might suggest those two jobs are responsible for nightly netdata package creation and are run every day (in cron). Combined they produce:

  • docker images
  • tar.gz archive (soon to be removed)
  • self-extracting package

This is achieved by running 2 scripts described earlier:

  • create_artifacts.sh
  • build.sh

Artifacts are pushed to GCS and container images are stored in docker hub.

Changelog generation

This job is responsible for regenerating changelog every day by executing generate_changelog.sh script. This is done only once a day due to github rate limiter.