summaryrefslogtreecommitdiffstats
path: root/.travis/README.md
diff options
context:
space:
mode:
Diffstat (limited to '.travis/README.md')
-rw-r--r--.travis/README.md91
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.
+