[cleanup crusade] travis build stages (#4142)
* :construction: build stages * add linters * move addons to install * release * meaningful javascript linting * css linter * move artifact creation to separate script
Paweł Krupa committed
Sep 12, 2018 at 11:06 UTC
205b8613a89b1a3c1d9c5a9f457dc1295faf0c7f
2 files changed
+85
-69
.travis.yml
+61
-69
@@ -2,78 +2,70 @@
2
dist: trusty
3
sudo: true
4
5
-#
5
# C includes autotools and make by default
6
language: c
7
services:
8
- docker
10
-os:
11
- - linux
12
- - osx
13
-compiler:
14
- - gcc
15
- - clang
9
17
-#
18
-# Extra packages
19
-addons:
20
- apt:
21
- packages:
22
- - gnupg
23
- - libcap2-bin
24
- - zlib1g-dev
25
- - uuid-dev
26
- - fakeroot
10
+stages:
11
+ - lint
12
+ - test
13
+ - build
14
+ - name: release
15
+ if: branch = master AND type != pull_request
16
28
-#
29
-# Setup environment
30
-before_install:
31
- - eval "$(ssh-agent -s)"
32
- - ./.travis/decrypt-if-have-key decb6f6387c4
33
- - if [[ "$TRAVIS_OS_NAME" == "osx" ]]; then brew update ; fi
34
- - if [[ "$TRAVIS_OS_NAME" == "osx" ]]; then brew uninstall gnupg || echo; brew install gpg; fi
35
- - if [[ "$TRAVIS_OS_NAME" == "osx" ]]; then brew install fakeroot; fi
36
- - if [[ "$TRAVIS_OS_NAME" == "osx" ]]; then brew install ossp-uuid; fi
37
- - if [[ "$TRAVIS_OS_NAME" == "osx" ]]; then brew install xz; fi
38
- - export KEYSERVER=ipv4.pool.sks-keyservers.net
39
-#
40
-# Run
41
-before_script:
42
- # Download keys - builds of tags check for a recognised signature
43
- - ./packaging/gpg-recv-key phil@firehol.org "0762 9FF7 89EA 6156 012F 9F50 C406 9602 1359 9237"
44
- - ./packaging/gpg-recv-key costa@tsaousis.gr "4DFF 624A E564 3B51 2872 1F40 29CA 3358 89B9 A863"
45
- # Run the commit hooks in case the developer didn't
46
- - git diff 4b825dc642cb6eb9a060e54bf8d69288fbee4904 | ./packaging/check-files -
47
-script:
48
- # make release packages
49
- - fakeroot ./packaging/git-build
50
- # Make sure stdout is in blocking mode. If we don't, then conda create will barf during downloads.
51
- # See https://github.com/travis-ci/travis-ci/issues/4704#issuecomment-348435959 for details.
52
- - python -c 'import os,sys,fcntl; flags = fcntl.fcntl(sys.stdout, fcntl.F_GETFL); fcntl.fcntl(sys.stdout, fcntl.F_SETFL, flags&~os.O_NONBLOCK);'
53
- # make self-extractor
54
- - if [[ "$TRAVIS_OS_NAME" == "linux" ]]; then ./makeself/build-x86_64-static.sh; fi
55
- # test build and installer
56
- - fakeroot ./netdata-installer.sh --install $HOME --dont-wait --dont-start-it
57
- # build docker containers
58
- - if [[ "$TRAVIS_BRANCH" == "master" && "$TRAVIS_OS_NAME" == "linux" && "$CC" == "gcc" ]]; then REPOSITORY="firehol/netdata" ./docker/build.sh; fi
59
-#
60
-# Deploy as required
61
-after_success:
62
- - for i in *.tar.*; do md5sum -b $i > $i.md5; sha512sum -b $i > $i.sha; done
63
- - if [[ "$TRAVIS_OS_NAME" == "linux" ]]; then for i in *.gz.run; do md5sum -b $i > $i.md5; sha512sum -b $i > $i.sha; done; fi
64
- - ./.travis/deploy-if-have-key
65
-deploy:
66
- # Upload results to GitHub (tag only)
67
- - provider: releases
68
- draft: true
69
- api_key:
70
- secure: hbyuWsTshQ8Ixrgla2J6xtBNhQ1OjjaQ7hUEteclHrlx6i8B1ughCdhC3bYE1VGKClmq9mUvuZxcPGDDUaMBoLYTNaFx93IWorlrB29mpeNPd3b+DZqOePBYqU6NCA7PQccEUBkXJrGS44ZNg+pHFVCHMBe99+5u1Dfx/IJW0ojOb9XOfde6p5aL7syYWYXR/Ov/K40QAgpEDhAKUY4T1D/Yyk2ucdh6QsM00aq51F3D1SxIcFXcnBpacD3iGdkd3fM+c9PLMtq47mOicRjJsDnXYV58/upzmR9OPJYBbOPtNy0UKRl3f81cm5O4X3wcUBUMV4AQew8udy06TlWu2SQipGeh0RPDspRrBIqKhPJGX+h4Zyw/9iGvsDPetQqgoAsPqcruKGqNjC538LXr/fi8mur35VcKhmxi6gH7SNbs7TXfVLnrvNGgr6KCcKoLvFMxsJW1fQObVOq2mO+MwH6wQbqfRIo8btu6WVrzI4cYkZomny2i4D5YWVfTYEJ+BSTZCZ/l/RvxEYPUPFGyASxZ1OVCYA2in1JYdiPPMwK4gH66nYJG+ZDeTK5JUlXZAELZSRcDzecOAbi5zS/C3XXiGaHOXZBXjI0Gsw4kDaZn0xGUIzBFvMoSf1SMw5CuJ1kbSIzi4VGU1v85JaCB4znQ4pA4Yvw0/5l/q/B08aI=
71
- skip_cleanup: true
72
- file_glob: true
73
- file:
74
- - "netdata*.tar.*"
75
- - "netdata*.gz.run*"
76
- on:
77
- condition: $CC = gcc && $TRAVIS_OS_NAME = linux
78
- repo: firehol/netdata
79
- tags: true
17
+jobs:
18
+ include:
19
+ - stage: "lint"
20
+ name: "python"
21
+ install: skip
22
+ script: docker run --rm -v $(pwd):/code eeacms/pylint || echo "OK"
23
+ - name: "javascript"
24
+ install: skip
25
+ script: docker run -it --rm -v $(pwd)/web:/code eeacms/jslint --color /code/web/*.js /code/plugins.d/node.d.plugin/*.js /code/node.d/*.js /code/node.d/node_modules/netdata.js
26
+ - name: "css"
27
+ install: skip
28
+ script: docker run --rm -v $(pwd)/web:/code eeacms/csslint sh -c "csslint /code/*.css" || echo "OK"
29
+ - name: "bash"
30
+ install: skip
31
+ script: docker run --rm --volume "$(pwd)":/project:ro --entrypoint sh koalaman/shellcheck-alpine:v0.4.7 -c 'for file in $(find /project/ -type f -name "*.sh"); do if ! shellcheck --format=gcc $file; then export FAILED=true; fi; done; if [ "$FAILED" != "" ]; then exit 1; fi' || echo "OK"
32
+ - stage: "test"
33
+ name: "C"
34
+ install: sudo apt-get install -y libcap2-bin zlib1g-dev uuid-dev fakeroot libipmimonitoring-dev libmnl-dev libnetfilter-acct-dev
35
+ script: fakeroot ./netdata-installer.sh --install $HOME --dont-wait --dont-start-it --enable-plugin-nfacct --enable-plugin-freeipmi --disable-lto && $HOME/netdata/usr/sbin/netdata -W unittest
36
+ env: CFLAGS='-O1 -DNETDATA_INTERNAL_CHECKS=1 -DNETDATA_VERIFY_LOCKS=1'
37
+# env: CFLAGS='-O1 -ggdb -Wall -Wextra -Wformat-signedness -fstack-protector-all -DNETDATA_INTERNAL_CHECKS=1 -D_FORTIFY_SOURCE=2 -DNETDATA_VERIFY_LOCKS=1'
38
+# - name: "Node.js"
39
+# script: tests/run_nodejs.sh
40
+ - stage: "build"
41
+ name: "linux"
42
+ install: sudo apt-get install -y libcap2-bin zlib1g-dev uuid-dev fakeroot
43
+ script: fakeroot ./netdata-installer.sh --install $HOME --dont-wait --dont-start-it
44
+ - name: "OSX"
45
+ install: brew install fakeroot ossp-uuid
46
+ script:
47
+ - fakeroot ./netdata-installer.sh --install $HOME --dont-wait --dont-start-it
48
+ os: osx
49
+ - stage: "release"
50
+ name: "Docker"
51
+ script: docker/build.sh
52
+ env: REPOSITORY="firehol/netdata"
53
+ - name: "GitHub"
54
+ install: sudo apt-get install -y gnupg libcap2-bin zlib1g-dev uuid-dev fakeroot
55
+ script: ./travis/create_artifacts.sh
56
+ deploy:
57
+ - provider: releases
58
+ draft: true
59
+ api_key:
60
+ secure: hbyuWsTshQ8Ixrgla2J6xtBNhQ1OjjaQ7hUEteclHrlx6i8B1ughCdhC3bYE1VGKClmq9mUvuZxcPGDDUaMBoLYTNaFx93IWorlrB29mpeNPd3b+DZqOePBYqU6NCA7PQccEUBkXJrGS44ZNg+pHFVCHMBe99+5u1Dfx/IJW0ojOb9XOfde6p5aL7syYWYXR/Ov/K40QAgpEDhAKUY4T1D/Yyk2ucdh6QsM00aq51F3D1SxIcFXcnBpacD3iGdkd3fM+c9PLMtq47mOicRjJsDnXYV58/upzmR9OPJYBbOPtNy0UKRl3f81cm5O4X3wcUBUMV4AQew8udy06TlWu2SQipGeh0RPDspRrBIqKhPJGX+h4Zyw/9iGvsDPetQqgoAsPqcruKGqNjC538LXr/fi8mur35VcKhmxi6gH7SNbs7TXfVLnrvNGgr6KCcKoLvFMxsJW1fQObVOq2mO+MwH6wQbqfRIo8btu6WVrzI4cYkZomny2i4D5YWVfTYEJ+BSTZCZ/l/RvxEYPUPFGyASxZ1OVCYA2in1JYdiPPMwK4gH66nYJG+ZDeTK5JUlXZAELZSRcDzecOAbi5zS/C3XXiGaHOXZBXjI0Gsw4kDaZn0xGUIzBFvMoSf1SMw5CuJ1kbSIzi4VGU1v85JaCB4znQ4pA4Yvw0/5l/q/B08aI=
61
+ skip_cleanup: true
62
+ file_glob: true
63
+ file:
64
+ - "netdata*.tar.*"
65
+ - "netdata*.gz.run*"
66
+ on:
67
+ repo: firehol/netdata
68
+ tags: true
69
+
70
+notifications:
71
+ webhooks: https://app.fossa.io/hooks/travisci
.travis/create_artifacts.sh
new
+24
@@ -0,0 +1,24 @@
1
+#!/bin/bash
2
+
3
+if [ ! -f .gitignore ]
4
+then
5
+ echo "Run as ./travis/$(basename $0) from top level directory of git repository"
6
+ exit 1
7
+fi
8
+
9
+eval "$(ssh-agent -s)"
10
+./.travis/decrypt-if-have-key decb6f6387c4
11
+export KEYSERVER=ipv4.pool.sks-keyservers.net
12
+./packaging/gpg-recv-key phil@firehol.org "0762 9FF7 89EA 6156 012F 9F50 C406 9602 1359 9237"
13
+./packaging/gpg-recv-key costa@tsaousis.gr "4DFF 624A E564 3B51 2872 1F40 29CA 3358 89B9 A863"
14
+# Run the commit hooks in case the developer didn't
15
+git diff 4b825dc642cb6eb9a060e54bf8d69288fbee4904 | ./packaging/check-files -
16
+fakeroot ./packaging/git-build
17
+# Make sure stdout is in blocking mode. If we don't, then conda create will barf during downloads.
18
+# See https://github.com/travis-ci/travis-ci/issues/4704#issuecomment-348435959 for details.
19
+python -c 'import os,sys,fcntl; flags = fcntl.fcntl(sys.stdout, fcntl.F_GETFL); fcntl.fcntl(sys.stdout, fcntl.F_SETFL, flags&~os.O_NONBLOCK);'
20
+# make self-extractor
21
+./makeself/build-x86_64-static.sh
22
+for i in *.tar.*; do md5sum -b $i > $i.md5; sha512sum -b $i > $i.sha; done
23
+for i in *.gz.run; do md5sum -b $i > $i.md5; sha512sum -b $i > $i.sha; done
24
+./.travis/deploy-if-have-key