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

Paul Eggleton paul.eggleton at linux.intel.com
Sun Feb 10 17:36:26 PST 2019


Not actively, no. I will try to take a look at your patch this week though.

Cheers,
Paul

On Monday, 11 February 2019 2:17:16 PM NZDT Changqing Li wrote:
> Hi, Paul
> 
> Are you maintaining this repo?
> 
> On 2/10/19 2:43 AM, Jose Lamego wrote:
> > Hi Randy,
> >
> > Sorry for the late response. I'm no longer involved with the Yocto
> > Project. Last word I heard was that point of contact for Patchwork-
> > related work was Paul Eggleton.
> >
> > Hope this helps.
> >
> > Jose
> Thanks.
> >
> > On Mon, 2019-01-28 at 20:30 -0500, Randy MacLeod wrote:
> >> 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)
> >>>
> >>
> >
> 


-- 

Paul Eggleton
Intel Open Source Technology Centre




More information about the yocto mailing list