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

Changqing Li changqing.li at windriver.com
Sun Feb 10 17:17:16 PST 2019


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)
>>>
>>
>
-- 
BRs

Sandy(Li Changqing)



More information about the yocto mailing list