[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