build-and-install.yml 7.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207
  1. ---
  2. name: Builder
  3. on:
  4. push:
  5. branches:
  6. - master
  7. pull_request:
  8. jobs:
  9. static-build:
  10. name: Build (x86_64)
  11. runs-on: ubuntu-latest
  12. steps:
  13. - name: Git clone repository
  14. uses: actions/checkout@v2
  15. with:
  16. submodules: recursive
  17. - run: |
  18. git fetch --prune --unshallow --tags
  19. - name: Build
  20. run: |
  21. .github/scripts/build-static-x86_64.sh
  22. source-build:
  23. name: Build & Install
  24. strategy:
  25. fail-fast: false
  26. matrix:
  27. distro:
  28. - 'alpine:edge'
  29. - 'alpine:3.13'
  30. - 'alpine:3.12'
  31. - 'alpine:3.11'
  32. - 'alpine:3.10'
  33. - 'archlinux:latest'
  34. - 'centos:8'
  35. - 'centos:7'
  36. - 'clearlinux:latest'
  37. - 'debian:10'
  38. - 'debian:9'
  39. - 'fedora:33'
  40. - 'fedora:32'
  41. - 'opensuse/leap:15.2'
  42. - 'opensuse/tumbleweed:latest'
  43. - 'ubuntu:20.10'
  44. - 'ubuntu:20.04'
  45. - 'ubuntu:18.04'
  46. - 'ubuntu:16.04'
  47. include:
  48. - distro: 'alpine:edge'
  49. pre: 'apk add -U bash'
  50. rmjsonc: 'apk del json-c-dev'
  51. - distro: 'alpine:3.13'
  52. pre: 'apk add -U bash'
  53. rmjsonc: 'apk del json-c-dev'
  54. - distro: 'alpine:3.12'
  55. pre: 'apk add -U bash'
  56. rmjsonc: 'apk del json-c-dev'
  57. - distro: 'alpine:3.11'
  58. pre: 'apk add -U bash'
  59. rmjsonc: 'apk del json-c-dev'
  60. - distro: 'alpine:3.10'
  61. pre: 'apk add -U bash'
  62. rmjsonc: 'apk del json-c-dev'
  63. - distro: 'archlinux:latest'
  64. pre: 'pacman --noconfirm -Syu && pacman --noconfirm -Sy grep libffi'
  65. - distro: 'centos:8'
  66. rmjsonc: 'dnf remove -y json-c-devel'
  67. - distro: 'debian:10'
  68. pre: 'apt-get update'
  69. rmjsonc: 'apt-get remove -y libjson-c-dev'
  70. - distro: 'debian:9'
  71. pre: 'apt-get update'
  72. rmjsonc: 'apt-get remove -y libjson-c-dev'
  73. - distro: 'fedora:33'
  74. rmjsonc: 'dnf remove -y json-c-devel'
  75. - distro: 'fedora:32'
  76. rmjsonc: 'dnf remove -y json-c-devel'
  77. - distro: 'opensuse/leap:15.2'
  78. rmjsonc: 'zypper rm -y libjson-c-devel'
  79. - distro: 'opensuse/tumbleweed:latest'
  80. rmjsonc: 'zypper rm -y libjson-c-devel'
  81. - distro: 'ubuntu:20.10'
  82. pre: 'apt-get update'
  83. rmjsonc: 'apt-get remove -y libjson-c-dev'
  84. - distro: 'ubuntu:20.04'
  85. pre: 'apt-get update'
  86. rmjsonc: 'apt-get remove -y libjson-c-dev'
  87. - distro: 'ubuntu:18.04'
  88. pre: 'apt-get update'
  89. rmjsonc: 'apt-get remove -y libjson-c-dev'
  90. - distro: 'ubuntu:16.04'
  91. pre: 'apt-get update'
  92. rmjsonc: 'apt-get remove -y libjson-c-dev'
  93. runs-on: ubuntu-latest
  94. steps:
  95. - name: Git clone repository
  96. uses: actions/checkout@v2
  97. with:
  98. submodules: recursive
  99. - name: install-required-packages.sh on ${{ matrix.distro }}
  100. env:
  101. PRE: ${{ matrix.pre }}
  102. RMJSONC: ${{ matrix.rmjsonc }}
  103. run: |
  104. echo $PRE > ./prep-cmd.sh
  105. echo $RMJSONC > ./rmjsonc.sh && chmod +x ./rmjsonc.sh
  106. docker build . -f .github/dockerfiles/Dockerfile.build_test -t test --build-arg BASE=${{ matrix.distro }}
  107. - name: Regular build on ${{ matrix.distro }}
  108. run: |
  109. docker run -w /netdata test /bin/sh -c 'autoreconf -ivf && ./configure && make -j2'
  110. - name: netdata-installer on ${{ matrix.distro }}, disable cloud
  111. run: |
  112. docker run -w /netdata test /bin/sh -c './netdata-installer.sh --dont-wait --dont-start-it --disable-cloud'
  113. - name: netdata-installer on ${{ matrix.distro }}, require cloud
  114. run: |
  115. docker run -w /netdata test /bin/sh -c './netdata-installer.sh --dont-wait --dont-start-it --require-cloud'
  116. - name: netdata-installer on ${{ matrix.distro }}, require cloud, no JSON-C
  117. if: matrix.rmjsonc != ''
  118. run: |
  119. docker run -w /netdata test \
  120. /bin/sh -c '/netdata/rmjsonc.sh && ./netdata-installer.sh --dont-wait --dont-start-it --require-cloud'
  121. aws-kinesis-build:
  122. name: With AWS Kinesis SDK
  123. strategy:
  124. fail-fast: false
  125. matrix:
  126. distro:
  127. - 'centos:8'
  128. - 'debian:buster'
  129. - 'fedora:32'
  130. - 'ubuntu:20.04'
  131. include:
  132. - distro: 'centos:8'
  133. pre: >-
  134. yum -y update &&
  135. yum -y groupinstall 'Development Tools' &&
  136. yum -y install libcurl-devel openssl-devel libuuid-devel
  137. build_kinesis: >-
  138. git clone https://github.com/aws/aws-sdk-cpp.git &&
  139. cmake -DCMAKE_INSTALL_PREFIX=/usr
  140. -DBUILD_ONLY=kinesis
  141. ./aws-sdk-cpp &&
  142. make &&
  143. make install
  144. - distro: 'debian:buster'
  145. pre: >-
  146. apt-get update &&
  147. DEBIAN_FRONTEND=noninteractive apt-get install -y build-essential &&
  148. DEBIAN_FRONTEND=noninteractive apt-get install -y libcurl4-openssl-dev libssl-dev uuid-dev zlib1g-dev libpulse-dev
  149. build_kinesis: >-
  150. git clone https://github.com/aws/aws-sdk-cpp.git &&
  151. cmake -DCMAKE_INSTALL_PREFIX=/usr
  152. -DBUILD_ONLY=kinesis
  153. ./aws-sdk-cpp &&
  154. make &&
  155. make install
  156. - distro: 'fedora:32'
  157. pre: >-
  158. dnf -y update &&
  159. dnf -y groupinstall 'Development Tools' &&
  160. dnf -y install libcurl-devel openssl-devel libuuid-devel
  161. build_kinesis: >-
  162. git clone https://github.com/aws/aws-sdk-cpp.git &&
  163. cmake -DCMAKE_INSTALL_PREFIX=/usr
  164. -DBUILD_ONLY=kinesis
  165. ./aws-sdk-cpp &&
  166. make &&
  167. make install
  168. - distro: 'ubuntu:20.04'
  169. pre: >-
  170. apt-get update &&
  171. DEBIAN_FRONTEND=noninteractive apt-get install -y build-essential &&
  172. DEBIAN_FRONTEND=noninteractive apt-get install -y libcurl4-openssl-dev libssl-dev uuid-dev zlib1g-dev libpulse-dev
  173. build_kinesis: >-
  174. git clone https://github.com/aws/aws-sdk-cpp.git &&
  175. cmake -DCMAKE_INSTALL_PREFIX=/usr
  176. -DBUILD_ONLY=kinesis
  177. ./aws-sdk-cpp &&
  178. make &&
  179. make install
  180. runs-on: ubuntu-latest
  181. steps:
  182. - name: Git clone repository
  183. uses: actions/checkout@v2
  184. with:
  185. submodules: recursive
  186. - name: install-required-packages.sh on ${{ matrix.distro }}
  187. env:
  188. PRE: ${{ matrix.pre }}
  189. BUILD_KINESIS: ${{ matrix.build_kinesis }}
  190. run: |
  191. echo $PRE > ./prep-cmd.sh
  192. echo $BUILD_KINESIS > ./build-kinesis.sh && chmod +x ./build-kinesis.sh
  193. docker build . -f .github/dockerfiles/Dockerfile.build_test -t test --build-arg BASE=${{ matrix.distro }}
  194. - name: Build on ${{ matrix.distro }}
  195. env:
  196. RUNCMD: >-
  197. ./build-kinesis.sh &&
  198. ./netdata-installer.sh --dont-wait --dont-start-it --enable-backend-kinesis
  199. run: |
  200. docker run -w /netdata test \
  201. /bin/sh -c "$RUNCMD"