[yocto] [PATCH V2] patchwork: Add a dockerfile for deploy patchwork and patchtest

Randy MacLeod randy.macleod at windriver.com
Mon Jan 28 17:30:30 PST 2019


On 1/16/19 12:37 AM, changqing.li at windriver.com wrote:
> From: Changqing Li <changqing.li at windriver.com>

Ping?

Jose, are you maintaining this repo?
   http://git.yoctoproject.org/cgit/cgit.cgi/patchwork/about/
You were the committer for most of the recent work.

../Randy
> 
> Add a dockerfile for easy deploy patchwork and patchtest in
> docker
> 
> Signed-off-by: Changqing Li <changqing.li at windriver.com>
> ---
>   Dockerfile.pw                 | 52 +++++++++++++++++++++++++++++++++++++++++++
>   README.pw                     | 32 ++++++++++++++++++++++++++
>   requirements.txt              | 12 ++++++++++
>   scripts/pw_createsuperuser.sh |  5 +++++
>   scripts/pw_getmail.sh         | 11 +++++++++
>   scripts/pw_migrate.sh         |  5 +++++
>   scripts/pw_runwebserver.sh    | 12 ++++++++++
>   7 files changed, 129 insertions(+)
>   create mode 100644 Dockerfile.pw
>   create mode 100644 README.pw
>   create mode 100644 requirements.txt
>   create mode 100755 scripts/pw_createsuperuser.sh
>   create mode 100755 scripts/pw_getmail.sh
>   create mode 100755 scripts/pw_migrate.sh
>   create mode 100755 scripts/pw_runwebserver.sh
> 
> diff --git a/Dockerfile.pw b/Dockerfile.pw
> new file mode 100644
> index 0000000..ae3c1ee
> --- /dev/null
> +++ b/Dockerfile.pw
> @@ -0,0 +1,52 @@
> +FROM ubuntu:latest
> +MAINTAINER owner <own at mail.com>
> +
> +EXPOSE 8080
> +
> +ENV PYTHONUNBUFFERED=1 \
> +    LANG=en_US.UTF-8 \
> +    LC_ALL=en_US.UTF-8 \
> +    LC_CTYPE=en_US.UTF-8 \
> +    PATH="$PATH:/opt/patchwork/git-pw:/opt/patchtest:/opt/patchtest/scripts"
> +
> +RUN  apt-get update \
> +        && apt-get dist-upgrade -y \
> +        && apt-get install -y --no-install-recommends \
> +        autoconf \
> +        gcc \
> +        g++ \
> +        make \
> +        locales \
> +        wget \
> +        curl \
> +        cron \
> +        python-pip \
> +        python-dev \
> +        python-setuptools \
> +        python3-pip \
> +        python3-dev \
> +        libmysqlclient-dev \
> +        git-core \
> +        getmail4 \
> +        && sh -c "echo \"en_US.UTF-8 UTF-8\" >> /etc/locale.gen" \
> +        && locale-gen en_US.UTF-8 \
> +        && update-locale \
> +        && pip2 install wheel \
> +        && pip3 install wheel \
> +        && pip3 install setuptools \
> +        && apt-get autoremove --purge -y \
> +        && rm -rf /var/lib/apt/lists/* \
> +        && apt-get clean
> +ADD ./patchwork /opt/patchwork
> +ADD ./patchtest /opt/patchtest
> +ADD ./patchtest-oe /opt/patchtest-oe
> +ADD ./getmailrc /opt/getmail/getmailrc
> +RUN  pip2 install -r /opt/patchwork/requirements.txt \
> +    && pip3 install -r /opt/patchtest/requirements.txt \
> +    && pip3 install  -r /opt/patchtest-oe/requirements.txt \
> +    && mkdir -p /opt/getmail \
> +    && mkdir -p /opt/pw-logs \
> +    && git config --global user.email "patchtest at patchtest.com" \
> +    && git config --global user.name "patchtest" \
> +    && /opt/patchtest/scripts/create-host-test-folder -t /opt/pw-test \
> +    && /opt/patchtest/scripts/create-host-crontab -c /opt/pw-test-cron
> diff --git a/README.pw b/README.pw
> new file mode 100644
> index 0000000..ffa7af1
> --- /dev/null
> +++ b/README.pw
> @@ -0,0 +1,32 @@
> +* Dockerfile.pw deploy patchwork, patchtest, patchtest-oe in docker
> +
> +* Dockerfile.pw is just an example, you can adjust according to your
> +  deploy condition, like not use getmail, but use postfix.
> +
> +* requirements.txt,  just for refer, you can also rewrite this
> +  according to patchwork'doc and accoridng to your deploy condition.
> +
> +* scripts folder hold the files will be used during deploy with docker.
> +
> +* Deploy steps:
> +
> +1. Clone patchwork, patchtest, patchtest-oe first, also put getmailrc used by
> +   Dockerfile.pw under the same folder.
> +
> +2. Build docker image with Dockerfile.pw
> +$docker build -t pw -f ./patchwork/Dockerfile.pw .
> +
> +3. use mariadb as dataserver:
> +$ docker pull mariadb
> +$ docker run -d --name pw-db -e MYSQL_ROOT_PASSWORD=123456 -e MYSQL_DATABASE=pwdb -v /pw/pwdb:/var/lib/mysql mariadb
> +
> +5. run web server
> +docker run -d --name pw-web --link pw-db:pw-db -p 8080:8080 pw "/opt/patchwork/scripts/pw_runwebserver.sh"
> +
> +6. config pw
> +docker exec -it pw-web /opt/patchwork/scripts/pw_migrate.sh
> +docker exec -it pw-web /opt/patchwork/scripts/pw_createsuperuser.sh
> +
> +7. run patchwork
> +docker run -d --name pw-mail --link pw-db:pw-db pw "/opt/patchwork/scripts/pw_getmail.sh"
> +
> diff --git a/requirements.txt b/requirements.txt
> new file mode 100644
> index 0000000..b8f68f2
> --- /dev/null
> +++ b/requirements.txt
> @@ -0,0 +1,12 @@
> +django==1.8.0
> +sqlparse==0.2.4
> +celery==3.1.20
> +django_filter==0.11.0
> +djangorestframework==2.4.8
> +drf-nested-routers==0.11.1
> +psycopg2>=2.7,<2.8
> +mysqlclient
> +jsonfield
> +enum34
> +GitPython
> +requests
> diff --git a/scripts/pw_createsuperuser.sh b/scripts/pw_createsuperuser.sh
> new file mode 100755
> index 0000000..324ce72
> --- /dev/null
> +++ b/scripts/pw_createsuperuser.sh
> @@ -0,0 +1,5 @@
> +#!/bin/bash
> +
> +pw_dir='/opt/patchwork'
> +
> +(cd $pw_dir; ./manage.py createsuperuser)
> diff --git a/scripts/pw_getmail.sh b/scripts/pw_getmail.sh
> new file mode 100755
> index 0000000..fadf7c9
> --- /dev/null
> +++ b/scripts/pw_getmail.sh
> @@ -0,0 +1,11 @@
> +#!/bin/bash
> +
> +sudo /etc/init.d/cron start
> +echo "*/5 * * * * sudo getmail --getmaildir=/opt/getmail/ --idle INBOX >> /opt/pw-test-cron/getmail.log 2>&1" > /opt/pw-test-cron/cron-getmail
> +sudo crontab -u wrlbuild  /opt/pw-test-cron/cron-getmail
> +
> +while true
> +do
> +   :
> +done
> +
> diff --git a/scripts/pw_migrate.sh b/scripts/pw_migrate.sh
> new file mode 100755
> index 0000000..e54b2f4
> --- /dev/null
> +++ b/scripts/pw_migrate.sh
> @@ -0,0 +1,5 @@
> +#!/bin/bash
> +
> +pw_dir="/opt/patchwork"
> +
> +(cd $pw_dir; ./manage.py migrate; ./manage.py collectstatic; ./manage.py loaddata default_tags default_states default_events)
> diff --git a/scripts/pw_runwebserver.sh b/scripts/pw_runwebserver.sh
> new file mode 100755
> index 0000000..4233b1a
> --- /dev/null
> +++ b/scripts/pw_runwebserver.sh
> @@ -0,0 +1,12 @@
> +#!/bin/bash
> +
> +export LANG="en_US.UTF-8"
> +export LC_ALL="en_US.UTF-8"
> +
> +#open crontab to do test
> +/etc/init.d/cron start
> +crontab -u pwtest /opt/pw-test-cron/crontab
> +
> +pw_dir="/opt/patchwork"
> +
> +(cd $pw_dir; ./manage.py runserver 0.0.0.0:8080)
> 


-- 
# Randy MacLeod
# Wind River Linux


More information about the yocto mailing list