diff options
Diffstat (limited to '.travis/README.md')
-rw-r--r-- | .travis/README.md | 91 |
1 files changed, 91 insertions, 0 deletions
diff --git a/.travis/README.md b/.travis/README.md new file mode 100644 index 0000000..d67df29 --- /dev/null +++ b/.travis/README.md @@ -0,0 +1,91 @@ +# 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](https://github.com/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](https://github.com/github/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](https://github.com/github-changelog-generator/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. + |