On 1/16/19 12:37 AM, changqing...@windriver.com wrote:
From: Changqing Li <changqing...@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...@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 <o...@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 "patcht...@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 -- _______________________________________________ yocto mailing list yocto@yoctoproject.org https://lists.yoctoproject.org/listinfo/yocto