From 996370228c46c938199d1070f3b98f537d6bc027 Mon Sep 17 00:00:00 2001 From: Jason Rhinelander Date: Fri, 22 Oct 2021 16:40:14 -0300 Subject: [PATCH] Add drone build & tests --- .drone.jsonnet | 97 ++++++++++++++++++++++++++++++++++++++++ contrib/deb.oxen.io.gpg | Bin 0 -> 2213 bytes 2 files changed, 97 insertions(+) create mode 100644 .drone.jsonnet create mode 100644 contrib/deb.oxen.io.gpg diff --git a/.drone.jsonnet b/.drone.jsonnet new file mode 100644 index 0000000..2a2774c --- /dev/null +++ b/.drone.jsonnet @@ -0,0 +1,97 @@ +local default_deps_base = [ + 'python3-dev', + 'python3-setuptools', + 'pybind11-dev', + 'python3-pybind11', + 'liboxenmq-dev', + 'python3-pytest', + 'python3-pip', +]; +local default_deps = ['g++'] + default_deps_base; +local docker_base = 'registry.oxen.rocks/lokinet-ci-'; + +local apt_get_quiet = 'apt-get -o=Dpkg::Use-Pty=0 -q'; + +// Regular build on a debian-like system: +local debian_pipeline(name, + image, + arch='amd64', + deps=default_deps, + extra_cmds=[], + jobs=6, + loki_repo=true, + allow_fail=false) = { + kind: 'pipeline', + type: 'docker', + name: name, + platform: { arch: arch }, + steps: [ + { + name: 'build', + image: image, + pull: 'always', + [if allow_fail then 'failure']: 'ignore', + environment: { SSH_KEY: { from_secret: 'SSH_KEY' } }, + commands: [ + 'echo "Building on ${DRONE_STAGE_MACHINE}"', + 'echo "man-db man-db/auto-update boolean false" | debconf-set-selections', + apt_get_quiet + ' update', + apt_get_quiet + ' install -y eatmydata', + ] + ( + if loki_repo then [ + 'eatmydata ' + apt_get_quiet + ' install --no-install-recommends -y lsb-release', + 'cp contrib/deb.oxen.io.gpg /etc/apt/trusted.gpg.d', + 'echo deb http://deb.oxen.io $$(lsb_release -sc) main >/etc/apt/sources.list.d/oxen.list', + 'echo deb http://deb.oxen.io/beta $$(lsb_release -sc) main >>/etc/apt/sources.list.d/oxen.list', + 'echo deb http://deb.oxen.io/staging $$(lsb_release -sc) main >>/etc/apt/sources.list.d/oxen.list', + 'eatmydata ' + apt_get_quiet + ' update', + ] else [] + ) + [ + 'eatmydata ' + apt_get_quiet + ' dist-upgrade -y', + 'eatmydata ' + apt_get_quiet + ' install --no-install-recommends -y ' + std.join(' ', deps), + 'pip3 install . -v', + 'py.test-3 -v --color=yes', + ] + + extra_cmds, + }, + ], +}; + +// Macos build +local mac_builder(name, + extra_cmds=[], + jobs=6, + allow_fail=false) = { + kind: 'pipeline', + type: 'exec', + name: name, + platform: { os: 'darwin', arch: 'amd64' }, + steps: [ + { + name: 'build', + environment: { SSH_KEY: { from_secret: 'SSH_KEY' } }, + commands: [ + 'echo "Building on ${DRONE_STAGE_MACHINE}"', + 'python3 -mpip install . -v', + 'python3 -mpytest -v --color=yes', + ] + extra_cmds, + }, + ], +}; + + +[ + // Various debian builds + debian_pipeline('Debian sid (amd64)', docker_base + 'debian-sid'), + debian_pipeline('Debian stable (i386)', docker_base + 'debian-stable/i386'), + debian_pipeline('Debian buster (amd64)', docker_base + 'debian-buster'), + debian_pipeline('Ubuntu latest (amd64)', docker_base + 'ubuntu-rolling'), + debian_pipeline('Ubuntu LTS (amd64)', docker_base + 'ubuntu-lts'), + + // ARM builds (ARM64 and armhf) + debian_pipeline('Debian sid (ARM64)', docker_base + 'debian-sid', arch='arm64', jobs=4), + debian_pipeline('Debian stable (armhf)', docker_base + 'debian-stable/arm32v7', arch='arm64', jobs=4), + + // Macos builds: + mac_builder('macOS'), +] diff --git a/contrib/deb.oxen.io.gpg b/contrib/deb.oxen.io.gpg new file mode 100644 index 0000000000000000000000000000000000000000..6ec4e25ad9a5f27c4cf558a455888e8087153f9d GIT binary patch literal 2213 zcmV;W2wL}<0u2OKF+Xtu5CE?&fm>>)yi@QSe>CUvyh@(yR~rMoHPnm@yQ)}lpqkMf zD?8<&y2iLh@H(Ncc^4S;)>v2`VyM%K48uy?Hm4i`cW^n<9xI`P`k|xhmc>GxhsBVaU3%-K%Fsi@4anlD}?+XzVZtkUWlK9Oy%mk zK7NJ7?iE9>EM#<>R_NBkXI4vd5`1Gj8c8HH-FT86?#Gj^%?08cQf1IR5jG%#ZXgKD zg+Wm2dD1nIZw1&kNqF&k4y1w3T?Z!kOVBFE$wZE|I{8`aD5(CY7o+UJ`tv_;u9n%H zLS2uAMJ~0yKh)T8i(NpiJ{GDQvMlARUq%>H-AVyWlL=<0++mOSL2=r#=q5_e&WBf; zo&cKEaSF{7hOIr}DX^5LQn;H*IyF_fD_aFKZ_sf)Ym5_koQX6yb{5@~!lTDQ<^?VT zVo*=fO@xy|MABwa>{N&SlGJ~huxV7Pn_x{@UMePG_`syb`&$w4v&h{cr;FlK-#A>D z*0tfCuxf-a)w(5@t{0-vrJ;fjb;tglI<`T{ID6>1juEPmvTExc^@koU#T15Y}5 z3~z8-&kGw-w@s&0VZR?_NNKBxqMH3i+@}mt`|88~?KFm>Tjd5%y!(vW1aJT{p6v=P zP@;vjY{;5gEvo<#0RRECCQ4y*Z*Cw`XlZU`Y+-I>WpW@qYGHG4Za`^mVP|P>VRCsc zV_`mt0yqQ{0RjLb1p-zvKXC#Z0|pBT2nPcK1{DYb2?`4Y76JnS0v-VZ7k~f?2@u4Y zEa#|=LSko35B@W1W>tT)7-CsDjswdHnH&BedhVRfMKUq~nh`E@@ORw+{kDqoYyN@! zv#Q3XiR0yopGKib1^oxCZLVf5L2Jq-{BS@h4qAgo`gIU5u z3nOqmW;@|rm3j*7wg^ow8P%~v?nE8%c^gm^Se&vRS zn(HdcusYW?Xj|3iST3E%P`n#rK%=t}*OxHHHf*%LoP5m&xX^C(4{MgfP?wTHwCG!N z3N*Q6#p){(kK;L73f`Pm)tT*AB8@_2V$E(!Y%5vb>gFK_%xpKpx9z*RjSaMn0jW~ z4*AeBu^e5Z`LSf*3t&sUbXXHNS<|H3XZ!00r*GIMm(r5I)ucUp*m^EQ)<`#6 zE*&R?6q%5idYuu)WK~YtKAJw4i^hWl;L=n1HDh*b1>Z#(?DPEacNHqunS2=ZD`e8299CYx~rbxm&e9Ypjw&6RWWo0xevuI#5Y4v zg7rl1xZsxECMmVcJ{a(f$$%5b5@jJ`FT0Rjmm3bHoe{=}WmJkT(L zTdoAcYT@XJCaEd}4~t+Fp6OY9zmyjI1E>1i8xX?$ERz{#`AKNn09 zn|>{TqRl@|vyy;v?sno*#LE+q$cNQ%re3_6a~0olmz)^0IlkdT?ZJ$NF9MCa9Zq31 z0CWd+&oxI*h_%@gf;#r)aV=3aMq-o$#iYHG1&XdPa>MBAQ>$C2IZ89ZPRy~}oNlIEZ)O@& zTAQzFr0$^a2iHSM2)P#AGGz4gglF!^bwg4<5h4{O2DQ>GoDE!hzSQFIM(+u+{Yd12 zQ9#higkbklZ`(i{z`>sATHHV8DP_vp+Ay4#6dr=F+BM|@FPRe4jyZi_EWv@^(kR-O z|CSgF*+&*w@C?x?uU3p7^im$a6U$0ZvQi0%{|rtN!nDA|ok|BysaU%9aEB5@BBiDq nq1%?36-cF__u)W3ywPi5!&0SfcP(HNlEj8=N;Vhp-76(J2Bs0L literal 0 HcmV?d00001