diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..03bd412 --- /dev/null +++ b/.gitignore @@ -0,0 +1 @@ +*.env diff --git a/README.md b/README.md index e7b4d8a..74c03e0 100644 --- a/README.md +++ b/README.md @@ -1 +1,18 @@ # docker-builds + +## Buildbot docker files for Kubernetes workers + +[Debian 8](./bb-worker-debian8) +[Debian 9](./bb-worker-debian9) +[Debian 10](./bb-worker-debian10) +[Ubuntu 16.04](./bb-worker-ubuntu1604) +[Ubuntu 18.04](./bb-worker-ubuntu1804) +[Ubuntu 19.04](./bb-worker-ubuntu1904) + +## Zcashd for general usage + +[Zcashd (Debian9)](./zcashd) + +## Zcash Blockchain explorer + +[zcash-insight-explorer (Debian 9)](./zcash-insight-explorer) diff --git a/bb-worker-debian10/Dockerfile b/bb-worker-debian10/Dockerfile new file mode 100644 index 0000000..96013b3 --- /dev/null +++ b/bb-worker-debian10/Dockerfile @@ -0,0 +1,61 @@ +FROM debian:10 +ARG DEBIAN_FRONTEND=noninteractive + +RUN apt-get update \ + && apt-get install -y \ + build-essential \ + autoconf \ + cmake \ + pkg-config \ + curl \ + git \ + wget \ + python-dev \ + python-pip \ + libtool \ + lcov \ + valgrind \ + dumb-init \ + bsdmainutils \ + python-requests \ + && pip install \ + virtualenv \ + pyblake2 \ + pip + +# Buildbot user +ARG BUILDBOT_USER=zcbbworker +ARG BUILDBOT_UID=2001 +RUN useradd --home-dir /home/$BUILDBOT_USER \ + --shell /bin/bash \ + --create-home \ + --uid $BUILDBOT_UID\ + $BUILDBOT_USER + +USER $BUILDBOT_USER +WORKDIR /home/$BUILDBOT_USER + +RUN /usr/local/bin/virtualenv venv \ + && . venv/bin/activate \ + && pip install \ + buildbot-worker \ + pyflakes \ + pyblake2 \ + pyzmq \ + twisted[tls] + +# Buildbot worker +ARG BUILDBOT_WORKER_NAME=debian8-docker +ARG BUILDBOT_WORKER_PASS=thisgetssetwhenpodisstarted +ARG BUILDBOT_MASTER_HOST=dev-ci.z.cash +ARG BUILDBOT_MASTER_PORT=9899 + +WORKDIR /home/$BUILDBOT_USER +RUN venv/bin/buildbot-worker create-worker $BUILDBOT_WORKER_NAME \ + $BUILDBOT_MASTER_HOST:$BUILDBOT_MASTER_PORT \ + $BUILDBOT_WORKER_NAME $BUILDBOT_WORKER_PASS \ + && echo "OS: Debian 10" > $BUILDBOT_WORKER_NAME/info/host +ADD buildbot.tac $BUILDBOT_WORKER_NAME/buildbot.tac + +WORKDIR /home/$BUILDBOT_USER/$BUILDBOT_WORKER_NAME +CMD ["/usr/bin/dumb-init", "../venv/bin/twistd", "--pidfile=", "-ny", "buildbot.tac"] diff --git a/bb-worker-debian10/buildbot.tac b/bb-worker-debian10/buildbot.tac new file mode 100644 index 0000000..477ae27 --- /dev/null +++ b/bb-worker-debian10/buildbot.tac @@ -0,0 +1,40 @@ +import fnmatch +import os +import sys + +from twisted.application import service +from twisted.python.log import FileLogObserver +from twisted.python.log import ILogObserver + +from buildbot_worker.bot import Worker + +# setup worker +basedir = os.environ.get("BUILDBOT_BASEDIR", + os.path.abspath(os.path.dirname(__file__))) +application = service.Application('buildbot-worker') + + +application.setComponent(ILogObserver, FileLogObserver(sys.stdout).emit) +# and worker on the same process! +buildmaster_host = os.environ.get("BUILDMASTER", 'localhost') +port = int(os.environ.get("BUILDMASTER_PORT", 9989)) +workername = os.environ.get("WORKERNAME", 'docker') +passwd = os.environ.get("WORKERPASS") + +# delete the password from the environ so that it is not leaked in the log +blacklist = os.environ.get("WORKER_ENVIRONMENT_BLACKLIST", "WORKERPASS").split() +for name in list(os.environ.keys()): + for toremove in blacklist: + if fnmatch.fnmatch(name, toremove): + del os.environ[name] + +keepalive = 600 +umask = None +maxdelay = 300 +allow_shutdown = None +maxretries = 10 + +s = Worker(buildmaster_host, port, workername, passwd, basedir, + keepalive, umask=umask, maxdelay=maxdelay, + allow_shutdown=allow_shutdown, maxRetries=maxretries) +s.setServiceParent(application) diff --git a/bb-worker-debian8/Dockerfile b/bb-worker-debian8/Dockerfile new file mode 100644 index 0000000..ecee38c --- /dev/null +++ b/bb-worker-debian8/Dockerfile @@ -0,0 +1,63 @@ +FROM debian:8 +ARG DEBIAN_FRONTEND=noninteractive +ARG DUMBINIT_VERSION=v1.2.2 +RUN apt-get update \ + && apt-get install -y \ + build-essential \ + autoconf \ + cmake \ + pkg-config \ + curl \ + git \ + wget \ + python-dev \ + python-pip \ + libtool \ + lcov \ + valgrind \ + bsdmainutils \ + python-requests \ + && pip install \ + virtualenv \ + pyblake2 \ + pip + +RUN wget -O /usr/bin/dumb-init https://github.com/Yelp/dumb-init/releases/download/v1.2.2/dumb-init_1.2.2_amd64 +RUN chmod +x /usr/bin/dumb-init + +# Buildbot user +ARG BUILDBOT_USER=zcbbworker +ARG BUILDBOT_UID=2001 +RUN useradd --home-dir /home/$BUILDBOT_USER \ + --shell /bin/bash \ + --create-home \ + --uid $BUILDBOT_UID\ + $BUILDBOT_USER + +USER $BUILDBOT_USER +WORKDIR /home/$BUILDBOT_USER + +RUN /usr/local/bin/virtualenv venv \ + && . venv/bin/activate \ + && pip install \ + buildbot-worker \ + pyflakes \ + pyblake2 \ + pyzmq \ + twisted[tls] + +# Buildbot worker +ARG BUILDBOT_WORKER_NAME=debian8-docker +ARG BUILDBOT_WORKER_PASS=thisgetssetwhenpodisstarted +ARG BUILDBOT_MASTER_HOST=dev-ci.z.cash +ARG BUILDBOT_MASTER_PORT=9899 + +WORKDIR /home/$BUILDBOT_USER +RUN venv/bin/buildbot-worker create-worker $BUILDBOT_WORKER_NAME \ + $BUILDBOT_MASTER_HOST:$BUILDBOT_MASTER_PORT \ + $BUILDBOT_WORKER_NAME $BUILDBOT_WORKER_PASS \ + && echo "OS: Debian 8" > $BUILDBOT_WORKER_NAME/info/host +ADD buildbot.tac $BUILDBOT_WORKER_NAME/buildbot.tac + +WORKDIR /home/$BUILDBOT_USER/$BUILDBOT_WORKER_NAME +CMD ["/usr/bin/dumb-init", "../venv/bin/twistd", "--pidfile=", "-ny", "buildbot.tac"] diff --git a/bb-worker-debian8/buildbot.tac b/bb-worker-debian8/buildbot.tac new file mode 100644 index 0000000..477ae27 --- /dev/null +++ b/bb-worker-debian8/buildbot.tac @@ -0,0 +1,40 @@ +import fnmatch +import os +import sys + +from twisted.application import service +from twisted.python.log import FileLogObserver +from twisted.python.log import ILogObserver + +from buildbot_worker.bot import Worker + +# setup worker +basedir = os.environ.get("BUILDBOT_BASEDIR", + os.path.abspath(os.path.dirname(__file__))) +application = service.Application('buildbot-worker') + + +application.setComponent(ILogObserver, FileLogObserver(sys.stdout).emit) +# and worker on the same process! +buildmaster_host = os.environ.get("BUILDMASTER", 'localhost') +port = int(os.environ.get("BUILDMASTER_PORT", 9989)) +workername = os.environ.get("WORKERNAME", 'docker') +passwd = os.environ.get("WORKERPASS") + +# delete the password from the environ so that it is not leaked in the log +blacklist = os.environ.get("WORKER_ENVIRONMENT_BLACKLIST", "WORKERPASS").split() +for name in list(os.environ.keys()): + for toremove in blacklist: + if fnmatch.fnmatch(name, toremove): + del os.environ[name] + +keepalive = 600 +umask = None +maxdelay = 300 +allow_shutdown = None +maxretries = 10 + +s = Worker(buildmaster_host, port, workername, passwd, basedir, + keepalive, umask=umask, maxdelay=maxdelay, + allow_shutdown=allow_shutdown, maxRetries=maxretries) +s.setServiceParent(application) diff --git a/bb-worker-debian9/Dockerfile b/bb-worker-debian9/Dockerfile new file mode 100644 index 0000000..3415c04 --- /dev/null +++ b/bb-worker-debian9/Dockerfile @@ -0,0 +1,61 @@ +FROM debian:9 +ARG DEBIAN_FRONTEND=noninteractive + +RUN apt-get update \ + && apt-get install -y \ + build-essential \ + autoconf \ + cmake \ + pkg-config \ + curl \ + git \ + wget \ + python-dev \ + python-pip \ + libtool \ + lcov \ + valgrind \ + dumb-init \ + bsdmainutils \ + python-requests \ + && pip install \ + virtualenv \ + pyblake2 \ + pip + +# Buildbot user +ARG BUILDBOT_USER=zcbbworker +ARG BUILDBOT_UID=2001 +RUN useradd --home-dir /home/$BUILDBOT_USER \ + --shell /bin/bash \ + --create-home \ + --uid $BUILDBOT_UID\ + $BUILDBOT_USER + +USER $BUILDBOT_USER +WORKDIR /home/$BUILDBOT_USER + +RUN /usr/local/bin/virtualenv venv \ + && . venv/bin/activate \ + && pip install \ + buildbot-worker \ + pyflakes \ + pyblake2 \ + pyzmq \ + twisted[tls] + +# Buildbot worker +ARG BUILDBOT_WORKER_NAME=debian8-docker +ARG BUILDBOT_WORKER_PASS=thisgetssetwhenpodisstarted +ARG BUILDBOT_MASTER_HOST=dev-ci.z.cash +ARG BUILDBOT_MASTER_PORT=9899 + +WORKDIR /home/$BUILDBOT_USER +RUN venv/bin/buildbot-worker create-worker $BUILDBOT_WORKER_NAME \ + $BUILDBOT_MASTER_HOST:$BUILDBOT_MASTER_PORT \ + $BUILDBOT_WORKER_NAME $BUILDBOT_WORKER_PASS \ + && echo "OS: Debian 9" > $BUILDBOT_WORKER_NAME/info/host +ADD buildbot.tac $BUILDBOT_WORKER_NAME/buildbot.tac + +WORKDIR /home/$BUILDBOT_USER/$BUILDBOT_WORKER_NAME +CMD ["/usr/bin/dumb-init", "../venv/bin/twistd", "--pidfile=", "-ny", "buildbot.tac"] diff --git a/bb-worker-debian9/buildbot.tac b/bb-worker-debian9/buildbot.tac new file mode 100644 index 0000000..477ae27 --- /dev/null +++ b/bb-worker-debian9/buildbot.tac @@ -0,0 +1,40 @@ +import fnmatch +import os +import sys + +from twisted.application import service +from twisted.python.log import FileLogObserver +from twisted.python.log import ILogObserver + +from buildbot_worker.bot import Worker + +# setup worker +basedir = os.environ.get("BUILDBOT_BASEDIR", + os.path.abspath(os.path.dirname(__file__))) +application = service.Application('buildbot-worker') + + +application.setComponent(ILogObserver, FileLogObserver(sys.stdout).emit) +# and worker on the same process! +buildmaster_host = os.environ.get("BUILDMASTER", 'localhost') +port = int(os.environ.get("BUILDMASTER_PORT", 9989)) +workername = os.environ.get("WORKERNAME", 'docker') +passwd = os.environ.get("WORKERPASS") + +# delete the password from the environ so that it is not leaked in the log +blacklist = os.environ.get("WORKER_ENVIRONMENT_BLACKLIST", "WORKERPASS").split() +for name in list(os.environ.keys()): + for toremove in blacklist: + if fnmatch.fnmatch(name, toremove): + del os.environ[name] + +keepalive = 600 +umask = None +maxdelay = 300 +allow_shutdown = None +maxretries = 10 + +s = Worker(buildmaster_host, port, workername, passwd, basedir, + keepalive, umask=umask, maxdelay=maxdelay, + allow_shutdown=allow_shutdown, maxRetries=maxretries) +s.setServiceParent(application) diff --git a/bb-worker-ubuntu1604/Dockerfile b/bb-worker-ubuntu1604/Dockerfile new file mode 100644 index 0000000..d265e05 --- /dev/null +++ b/bb-worker-ubuntu1604/Dockerfile @@ -0,0 +1,63 @@ +FROM ubuntu:16.04 +ARG DEBIAN_FRONTEND=noninteractive + +RUN apt-get update \ + && apt-get install -y \ + build-essential \ + autoconf \ + cmake \ + pkg-config \ + curl \ + git \ + wget \ + python-dev \ + python-pip \ + libtool \ + lcov \ + valgrind \ + bsdmainutils \ + python-requests \ + && pip install \ + virtualenv \ + pyblake2 \ + pip + +RUN wget -O /usr/bin/dumb-init https://github.com/Yelp/dumb-init/releases/download/v1.2.2/dumb-init_1.2.2_amd64 +RUN chmod +x /usr/bin/dumb-init + +# Buildbot user +ARG BUILDBOT_USER=zcbbworker +ARG BUILDBOT_UID=2001 +RUN useradd --home-dir /home/$BUILDBOT_USER \ + --shell /bin/bash \ + --create-home \ + --uid $BUILDBOT_UID\ + $BUILDBOT_USER + +USER $BUILDBOT_USER +WORKDIR /home/$BUILDBOT_USER + +RUN /usr/local/bin/virtualenv venv \ + && . venv/bin/activate \ + && pip install \ + buildbot-worker \ + pyflakes \ + pyblake2 \ + pyzmq \ + twisted[tls] + +# Buildbot worker +ARG BUILDBOT_WORKER_NAME=ubuntu16.04-docker +ARG BUILDBOT_WORKER_PASS=thisgetssetwhenpodisstarted +ARG BUILDBOT_MASTER_HOST=dev-ci.z.cash +ARG BUILDBOT_MASTER_PORT=9899 + +WORKDIR /home/$BUILDBOT_USER +RUN venv/bin/buildbot-worker create-worker $BUILDBOT_WORKER_NAME \ + $BUILDBOT_MASTER_HOST:$BUILDBOT_MASTER_PORT \ + $BUILDBOT_WORKER_NAME $BUILDBOT_WORKER_PASS \ + && echo "OS: Ubuntu 16.04" > $BUILDBOT_WORKER_NAME/info/host +ADD buildbot.tac $BUILDBOT_WORKER_NAME/buildbot.tac + +WORKDIR /home/$BUILDBOT_USER/$BUILDBOT_WORKER_NAME +CMD ["/usr/bin/dumb-init", "../venv/bin/twistd", "--pidfile=", "-ny", "buildbot.tac"] diff --git a/bb-worker-ubuntu1604/buildbot.tac b/bb-worker-ubuntu1604/buildbot.tac new file mode 100644 index 0000000..477ae27 --- /dev/null +++ b/bb-worker-ubuntu1604/buildbot.tac @@ -0,0 +1,40 @@ +import fnmatch +import os +import sys + +from twisted.application import service +from twisted.python.log import FileLogObserver +from twisted.python.log import ILogObserver + +from buildbot_worker.bot import Worker + +# setup worker +basedir = os.environ.get("BUILDBOT_BASEDIR", + os.path.abspath(os.path.dirname(__file__))) +application = service.Application('buildbot-worker') + + +application.setComponent(ILogObserver, FileLogObserver(sys.stdout).emit) +# and worker on the same process! +buildmaster_host = os.environ.get("BUILDMASTER", 'localhost') +port = int(os.environ.get("BUILDMASTER_PORT", 9989)) +workername = os.environ.get("WORKERNAME", 'docker') +passwd = os.environ.get("WORKERPASS") + +# delete the password from the environ so that it is not leaked in the log +blacklist = os.environ.get("WORKER_ENVIRONMENT_BLACKLIST", "WORKERPASS").split() +for name in list(os.environ.keys()): + for toremove in blacklist: + if fnmatch.fnmatch(name, toremove): + del os.environ[name] + +keepalive = 600 +umask = None +maxdelay = 300 +allow_shutdown = None +maxretries = 10 + +s = Worker(buildmaster_host, port, workername, passwd, basedir, + keepalive, umask=umask, maxdelay=maxdelay, + allow_shutdown=allow_shutdown, maxRetries=maxretries) +s.setServiceParent(application) diff --git a/bb-worker-ubuntu1804/Dockerfile b/bb-worker-ubuntu1804/Dockerfile new file mode 100644 index 0000000..1ffc2c8 --- /dev/null +++ b/bb-worker-ubuntu1804/Dockerfile @@ -0,0 +1,61 @@ +FROM ubuntu:18.04 +ARG DEBIAN_FRONTEND=noninteractive + +RUN apt-get update \ + && apt-get install -y \ + build-essential \ + autoconf \ + cmake \ + pkg-config \ + curl \ + git \ + wget \ + python-dev \ + python-pip \ + libtool \ + lcov \ + valgrind \ + dumb-init \ + bsdmainutils \ + python-requests \ + && pip install \ + virtualenv \ + pyblake2 \ + pip + +# Buildbot user +ARG BUILDBOT_USER=zcbbworker +ARG BUILDBOT_UID=2001 +RUN useradd --home-dir /home/$BUILDBOT_USER \ + --shell /bin/bash \ + --create-home \ + --uid $BUILDBOT_UID\ + $BUILDBOT_USER + +USER $BUILDBOT_USER +WORKDIR /home/$BUILDBOT_USER + +RUN /usr/local/bin/virtualenv venv \ + && . venv/bin/activate \ + && pip install \ + buildbot-worker \ + pyflakes \ + pyblake2 \ + pyzmq \ + twisted[tls] + +# Buildbot worker +ARG BUILDBOT_WORKER_NAME=ubuntu18.04-docker +ARG BUILDBOT_WORKER_PASS=thisgetssetwhenpodisstarted +ARG BUILDBOT_MASTER_HOST=dev-ci.z.cash +ARG BUILDBOT_MASTER_PORT=9899 + +WORKDIR /home/$BUILDBOT_USER +RUN venv/bin/buildbot-worker create-worker $BUILDBOT_WORKER_NAME \ + $BUILDBOT_MASTER_HOST:$BUILDBOT_MASTER_PORT \ + $BUILDBOT_WORKER_NAME $BUILDBOT_WORKER_PASS \ + && echo "OS: Ubuntu 18.04" > $BUILDBOT_WORKER_NAME/info/host +ADD buildbot.tac $BUILDBOT_WORKER_NAME/buildbot.tac + +WORKDIR /home/$BUILDBOT_USER/$BUILDBOT_WORKER_NAME +CMD ["/usr/bin/dumb-init", "../venv/bin/twistd", "--pidfile=", "-ny", "buildbot.tac"] diff --git a/bb-worker-ubuntu1804/buildbot.tac b/bb-worker-ubuntu1804/buildbot.tac new file mode 100644 index 0000000..477ae27 --- /dev/null +++ b/bb-worker-ubuntu1804/buildbot.tac @@ -0,0 +1,40 @@ +import fnmatch +import os +import sys + +from twisted.application import service +from twisted.python.log import FileLogObserver +from twisted.python.log import ILogObserver + +from buildbot_worker.bot import Worker + +# setup worker +basedir = os.environ.get("BUILDBOT_BASEDIR", + os.path.abspath(os.path.dirname(__file__))) +application = service.Application('buildbot-worker') + + +application.setComponent(ILogObserver, FileLogObserver(sys.stdout).emit) +# and worker on the same process! +buildmaster_host = os.environ.get("BUILDMASTER", 'localhost') +port = int(os.environ.get("BUILDMASTER_PORT", 9989)) +workername = os.environ.get("WORKERNAME", 'docker') +passwd = os.environ.get("WORKERPASS") + +# delete the password from the environ so that it is not leaked in the log +blacklist = os.environ.get("WORKER_ENVIRONMENT_BLACKLIST", "WORKERPASS").split() +for name in list(os.environ.keys()): + for toremove in blacklist: + if fnmatch.fnmatch(name, toremove): + del os.environ[name] + +keepalive = 600 +umask = None +maxdelay = 300 +allow_shutdown = None +maxretries = 10 + +s = Worker(buildmaster_host, port, workername, passwd, basedir, + keepalive, umask=umask, maxdelay=maxdelay, + allow_shutdown=allow_shutdown, maxRetries=maxretries) +s.setServiceParent(application) diff --git a/bb-worker-ubuntu1904/Dockerfile b/bb-worker-ubuntu1904/Dockerfile new file mode 100644 index 0000000..3637c2f --- /dev/null +++ b/bb-worker-ubuntu1904/Dockerfile @@ -0,0 +1,61 @@ +FROM ubuntu:19.04 +ARG DEBIAN_FRONTEND=noninteractive + +RUN apt-get update \ + && apt-get install -y \ + build-essential \ + autoconf \ + cmake \ + pkg-config \ + curl \ + git \ + wget \ + python-dev \ + python-pip \ + libtool \ + lcov \ + valgrind \ + dumb-init \ + bsdmainutils \ + python-requests \ + && pip install \ + virtualenv \ + pyblake2 \ + pip + +# Buildbot user +ARG BUILDBOT_USER=zcbbworker +ARG BUILDBOT_UID=2001 +RUN useradd --home-dir /home/$BUILDBOT_USER \ + --shell /bin/bash \ + --create-home \ + --uid $BUILDBOT_UID\ + $BUILDBOT_USER + +USER $BUILDBOT_USER +WORKDIR /home/$BUILDBOT_USER + +RUN /usr/local/bin/virtualenv venv \ + && . venv/bin/activate \ + && pip install \ + buildbot-worker \ + pyflakes \ + pyblake2 \ + pyzmq \ + twisted[tls] + +# Buildbot worker +ARG BUILDBOT_WORKER_NAME=ubuntu19.04-docker +ARG BUILDBOT_WORKER_PASS=thisgetssetwhenpodisstarted +ARG BUILDBOT_MASTER_HOST=dev-ci.z.cash +ARG BUILDBOT_MASTER_PORT=9899 + +WORKDIR /home/$BUILDBOT_USER +RUN venv/bin/buildbot-worker create-worker $BUILDBOT_WORKER_NAME \ + $BUILDBOT_MASTER_HOST:$BUILDBOT_MASTER_PORT \ + $BUILDBOT_WORKER_NAME $BUILDBOT_WORKER_PASS \ + && echo "OS: Ubuntu 19.04" > $BUILDBOT_WORKER_NAME/info/host +ADD buildbot.tac $BUILDBOT_WORKER_NAME/buildbot.tac + +WORKDIR /home/$BUILDBOT_USER/$BUILDBOT_WORKER_NAME +CMD ["/usr/bin/dumb-init", "../venv/bin/twistd", "--pidfile=", "-ny", "buildbot.tac"] diff --git a/bb-worker-ubuntu1904/buildbot.tac b/bb-worker-ubuntu1904/buildbot.tac new file mode 100644 index 0000000..477ae27 --- /dev/null +++ b/bb-worker-ubuntu1904/buildbot.tac @@ -0,0 +1,40 @@ +import fnmatch +import os +import sys + +from twisted.application import service +from twisted.python.log import FileLogObserver +from twisted.python.log import ILogObserver + +from buildbot_worker.bot import Worker + +# setup worker +basedir = os.environ.get("BUILDBOT_BASEDIR", + os.path.abspath(os.path.dirname(__file__))) +application = service.Application('buildbot-worker') + + +application.setComponent(ILogObserver, FileLogObserver(sys.stdout).emit) +# and worker on the same process! +buildmaster_host = os.environ.get("BUILDMASTER", 'localhost') +port = int(os.environ.get("BUILDMASTER_PORT", 9989)) +workername = os.environ.get("WORKERNAME", 'docker') +passwd = os.environ.get("WORKERPASS") + +# delete the password from the environ so that it is not leaked in the log +blacklist = os.environ.get("WORKER_ENVIRONMENT_BLACKLIST", "WORKERPASS").split() +for name in list(os.environ.keys()): + for toremove in blacklist: + if fnmatch.fnmatch(name, toremove): + del os.environ[name] + +keepalive = 600 +umask = None +maxdelay = 300 +allow_shutdown = None +maxretries = 10 + +s = Worker(buildmaster_host, port, workername, passwd, basedir, + keepalive, umask=umask, maxdelay=maxdelay, + allow_shutdown=allow_shutdown, maxRetries=maxretries) +s.setServiceParent(application) diff --git a/zcash-insight-explorer/.env.example b/zcash-insight-explorer/.env.example new file mode 100644 index 0000000..89bc495 --- /dev/null +++ b/zcash-insight-explorer/.env.example @@ -0,0 +1,13 @@ +DOMAIN=example.com +ZCASHD_NETWORK=testnet +ZCASHD_LOGIPS=1 +ZCASHD_EXPERIMENTALFEATURES=1 +ZCASHD_GEN=0 +ZCASHD_RPCUSER=zcashrpc +ZCASHD_RPCPASSWORD=notsecure +ZCASHD_RPCBIND=0.0.0.0 +ZCASHD_ALLOWIP=0.0.0.0/0 +ZCASHD_TXINDEX=1 +ZCASHD_INSIGHTEXPLORER=1 +ZCASHD_ZMQPORT=9994 +ZCASHD_ZMQBIND=0.0.0.0 diff --git a/zcash-insight-explorer/Dockerfile b/zcash-insight-explorer/Dockerfile new file mode 100644 index 0000000..b598708 --- /dev/null +++ b/zcash-insight-explorer/Dockerfile @@ -0,0 +1,44 @@ +FROM debian:9 +# Run 'docker build -t zcash-insight-explorer:latest .' from github clone +# docker run -p80:3001 -v $(pwd)/dot-zcash:/home/zcashd/.zcash zcash-insight-explorer + +RUN apt-get update \ + && apt-get install -y gnupg2 wget libzmq3-dev git \ + && apt-get -qqy install \ + build-essential pkg-config libc6-dev m4 g++-multilib \ + autoconf libtool ncurses-dev unzip git python python-zmq \ + zlib1g-dev wget curl bsdmainutils automake gettext-base \ + \ + && curl -sL https://deb.nodesource.com/setup_8.x | bash - \ + && apt-get install -y nodejs + +ARG ZCASH_SIGNING_KEY_ID=6DEF3BAF272766C0 +ARG ZCASH_VERSION=2.0.7+2 +ARG ZCASHD_USER=zcashd +ARG ZCASHD_UID=2001 + +RUN apt-key adv --keyserver hkp://keyserver.ubuntu.com:80 --recv-keys $ZCASH_SIGNING_KEY_ID \ + && echo "deb [arch=amd64] https://apt.z.cash/ jessie main" > /etc/apt/sources.list.d/zcash.list \ + && apt-get update \ + && apt-get install -y zcash=$ZCASH_VERSION + +RUN useradd --home-dir /home/$ZCASHD_USER \ + --shell /bin/bash \ + --create-home \ + --uid $ZCASHD_UID\ + $ZCASHD_USER + +USER $ZCASHD_USER +WORKDIR /home/$ZCASHD_USER/ +RUN mkdir .npm-global .zcash .zcash-params + +ENV PATH=/home/$ZCASHD_USER/.npm-global/bin:$PATH +ENV NPM_CONFIG_PREFIX=/home/$ZCASHD_USER/.npm-global + +RUN npm install -g npm@latest +RUN npm -g install zcash-hackworks/bitcore-node-zcash + +RUN bitcore-node create zc +ADD bitcore-node.json.template bitcore-node.json.template +ADD entrypoint.sh /entrypoint.sh +ENTRYPOINT ["/entrypoint.sh"] diff --git a/zcash-insight-explorer/bitcore-node.json.template b/zcash-insight-explorer/bitcore-node.json.template new file mode 100644 index 0000000..3cd3f76 --- /dev/null +++ b/zcash-insight-explorer/bitcore-node.json.template @@ -0,0 +1,28 @@ +{ + "network": "$ZCASHD_NETWORK", + "port": 3001, + "services": [ + "bitcoind", + "web" + ], + "servicesConfig": { + "bitcoind": { + "connect": [ + { + "rpchost": "zcashd", + "rpcport": $ZCASHD_RPC_PORT, + "rpcuser": "$ZCASHD_RPCUSER", + "rpcpassword": "$ZCASHD_RPCPASSWORD", + "zmqpubrawtx": "tcp://zcashd:$ZCASHD_ZMQPORT" + } + ] + }, + "insight-api-zcash": { + "routePrefix": "api" + }, + "insight-ui-zcash": { + "apiPrefix": "api", + "routePrefix": "" + } + } + } diff --git a/zcash-insight-explorer/docker-compose.yml b/zcash-insight-explorer/docker-compose.yml new file mode 100644 index 0000000..86c649f --- /dev/null +++ b/zcash-insight-explorer/docker-compose.yml @@ -0,0 +1,56 @@ +--- +version: '3' + +services: + traefik: + image: traefik:v2.0 + command: | + "--log.level=DEBUG" + "--providers.docker=true" + "--providers.docker.exposedbydefault=false" + "--entryPoints.websecure.address=:443" + "--certificatesresolvers.mytlschallenge.acme.tlschallenge=true" + "--certificatesresolvers.mytlschallenge.acme.email=sysadmin@z.cash" + "--certificatesresolvers.mytlschallenge.acme.storage=/etc/traefik/acme.json" + "--certificatesresolvers.ecc.acme.tlschallenge=true" + "--certificatesresolvers.ecc.acme.email=sysadmin@z.cash" + "--certificatesresolvers.ecc.acme.storage=/etc/traefik/acme.json" + ports: + - "443:443" + volumes: + - /srv/traefik/acme.json:/etc/traefik/acme.json + - /var/run/docker.sock:/var/run/docker.sock + + zcash-insight-explorer: + build: . + environment: + - ZCASHD_NETWORK=$ZCASHD_NETWORK + - ZCASHD_RPCUSER=$ZCASHD_RPCUSER + - ZCASHD_RPCPASSWORD=$ZCASHD_RPCPASSWORD + - ZCASHD_ZMQPORT=$ZCASHD_ZMQPORT + ports: + - "3001:3001" + labels: + "traefik.enable": "true" + "traefik.http.routers.explorer.entrypoints": "websecure" + "traefik.http.routers.explorer.rule": "Host(`explorer.$DOMAIN`)" + "traefik.http.routers.explorer.tls.certresolver": "mytlschallenge" + + zcashd: + image: gcr.io/zcash-web/zcashd + environment: + - ZCASHD_NETWORK=$ZCASHD_NETWORK + - ZCASHD_LOGIPS=$ZCASHD_LOGIPS + - ZCASHD_EXPERIMENTALFEATURES=$ZCASHD_EXPERIMENTALFEATURES + - ZCASHD_GEN=$ZCASHD_GEN + - ZCASHD_RPCUSER=$ZCASHD_RPCUSER + - ZCASHD_RPCPASSWORD=$ZCASHD_RPCPASSWORD + - ZCASHD_RPCBIND=$ZCASHD_RPCBIND + - ZCASHD_ALLOWIP=$ZCASHD_ALLOWIP + - ZCASHD_TXINDEX=$ZCASHD_TXINDEX + - ZCASHD_INSIGHTEXPLORER=$ZCASHD_INSIGHTEXPLORER + - ZCASHD_ZMQPORT=$ZCASHD_ZMQPORT + - ZCASHD_ZMQBIND=$ZCASHD_ZMQBIND + volumes: + - /srv/zcash-params:/srv/zcashd/.zcash-params + - /srv/zcash-insight-explorer/.zcashd/zcash:/srv/zcashd/.zcash diff --git a/zcash-insight-explorer/entrypoint.sh b/zcash-insight-explorer/entrypoint.sh new file mode 100755 index 0000000..c9e4437 --- /dev/null +++ b/zcash-insight-explorer/entrypoint.sh @@ -0,0 +1,45 @@ +#!/bin/bash + +set -eo pipefail + +if [[ ! -n ${ZCASHD_NETWORK} ]];then + echo "ZCASHD_NETWORK must be set" + exit 1 +fi +if [[ ! -n ${ZCASHD_RPCUSER} ]];then + echo "ZCASHD_RPCUSER must be set" + exit 1 +fi +if [[ ! -n ${ZCASHD_RPCPASSWORD} ]];then + echo "ZCASHD_RPCPASSWORD must be set" + exit 1 +fi +if [[ ! -n ${ZCASHD_ZMQPORT} ]];then + echo "ZCASHD_ZMQPORT must be set" + exit 1 +fi + +case ${ZCASHD_NETWORK} in + testnet) + export ZCASHD_RPC_PORT=18232 + ;; + mainnet) + export ZCASHD_RPC_PORT=8232 + ;; + *) + echo "Error, unknown network: ${ZCASHD_NETWORK}" + exit 1 + ;; +esac + +env | sort + +envsubst < bitcore-node.json.template > zc/bitcore-node.json +cd zc +bitcore-node install zcash-hackworks/insight-api-zcash zcash-hackworks/insight-ui-zcash + +if [[ $ZCASHD_NETWORK == 'testnet' ]];then + sed -i 's/testnet = false/testnet = true/g' node_modules/insight-ui-zcash/public/src/js/app.js +fi + +node_modules/bitcore-node-zcash/bin/bitcore-node start diff --git a/zcashd/.env.example b/zcashd/.env.example new file mode 100644 index 0000000..52321b1 --- /dev/null +++ b/zcashd/.env.example @@ -0,0 +1,12 @@ +ZCASHD_NETWORK=testnet +ZCASHD_LOGIPS=1 +ZCASHD_EXPERIMENTALFEATURES=1 +ZCASHD_GEN=0 +ZCASHD_RPCUSER=zcashrpc +ZCASHD_RPCPASSWORD=notsecure +ZCASHD_RPCBIND=0.0.0.0 +ZCASHD_ALLOWIP=0.0.0.0/0 +ZCASHD_TXINDEX=1 +ZCASHD_INSIGHTEXPLORER=1 +ZCASHD_ZMQPORT=9994 +ZCASHD_ZMQBIND=0.0.0.0 diff --git a/zcashd/Dockerfile b/zcashd/Dockerfile new file mode 100644 index 0000000..415c192 --- /dev/null +++ b/zcashd/Dockerfile @@ -0,0 +1,29 @@ +FROM debian:9 + +RUN apt-get update \ + && apt-get install -y gnupg2 apt-transport-https curl + +ARG ZCASH_SIGNING_KEY_ID=6DEF3BAF272766C0 +ARG ZCASH_VERSION=2.0.7+2 +ARG ZCASHD_USER=zcashd +ARG ZCASHD_UID=2001 + +RUN apt-key adv --keyserver hkp://keyserver.ubuntu.com:80 --recv-keys $ZCASH_SIGNING_KEY_ID \ + && echo "deb [arch=amd64] https://apt.z.cash/ jessie main" > /etc/apt/sources.list.d/zcash.list \ + && apt-get update \ + && apt-get install -y zcash=$ZCASH_VERSION + +RUN useradd --home-dir /srv/$ZCASHD_USER \ + --shell /bin/bash \ + --create-home \ + --uid $ZCASHD_UID\ + $ZCASHD_USER +USER $ZCASHD_USER +WORKDIR /srv/zcashd +RUN mkdir -p /srv/$ZCASHD_USER/.zcash/ \ + && touch /srv/$ZCASHD_USER/.zcash/zcash.conf + +ADD entrypoint.sh /entrypoint.sh +ENTRYPOINT ["/entrypoint.sh"] +HEALTHCHECK --interval=5m --timeout=3s \ + CMD zcash-cli getinfo || exit 1 diff --git a/zcashd/docker-compose.yml b/zcashd/docker-compose.yml new file mode 100644 index 0000000..81b66ee --- /dev/null +++ b/zcashd/docker-compose.yml @@ -0,0 +1,33 @@ +--- +version: '3' + +services: + init_container: + image: busybox + command: | + sh -c "chown -R 2001 /srv/zcashd/" + volumes: + - zcash-params:/srv/zcashd/.zcash-params + - zcash:/srv/zcashd/.zcash + zcashd: + image: gcr.io/zcash-web/zcashd + environment: + - ZCASHD_NETWORK=$ZCASHD_NETWORK + - ZCASHD_LOGIPS=$ZCASHD_LOGIPS + - ZCASHD_EXPERIMENTALFEATURES=$ZCASHD_EXPERIMENTALFEATURES + - ZCASHD_GEN=$ZCASHD_GEN + - ZCASHD_RPCUSER=$ZCASHD_RPCUSER + - ZCASHD_RPCPASSWORD=$ZCASHD_RPCPASSWORD + - ZCASHD_RPCBIND=$ZCASHD_RPCBIND + - ZCASHD_ALLOWIP=$ZCASHD_ALLOWIP + - ZCASHD_TXINDEX=$ZCASHD_TXINDEX + - ZCASHD_INSIGHTEXPLORER=$ZCASHD_INSIGHTEXPLORER + - ZCASHD_ZMQPORT=$ZCASHD_ZMQPORT + - ZCASHD_ZMQBIND=$ZCASHD_ZMQBIND + volumes: + - zcash-params:/srv/zcashd/.zcash-params + - zcash:/srv/zcashd/.zcash + +volumes: + zcash: + zcash-params: \ No newline at end of file diff --git a/zcashd/entrypoint.sh b/zcashd/entrypoint.sh new file mode 100755 index 0000000..bc432b4 --- /dev/null +++ b/zcashd/entrypoint.sh @@ -0,0 +1,51 @@ +#!/bin/bash + +set -eo pipefail + +env | sort | grep ZCASHD || true + + +export ZCASHD_CMD='zcashd -printtoconsole' + +if [[ ! -n ${ZCASHD_NETWORK} ]];then + echo "ZCASHD_NETWORK must be set" + echo "For example: docker run --rm -e ZCASHD_NETWORK=testnet gcr.io/zcash-web/zcashd" + exit 1 +fi + +case ${ZCASHD_NETWORK} in + testnet) + ZCASHD_CMD+=" -testnet -addnode=testnet.z.cash " + ;; + mainnet) + ZCASHD_CMD+=" -addnode=mainnet.z.cash " + ;; + *) + echo "Error, unknown network: ${ZCASHD_NETWORK}" + exit 1 + ;; +esac + +if [[ -n "${ZCASHD_SHOWMETRICS}" ]];then ZCASHD_CMD+=" -showmetrics=${ZCASHD_SHOWMETRICS}";fi +if [[ -n "${ZCASHD_LOGIPS}" ]];then ZCASHD_CMD+=" -logips=${ZCASHD_LOGIPS}";fi +if [[ -n "${ZCASHD_EXPERIMENTALFEATURES}" ]];then ZCASHD_CMD+=" -experimentalfeatures=${ZCASHD_EXPERIMENTALFEATURES}";fi +if [[ -n "${ZCASHD_GEN}" ]];then ZCASHD_CMD+=" -gen=${ZCASHD_GEN}";fi +if [[ -n "${ZCASHD_ZSHIELDCOINBASE}" ]];then ZCASHD_CMD+=" -zshieldcoinbase=${ZCASHD_ZSHIELDCOINBASE}";fi +if [[ -n "${ZCASHD_RPCUSER}" ]];then ZCASHD_CMD+=" -rpcuser=${ZCASHD_RPCUSER}";fi +if [[ -n "${ZCASHD_RPCPASSWORD}" ]];then ZCASHD_CMD+=" -rpcpassword=${ZCASHD_RPCPASSWORD}";fi +if [[ -n "${ZCASHD_RPCBIND}" ]];then ZCASHD_CMD+=" -rpcbind=${ZCASHD_RPCBIND}";fi +if [[ -n "${ZCASHD_ALLOWIP}" ]];then ZCASHD_CMD+=" -rpcallowip=${ZCASHD_ALLOWIP}";fi +if [[ -n "${ZCASHD_TXINDEX}" ]];then ZCASHD_CMD+=" -txindex";fi +if [[ -n "${ZCASHD_INSIGHTEXPLORER}" ]];then ZCASHD_CMD+=" -insightexplorer";fi +if [[ -n "${ZCASHD_ZMQPORT}" && -n "${ZCASHD_ZMQBIND}" ]];then + ZCASHD_CMD+=" -zmqpubhashblock=tcp://${ZCASHD_ZMQBIND}:${ZCASHD_ZMQPORT}" + ZCASHD_CMD+=" -zmqpubhashtx=tcp://${ZCASHD_ZMQBIND}:${ZCASHD_ZMQPORT}" + ZCASHD_CMD+=" -zmqpubrawblock=tcp://${ZCASHD_ZMQBIND}:${ZCASHD_ZMQPORT}" + ZCASHD_CMD+=" -zmqpubrawtx=tcp://${ZCASHD_ZMQBIND}:${ZCASHD_ZMQPORT}" + ZCASHD_CMD+=" -zmqpubhashblock=tcp://${ZCASHD_ZMQBIND}:${ZCASHD_ZMQPORT}" +fi + +zcash-fetch-params +touch .zcash/zcash.conf +echo "Starting: ${ZCASHD_CMD}" +${ZCASHD_CMD}