.travis.yml 25 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532
  1. ---
  2. dist: bionic
  3. language: c
  4. addons:
  5. apt:
  6. packages: ['moreutils']
  7. env:
  8. global:
  9. - RELEASE_CHANNEL=nightly
  10. before_install:
  11. - exec > >(ts -s '%H:%M:%.S ') 2>&1
  12. - source .travis/utils.sh
  13. # Install dependencies for all, once
  14. #
  15. install:
  16. - sudo apt-get install -y libuv1-dev liblz4-dev libjudy-dev libcap2-bin zlib1g-dev uuid-dev fakeroot libipmimonitoring-dev libmnl-dev libnetfilter-acct-dev gnupg python-pip
  17. - sudo pip install git-semver==0.2.4 # 11/Sep/2019: git-semver tip was broken, so we had to force last good run of it
  18. - source tests/installer/slack.sh
  19. - export NOTIF_CHANNEL="automation-beta"
  20. - if [ "${TRAVIS_REPO_SLUG}" = "netdata/netdata" ]; then export NOTIF_CHANNEL="automation"; fi;
  21. - export BUILD_VERSION="$(cat packaging/version | cut -d'-' -f1)"
  22. - export LATEST_RELEASE_VERSION="$(cat packaging/version | cut -d'-' -f1)"
  23. - export LATEST_RELEASE_DATE="$(git log -1 --format=%aD "${LATEST_RELEASE_VERSION}" | cat)"
  24. - if [[ "${TRAVIS_COMMIT_MESSAGE}" = *"[Build latest]"* ]]; then export BUILD_VERSION="$(cat packaging/version | cut -d'-' -f1,2 | sed -e 's/-/./g').latest"; fi;
  25. - export DEPLOY_REPO="netdata" # Default production packaging repository
  26. - export PACKAGING_USER="netdata" # Standard package cloud account
  27. - if [[ "${TRAVIS_COMMIT_MESSAGE}" = *"[Build latest]"* ]]; then export DEPLOY_REPO="netdata-edge"; fi;
  28. - export PACKAGE_CLOUD_RETENTION_DAYS=30
  29. - if [ ! "${TRAVIS_REPO_SLUG}" = "netdata/netdata" ]; then export DEPLOY_REPO="netdata-devel"; fi;
  30. # These are release-related artifacts and have to be evaluated before we start doing conditional checks inside stages
  31. - source ".travis/tagger.sh"
  32. - export GIT_TAG="$(git tag --points-at)"
  33. # Setup notification system
  34. #
  35. notifications:
  36. webhooks: https://app.fossa.io/hooks/travisci
  37. # Define the stage sequence and conditionals
  38. #
  39. stages:
  40. # Mandatory runs, we always want these executed
  41. - name: Build process
  42. # Nightly operations
  43. - name: Nightly operations
  44. if: branch = master AND type = cron AND env(RUN_NIGHTLY) = yes
  45. - name: Nightly release
  46. if: branch = master AND type = cron AND env(RUN_NIGHTLY) = yes
  47. - name: Trigger deb and rpm package build (nightly release)
  48. if: branch = master AND type = cron AND env(RUN_NIGHTLY) = yes
  49. # Scheduled releases
  50. - name: Support activities on main branch
  51. if: branch = master AND type != pull_request AND type != cron AND repo = netdata/netdata
  52. # We don't run on release candidates
  53. - name: Publish for release
  54. if: >-
  55. branch = master
  56. AND type != pull_request
  57. AND type != cron
  58. AND tag !~ /(-rc)/
  59. AND commit_message =~ /\[netdata (release candidate|(major|minor|patch) release)\]/
  60. - name: Trigger deb and rpm package build (release)
  61. if: >-
  62. branch = master
  63. AND type != pull_request
  64. AND type != cron
  65. AND tag !~ /(-rc)/
  66. AND commit_message =~ /\[netdata (release candidate|(major|minor|patch) release)\]/
  67. # Build DEB packages under special conditions
  68. - name: Package ubuntu/* and debian/*
  69. if: type != cron AND type != pull_request AND branch = master
  70. # Build RPM packages under special conditions
  71. - name: Package centos, fedora and opensuse
  72. if: type != cron AND type != pull_request AND branch = master
  73. # Define stage implementation details
  74. #
  75. jobs:
  76. # This is a hook to help us introduce "soft" errors on our process
  77. allow_failures:
  78. - env: ALLOW_SOFT_FAILURE_HERE=true
  79. include:
  80. # Ensure netdata code builds successfully
  81. - stage: Build process
  82. name: Standard netdata build
  83. script: fakeroot ./netdata-installer.sh --install $HOME --dont-wait --dont-start-it --enable-plugin-nfacct --enable-plugin-freeipmi --disable-lto
  84. env: CFLAGS='-O1 -Wall -Wextra -Wformat-signedness -fstack-protector-all -fno-common -DNETDATA_INTERNAL_CHECKS=1 -D_FORTIFY_SOURCE=2 -DNETDATA_VERIFY_LOCKS=1'
  85. after_failure: post_message "TRAVIS_MESSAGE" "<!here> standard netdata build is failing (Still dont know which one, will improve soon)"
  86. - name: Docker container build process (alpine installation)
  87. script: packaging/docker/build.sh
  88. env:
  89. - ARCH=amd64
  90. after_failure: post_message "TRAVIS_MESSAGE" "Docker build process failed"
  91. - name: Build/Install for ubuntu 18.04 (not containerized)
  92. script: fakeroot ./netdata-installer.sh --dont-wait --dont-start-it --install $HOME
  93. after_failure: post_message "TRAVIS_MESSAGE" "Build/Install failed on ubuntu 18.04"
  94. - name: Build/install for CentOS 7 (Containerized)
  95. script: docker run -it -v "${PWD}:/netdata:rw" -w /netdata "netdata/os-test:centos7" ./netdata-installer.sh --dont-wait --dont-start-it --install /tmp
  96. after_failure: post_message "TRAVIS_MESSAGE" "Build/Install failed on CentOS 7"
  97. # Ubuntu runs
  98. - name: Run netdata lifecycle on Ubuntu 16.04
  99. script: 'for i in $(seq 0 4); do printf "[XXX: Run #%s]\n" "$i";docker run -it -v "${PWD}:/netdata:rw" -w /netdata "ubuntu:16.04" tests/updater_checks.sh && break; done'
  100. after_failure: post_message "TRAVIS_MESSAGE" "Netdata updater process failed on bare Ubuntu 16.04"
  101. - name: Run netdata lifecycle, on Ubuntu 18.04
  102. script: 'for i in $(seq 0 4); do printf "[XXX: Run #%s]\n" "$i";docker run -it -v "${PWD}:/netdata:rw" -w /netdata "ubuntu:18.04" tests/updater_checks.sh && break; done'
  103. after_failure: post_message "TRAVIS_MESSAGE" "Netdata updater process failed on bare Ubuntu 18.04"
  104. - name: Run netdata lifecycle, on Ubuntu 19.10
  105. script: 'for i in $(seq 0 4); do printf "[XXX: Run #%s]\n" "$i";docker run -it -v "${PWD}:/netdata:rw" -w /netdata "ubuntu:19.10" tests/updater_checks.sh && break; done'
  106. after_failure: post_message "TRAVIS_MESSAGE" "Netdata updater process failed on bare Ubuntu 19.10"
  107. # Centos runs
  108. - name: Run netdata lifecycle on CentOS 7
  109. script: 'for i in $(seq 0 4); do printf "[XXX: Run #%s]\n" "$i";docker run -it -v "${PWD}:/netdata:rw" -w /netdata "centos:7" tests/updater_checks.sh && break; done '
  110. after_failure: post_message "TRAVIS_MESSAGE" "Netdata updater process failed on bare CentOS 7"
  111. - name: Run netdata lifecycle, on Debian 9
  112. script: 'for i in $(seq 0 4); do printf "[XXX: Run #%s]\n" "$i";docker run -it -v "${PWD}:/netdata:rw" -w /netdata "debian:stretch" tests/updater_checks.sh && break; done'
  113. after_failure: post_message "TRAVIS_MESSAGE" "Netdata updater process failed on bare Debian 9 (stretch)"
  114. - name: Run netdata lifecycle, on Debian 10
  115. script: 'for i in $(seq 0 4); do printf "[XXX: Run #%s]\n" "$i";docker run -it -v "${PWD}:/netdata:rw" -w /netdata "debian:buster" tests/updater_checks.sh && break; done'
  116. after_failure: post_message "TRAVIS_MESSAGE" "Netdata updater process failed on bare Debian 10 (buster)"
  117. # openSUSE runs
  118. - name: Run netdata lifecycle, on openSUSE 15.1
  119. script: 'for i in $(seq 0 4); do printf "[XXX: Run #%s]\n" "$i";docker run -it -v "${PWD}:/netdata:rw" -w /netdata "opensuse/leap:15.1" tests/updater_checks.sh && break; done'
  120. after_failure: post_message "TRAVIS_MESSAGE" "Netdata updater process failed on bare opensuse/leap:15.1"
  121. - name: Run netdata lifecycle, on openSUSE Tumbleweed
  122. script: 'for i in $(seq 0 4); do printf "[XXX: Run #%s]\n" "$i";docker run -it -v "${PWD}:/netdata:rw" -w /netdata "opensuse/tumbleweed:latest" tests/updater_checks.sh && break; done'
  123. after_failure: post_message "TRAVIS_MESSAGE" "Netdata updater process failed on bare opensuse/tumbleweed:latest"
  124. # Alpine runs
  125. - name: Run netdata lifecycle, on Alpine linux
  126. script: 'for i in $(seq 0 4); do printf "[XXX: Run #%s]\n" "$i";docker run -it -v "${PWD}:/netdata:rw" -w /netdata "alpine" tests/updater_checks.sh && break; done'
  127. after_failure: post_message "TRAVIS_MESSAGE" "Netdata updater process failed on bare Alpine"
  128. # Arch linux runs
  129. - name: Run netdata lifecycle, on ArchLinux
  130. script: 'for i in $(seq 0 4); do printf "[XXX: Run #%s]\n" "$i";docker run -it -v "${PWD}:/netdata:rw" -w /netdata "archlinux/base:latest" tests/updater_checks.sh && break; done'
  131. after_failure: post_message "TRAVIS_MESSAGE" "Netdata updater process failed on bare archlinux/base:latest"
  132. # Fedora runs
  133. - name: Run netdata lifecycle, on Fedora 30
  134. script: 'for i in $(seq 0 4); do printf "[XXX: Run #%s]\n" "$i";docker run -it -v "${PWD}:/netdata:rw" -w /netdata "fedora:30" tests/updater_checks.sh && break; done'
  135. after_failure: post_message "TRAVIS_MESSAGE" "Netdata updater process failed on bare Fedora 30"
  136. - name: Run netdata lifecycle, on Fedora 31
  137. script: 'for i in $(seq 0 4); do printf "[XXX: Run #%s]\n" "$i";docker run -it -v "${PWD}:/netdata:rw" -w /netdata "fedora:31" tests/updater_checks.sh && break; done'
  138. after_failure: post_message "TRAVIS_MESSAGE" "Netdata updater process failed on bare Fedora 31"
  139. - stage: Support activities on main branch
  140. name: Generate changelog for release (only on special and tagged commit msg)
  141. before_script: post_message "TRAVIS_MESSAGE" "Support activities on main branch initiated" "${NOTIF_CHANNEL}"
  142. script:
  143. - echo "GIT Branch:" && git branch
  144. - echo "Last commit:" && git log -1
  145. - echo "GIT Describe:" && git describe
  146. - echo "packaging/version:" && cat packaging/version
  147. - if [[ -z "${GIT_TAG}" ]]; then echo "Running set tag for release" && set_tag_for_release; fi;
  148. - .travis/generate_changelog_and_tag_release.sh
  149. after_failure: post_message "TRAVIS_MESSAGE" "<!here> Changelog generation and tag of release, failed"
  150. git:
  151. depth: false
  152. if: commit_message =~ /\[netdata (release candidate|(major|minor|patch) release)\]/ AND tag !~ /(-rc)/ OR (env(GIT_TAG) IS present AND NOT env(GIT_TAG) IS blank)
  153. # ###### Packaging workflow section ######
  154. # References:
  155. # https://us.images.linuxcontainers.org
  156. # https://packagecloud.io/docs#install_repo
  157. # TODO: This section is stale, will be aligned with the RPM implementation when we get to DEB packaging
  158. - stage: Package ubuntu/* and debian/*
  159. _template: &DEB_TEMPLATE
  160. git:
  161. depth: false
  162. before_install:
  163. - sudo apt-get install -y wget lxc python3-lxc python-lxc lxc-templates dh-make git-buildpackage build-essential libdistro-info-perl
  164. - source tests/installer/slack.sh
  165. before_script:
  166. - export PACKAGES_DIRECTORY="$(mktemp -d -t netdata-packaging-contents-dir-XXXXXX)" && echo "Created packaging directory ${PACKAGES_DIRECTORY}"
  167. script:
  168. - echo "GIT Branch:" && git branch
  169. - echo "Last commit:" && git log -1
  170. - echo "GIT Describe:" && git describe
  171. - echo "packaging/version:" && cat packaging/version
  172. - echo "Creating LXC environment for the build" && sudo -E .travis/package_management/create_lxc_for_build.sh
  173. - echo "Building package in container" && sudo -E .travis/package_management/build_package_in_container.sh
  174. - sudo chown -R root:travis "/var/lib/lxc"
  175. - sudo chmod -R 750 "/var/lib/lxc"
  176. - echo "Preparing DEB packaging contents for upload" && sudo -E .travis/package_management/prepare_packages.sh
  177. after_failure: post_message "TRAVIS_MESSAGE" "Failed to build DEB for ${BUILD_STRING}.${BUILD_ARCH}"
  178. before_deploy:
  179. - .travis/package_management/yank_stale_pkg.sh "${PACKAGES_DIRECTORY}" "${BUILD_STRING}" || echo "No stale DEB found"
  180. deploy:
  181. - provider: packagecloud
  182. repository: "${DEPLOY_REPO}"
  183. username: "${PACKAGING_USER}"
  184. token: "${PKG_CLOUD_TOKEN}"
  185. dist: "${BUILD_STRING}"
  186. local_dir: "${PACKAGES_DIRECTORY}"
  187. skip_cleanup: true
  188. on:
  189. # Only deploy on ${USER}/netdata, master branch, when build-area directory is created
  190. repo: ${TRAVIS_REPO_SLUG}
  191. branch: "master"
  192. condition: -d "${PACKAGES_DIRECTORY}"
  193. after_deploy:
  194. - if [ -n "${BUILDER_NAME}" ]; then rm -rf /home/${BUILDER_NAME}/* && echo "Cleared /home/${BUILDER_NAME} directory" || echo "Failed to clean /home/${BUILDER_NAME} directory"; fi;
  195. - if [ -d "${PACKAGES_DIRECTORY}" ]; then rm -rf "${PACKAGES_DIRECTORY}"; fi;
  196. name: "Build & Publish DEB package for ubuntu/eoan"
  197. <<: *DEB_TEMPLATE
  198. if: commit_message =~ /\[Package (amd64|arm64|i386) DEB( Ubuntu)?\]/
  199. env:
  200. - BUILDER_NAME="builder" BUILD_DISTRO="ubuntu" BUILD_RELEASE="eoan" BUILD_STRING="ubuntu/eoan"
  201. - PACKAGE_TYPE="deb" REPO_TOOL="apt-get"
  202. - ALLOW_SOFT_FAILURE_HERE=true
  203. - name: "Build & Publish DEB package for ubuntu/bionic"
  204. <<: *DEB_TEMPLATE
  205. if: commit_message =~ /\[Package (amd64|arm64|i386) DEB( Ubuntu)?\]/
  206. env:
  207. - BUILDER_NAME="builder" BUILD_DISTRO="ubuntu" BUILD_RELEASE="bionic" BUILD_STRING="ubuntu/bionic"
  208. - PACKAGE_TYPE="deb" REPO_TOOL="apt-get"
  209. - ALLOW_SOFT_FAILURE_HERE=true
  210. - name: "Build & Publish DEB package for ubuntu/xenial"
  211. <<: *DEB_TEMPLATE
  212. if: commit_message =~ /\[Package (amd64|arm64|i386) DEB( Ubuntu)?\]/
  213. env:
  214. - BUILDER_NAME="builder" BUILD_DISTRO="ubuntu" BUILD_RELEASE="xenial" BUILD_STRING="ubuntu/xenial"
  215. - PACKAGE_TYPE="deb" REPO_TOOL="apt-get"
  216. - ALLOW_SOFT_FAILURE_HERE=true
  217. - name: "Build & Publish DEB package for debian/buster"
  218. <<: *DEB_TEMPLATE
  219. if: commit_message =~ /\[Package (amd64|arm64|i386) DEB( Debian)?\]/
  220. env:
  221. - BUILDER_NAME="builder" BUILD_DISTRO="debian" BUILD_RELEASE="buster" BUILD_STRING="debian/buster"
  222. - PACKAGE_TYPE="deb" REPO_TOOL="apt-get"
  223. - ALLOW_SOFT_FAILURE_HERE=true
  224. - name: "Build & Publish DEB package for debian/stretch"
  225. <<: *DEB_TEMPLATE
  226. if: commit_message =~ /\[Package (amd64|arm64|i386) DEB( Debian)?\]/
  227. env:
  228. - BUILDER_NAME="builder" BUILD_DISTRO="debian" BUILD_RELEASE="stretch" BUILD_STRING="debian/stretch"
  229. - PACKAGE_TYPE="deb" REPO_TOOL="apt-get"
  230. - ALLOW_SOFT_FAILURE_HERE=true
  231. - name: "Build & Publish DEB package for debian/jessie"
  232. <<: *DEB_TEMPLATE
  233. if: commit_message =~ /\[Package (amd64|arm64|i386) DEB( Debian)?\]/
  234. env:
  235. - BUILDER_NAME="builder" BUILD_DISTRO="debian" BUILD_RELEASE="jessie" BUILD_STRING="debian/jessie"
  236. - PACKAGE_TYPE="deb" REPO_TOOL="apt-get"
  237. - ALLOW_SOFT_FAILURE_HERE=true
  238. - stage: Package centos, fedora and opensuse
  239. _template: &RPM_TEMPLATE
  240. git:
  241. depth: false
  242. before_install:
  243. - sudo apt-get install -y wget lxc lxc-templates python3-lxc python-lxc
  244. - source tests/installer/slack.sh
  245. before_script:
  246. - export PACKAGES_DIRECTORY="$(mktemp -d -t netdata-packaging-contents-dir-XXXXXX)" && echo "Created packaging directory ${PACKAGES_DIRECTORY}"
  247. script:
  248. - echo "GIT Branch:" && git branch
  249. - echo "Last commit:" && git log -1
  250. - echo "GIT Describe:" && git describe
  251. - echo "packaging/version:" && cat packaging/version
  252. - echo "Creating LXC environment for the build" && sudo -E .travis/package_management/create_lxc_for_build.sh
  253. - echo "Building package in container" && sudo -E .travis/package_management/build_package_in_container.sh
  254. - sudo chmod -R 755 "/var/lib/lxc"
  255. - echo "Preparing RPM packaging contents for upload" && sudo -E .travis/package_management/prepare_packages.sh
  256. after_failure: post_message "TRAVIS_MESSAGE" "Failed to build RPM for ${BUILD_STRING}.${BUILD_ARCH}"
  257. before_deploy:
  258. - .travis/package_management/yank_stale_pkg.sh "${PACKAGES_DIRECTORY}" "${BUILD_STRING}" || echo "No stale RPM found"
  259. deploy:
  260. - provider: packagecloud
  261. repository: "${DEPLOY_REPO}"
  262. username: "${PACKAGING_USER}"
  263. token: "${PKG_CLOUD_TOKEN}"
  264. dist: "${BUILD_STRING}"
  265. local_dir: "${PACKAGES_DIRECTORY}"
  266. skip_cleanup: true
  267. on:
  268. # Only deploy on ${USER}/netdata, master branch, when packages directory is created
  269. repo: ${TRAVIS_REPO_SLUG}
  270. branch: "master"
  271. condition: -d "${PACKAGES_DIRECTORY}"
  272. after_deploy:
  273. - if [ -n "${BUILDER_NAME}" ]; then rm -rf /home/${BUILDER_NAME}/* && echo "Cleared /home/${BUILDER_NAME} directory" || echo "Failed to clean /home/${BUILDER_NAME} directory"; fi;
  274. - if [ -d "${PACKAGES_DIRECTORY}" ]; then rm -rf "${PACKAGES_DIRECTORY}"; fi;
  275. name: "Build & Publish RPM package for Enterprise Linux 7"
  276. <<: *RPM_TEMPLATE
  277. if: commit_message =~ /\[Package (amd64|arm64) RPM( Enterprise Linux)?\]/
  278. env:
  279. - BUILDER_NAME="builder" BUILD_DISTRO="centos" BUILD_RELEASE="7" BUILD_STRING="el/7"
  280. - PACKAGE_TYPE="rpm" REPO_TOOL="yum"
  281. - ALLOW_SOFT_FAILURE_HERE=true
  282. - name: "Build & Publish RPM package for Fedora 31"
  283. <<: *RPM_TEMPLATE
  284. if: commit_message =~ /\[Package (amd64|arm64) RPM( Fedora)?\]/
  285. env:
  286. - BUILDER_NAME="builder" BUILD_DISTRO="fedora" BUILD_RELEASE="31" BUILD_STRING="fedora/31"
  287. - PACKAGE_TYPE="rpm" REPO_TOOL="dnf"
  288. - ALLOW_SOFT_FAILURE_HERE=true
  289. - name: "Build & Publish RPM package for Fedora 30"
  290. <<: *RPM_TEMPLATE
  291. if: commit_message =~ /\[Package (amd64|arm64) RPM( Fedora)?\]/
  292. env:
  293. - BUILDER_NAME="builder" BUILD_DISTRO="fedora" BUILD_RELEASE="30" BUILD_STRING="fedora/30"
  294. - PACKAGE_TYPE="rpm" REPO_TOOL="dnf"
  295. - ALLOW_SOFT_FAILURE_HERE=true
  296. - name: "Build & Publish RPM package for openSUSE 15.1"
  297. <<: *RPM_TEMPLATE
  298. if: commit_message =~ /\[Package (amd64|arm64) RPM( openSUSE)?\]/
  299. env:
  300. - BUILDER_NAME="builder" BUILD_DISTRO="opensuse" BUILD_RELEASE="15.1" BUILD_STRING="opensuse/15.1"
  301. - PACKAGE_TYPE="rpm" REPO_TOOL="zypper"
  302. - ALLOW_SOFT_FAILURE_HERE=true
  303. # ###### End of packaging workflow section ###### #
  304. # ############################################### #
  305. # We only publish if a TAG has been set during packaging
  306. - stage: Publish for release
  307. _template: &RELEASE_TEMPLATE
  308. env:
  309. - RELEASE_CHANNEL: stable
  310. git:
  311. depth: false
  312. script:
  313. - echo "GIT Branch:" && git branch
  314. - echo "Last commit:" && git log -1
  315. - echo "GIT Describe:" && git describe
  316. - echo "packaging/version:" && cat packaging/version
  317. - packaging/docker/check_login.sh
  318. && echo "Switching to latest master branch, to pick up tagging if any" && git checkout master && git pull
  319. && tick packaging/docker/build.sh
  320. && packaging/docker/publish.sh
  321. after_failure: post_message "TRAVIS_MESSAGE" "<!here> Docker image publishing failed"
  322. name: Build & Publish docker image for i386
  323. <<: *RELEASE_TEMPLATE
  324. env:
  325. - ALLOW_SOFT_FAILURE_HERE=true
  326. - ARCH=i386
  327. - name: Build & Publish docker image for amd64
  328. <<: *RELEASE_TEMPLATE
  329. env:
  330. - ALLOW_SOFT_FAILURE_HERE=true
  331. - ARCH=amd64
  332. - name: Build & Publish docker image for armhf
  333. <<: *RELEASE_TEMPLATE
  334. env:
  335. - ALLOW_SOFT_FAILURE_HERE=true
  336. - ARCH=armhf
  337. - name: Build & Publish docker image for aarch64
  338. <<: *RELEASE_TEMPLATE
  339. env:
  340. - ALLOW_SOFT_FAILURE_HERE=true
  341. - ARCH=aarch64
  342. - name: Create release draft
  343. git:
  344. depth: false
  345. env:
  346. - RELEASE_CHANNEL=stable
  347. before_script: post_message "TRAVIS_MESSAGE" "Drafting release on github" "${NOTIF_CHANNEL}"
  348. script:
  349. - echo "GIT Branch:" && git branch
  350. - echo "Last commit:" && git log -1
  351. - echo "GIT Describe:" && git describe
  352. - echo "packaging/version:" && cat packaging/version
  353. - echo "Generating release artifacts" && .travis/create_artifacts.sh # Could/should be a common storage to put this and share between jobs
  354. - .travis/draft_release.sh
  355. after_failure: post_message "TRAVIS_MESSAGE" "<!here> Draft release submission failed"
  356. - stage: Trigger deb and rpm package build (release)
  357. name: Trigger deb and rpm package build
  358. script: .travis/trigger_package_generation.sh
  359. after_failure: post_message "TRAVIS_MESSAGE" "<!here> Failed to trigger deb and rpm package build during release" "${NOTIF_CHANNEL}"
  360. # This is the nightly pre-execution step (Jobs, preparatory steps for nightly, etc)
  361. - stage: Nightly operations
  362. name: Kickstart files integrity testing (extended)
  363. script: ./tests/installer/checksums.sh
  364. # This is generating the changelog for nightly release and publish it
  365. - name: Generate nightly changelog
  366. script:
  367. - ".travis/nightlies.sh"
  368. - ".travis/check_changelog_last_modification.sh"
  369. after_failure: post_message "TRAVIS_MESSAGE" "<!here> Nightly changelog generation failed"
  370. git:
  371. depth: false
  372. - name: Clean up package cloud nightly repository from old versions
  373. script:
  374. - DEPLOY_REPO="netdata-edge" .travis/package_management/old_package_purging.sh
  375. - DEPLOY_REPO="netdata-devel" .travis/package_management/old_package_purging.sh
  376. # This is the nightly execution step
  377. #
  378. - stage: Nightly release
  379. _template: &NIGHTLY_TEMPLATE
  380. git:
  381. depth: false
  382. script:
  383. - echo "GIT Branch:" && git branch
  384. - echo "Last commit:" && git log -1
  385. - echo "GIT Describe:" && git describe
  386. - echo "packaging/version:" && cat packaging/version
  387. - packaging/docker/check_login.sh
  388. && tick packaging/docker/build.sh
  389. && packaging/docker/publish.sh
  390. after_failure: post_message "TRAVIS_MESSAGE" "<!here> Nightly docker image publish failed"
  391. name: Build & Publish docker image for i386
  392. <<: *NIGHTLY_TEMPLATE
  393. env:
  394. - ALLOW_SOFT_FAILURE_HERE=true
  395. - ARCH=i386
  396. - name: Build & Publish docker image for amd64
  397. <<: *NIGHTLY_TEMPLATE
  398. env:
  399. - ALLOW_SOFT_FAILURE_HERE=true
  400. - ARCH=amd64
  401. - name: Build & Publish docker image for armhf
  402. <<: *NIGHTLY_TEMPLATE
  403. env:
  404. - ALLOW_SOFT_FAILURE_HERE=true
  405. - ARCH=armhf
  406. - name: Build & Publish docker image for aarch64
  407. <<: *NIGHTLY_TEMPLATE
  408. env:
  409. - ALLOW_SOFT_FAILURE_HERE=true
  410. - ARCH=aarch64
  411. - name: Create nightly release artifacts, publish to GCS
  412. script:
  413. - echo "GIT Branch:" && git branch
  414. - echo "Last commit:" && git log -1
  415. - echo "GIT Describe:" && git describe
  416. - echo "packaging/version:" && cat packaging/version
  417. - .travis/create_artifacts.sh
  418. after_failure: post_message "TRAVIS_MESSAGE" "<!here> Nightly artifacts generation failed"
  419. git:
  420. depth: false
  421. before_deploy:
  422. echo "Preparing creds under ${TRAVIS_REPO_SLUG}";
  423. if [ "${TRAVIS_REPO_SLUG}" == "netdata/netdata" ]; then
  424. openssl aes-256-cbc -K $encrypted_8daf19481253_key -iv $encrypted_8daf19481253_iv -in .travis/gcs-credentials.json.enc -out .travis/gcs-credentials.json -d;
  425. else
  426. echo "Beta deployment stage in progress";
  427. openssl aes-256-cbc -K $encrypted_8daf19481253_key -iv $encrypted_8daf19481253_iv -in .travis/gcs-credentials.json.enc -out .travis/gcs-credentials.json -d;
  428. fi;
  429. deploy:
  430. # Beta storage, used for testing purposes
  431. - provider: gcs
  432. edge:
  433. branch: gcs-ng
  434. project_id: netdata-storage
  435. credentials: .travis/gcs-credentials.json
  436. bucket: "netdata-dev-nightlies"
  437. skip_cleanup: true
  438. local_dir: "artifacts"
  439. on:
  440. # Only deploy on netdata/netdata, master branch, when artifacts directory is created
  441. repo: ${TRAVIS_REPO_SLUG}
  442. branch: master
  443. condition: -d "artifacts" && ${TRAVIS_REPO_SLUG} != "netdata/netdata"
  444. # Production storage
  445. - provider: gcs
  446. edge:
  447. branch: gcs-ng
  448. project_id: netdata-storage
  449. credentials: .travis/gcs-credentials.json
  450. bucket: "netdata-nightlies"
  451. skip_cleanup: true
  452. local_dir: "artifacts"
  453. on:
  454. # Only deploy on netdata/netdata, master branch, when artifacts directory is created
  455. repo: netdata/netdata
  456. branch: master
  457. condition: -d "artifacts" && ${TRAVIS_REPO_SLUG} = "netdata/netdata"
  458. after_deploy: rm -f .travis/gcs-credentials.json
  459. - stage: Trigger deb and rpm package build (nightly release)
  460. name: Trigger deb and rpm package build
  461. script: .travis/trigger_package_generation.sh "[Build latest]"
  462. after_failure: post_message "TRAVIS_MESSAGE" "<!here> Failed to trigger deb and rpm package build during nightly release" "${NOTIF_CHANNEL}"