runbot/runbot/templates/dockerfile.xml
Christophe Monniez 7642bffda3 [FIX] runbot: download phantomjs from nightly server
In order to avoid bitbucket rate limiting, we prefer to download this
old pal from our server.
2022-10-21 11:17:05 +02:00

152 lines
7.2 KiB
XML

<?xml version="1.0" encoding="utf-8"?>
<odoo>
<data>
<template id="runbot.docker_from">
FROM <t t-esc="values['from']"/>
ENV LANG C.UTF-8
USER root
</template>
<template id="runbot.docker_install_debs">
# Install debian packages
RUN set -x ; \
apt-get update \
&amp;&amp; DEBIAN_FRONTEND=noninteractive apt-get install -y --no-install-recommends <t t-esc="deb_packages or values['deb_packages']"/> \
&amp;&amp; rm -rf /var/lib/apt/lists/*
</template>
<template id="runbot.docker_install_chrome">
<t t-set="chrome_distrib" t-value="values.get('chrome_distrib')"/>
<t t-set="chrome_version" t-value="values['chrome_version']"/>
<t t-set="chrome_source" t-value="values.get('chrome_source')"/>
# Install Google Chrome
<t t-if="chrome_source == 'google'">
RUN curl -sSL https://dl.google.com/linux/chrome/deb/pool/main/g/google-chrome-stable/google-chrome-stable_<t t-esc="chrome_version"/>_amd64.deb -o /tmp/chrome.deb \
&amp;&amp; apt-get update \
&amp;&amp; apt-get -y install --no-install-recommends /tmp/chrome.deb \
&amp;&amp; rm /tmp/chrome.deb
</t>
<t t-else="">
RUN curl -sSL http://nightly.odoo.com/odoo.key | apt-key add - \
&amp;&amp; echo "deb http://nightly.odoo.com/deb/<t t-esc="chrome_distrib"/> ./" > /etc/apt/sources.list.d/google-chrome.list \
&amp;&amp; apt-get update \
&amp;&amp; apt-get install -y -qq google-chrome-stable=<t t-esc="chrome_version"/> \
&amp;&amp; rm -rf /var/lib/apt/lists/*
</t>
</template>
<template id="runbot.docker_install_phantomjs">
# Install phantomjs
RUN curl -sSL https://nightly.odoo.com/resources/phantomjs.tar.bz2 -o /tmp/phantomjs.tar.bz2 \
&amp;&amp; tar xvfO /tmp/phantomjs.tar.bz2 phantomjs-2.1.1-linux-x86_64/bin/phantomjs > /usr/local/bin/phantomjs \
&amp;&amp; chmod +x /usr/local/bin/phantomjs \
&amp;&amp; rm -f /tmp/phantomjs.tar.bz2
</template>
<template id="runbot.docker_install_wkhtml">
# Install wkhtml
RUN curl -sSL <t t-esc="values['wkhtml_url']"/> -o /tmp/wkhtml.deb \
&amp;&amp; apt-get update \
&amp;&amp; dpkg --force-depends -i /tmp/wkhtml.deb \
&amp;&amp; apt-get install -y -f --no-install-recommends \
&amp;&amp; rm /tmp/wkhtml.deb
</template>
<template id="runbot.docker_install_nodejs">
<t t-set="node_version" t-value="node_version or '15'"/>
# Install nodejs
RUN curl -sSL https://deb.nodesource.com/gpgkey/nodesource.gpg.key | apt-key add - \
&amp;&amp; echo "deb https://deb.nodesource.com/node_<t t-esc="values['node_version']"/>.x `lsb_release -c -s` main" > /etc/apt/sources.list.d/nodesource.list \
&amp;&amp; apt-get update \
&amp;&amp; apt-get install -y nodejs
</template>
<template id="runbot.docker_install_node_packages">
RUN npm install -g <t t-esc="values['node_packages']"/>
</template>
<template id="runbot.docker_install_flamegraph">
ADD https://raw.githubusercontent.com/brendangregg/FlameGraph/master/flamegraph.pl /usr/local/bin/flamegraph.pl
RUN chmod +rx /usr/local/bin/flamegraph.pl
</template>
<template id="runbot.docker_install_psql">
<t t-set="psql_version" t-value="psql_version or False"/>
RUN curl -sSL https://www.postgresql.org/media/keys/ACCC4CF8.asc | apt-key add - \
&amp;&amp; echo "deb http://apt.postgresql.org/pub/repos/apt/ `lsb_release -s -c`-pgdg main" > /etc/apt/sources.list.d/pgclient.list \
&amp;&amp; apt-get update \
&amp;&amp; DEBIAN_FRONTEND=noninteractive apt-get install -y postgresql-client<t t-if="values['psql_version']">-</t><t t-esc="values['psql_version']"/> \
&amp;&amp; rm -rf /var/lib/apt/lists/*
</template>
<template id="runbot.docker_install_odoo_debs">
<t t-set="odoo_branch" t-value="odoo_branch or 'master'"/>
ADD https://raw.githubusercontent.com/odoo/odoo/<t t-esc="values['odoo_branch']"/>/debian/control /tmp/control.txt
RUN apt-get update \
&amp;&amp; sed -n '/^Depends:/,/^[A-Z]/p' /tmp/control.txt \
| awk '/^ [a-z]/ { gsub(/,/,"") ; print $1 }' | sort -u \
| egrep -v 'postgresql-client' \
| sed 's/python-imaging/python-pil/'| sed 's/python-pypdf/python-pypdf2/' \
| DEBIAN_FRONTEND=noninteractive xargs apt-get install -y -qq \
&amp;&amp; apt-get clean \
&amp;&amp; rm -rf /var/lib/apt/lists/*
</template>
<template id="runbot.docker_install_odoo_python_requirements">
ADD https://raw.githubusercontent.com/odoo/odoo/<t t-esc="values['odoo_branch']"/>/requirements.txt /root/requirements.txt
RUN <t t-esc="values['python_version']"/> -m pip install --no-cache-dir setuptools wheel &amp;&amp; \
<t t-esc="values['python_version']"/> -m pip install --no-cache-dir -r /root/requirements.txt &amp;&amp; \
<t t-esc="values['python_version']"/> -m pip install --no-cache-dir <t t-esc="values['additional_pip']"/>
</template>
<template id="runbot.docker_install_runbot_python_requirements">
RUN <t t-esc="values['python_version']"/> -m pip install --no-cache-dir setuptools wheel &amp;&amp; \
<t t-esc="values['python_version']"/> -m pip install <t t-esc="values['runbot_pip']"/>
</template>
<template id="runbot.docker_base">
<t t-set="default" t-value="{
'from': 'ubuntu:focal',
'odoo_branch': 'master',
'chrome_source': 'google',
'chrome_version': '90.0.4430.93-1',
'node_packages': 'rtlcss es-check eslint',
'node_version': '15',
'psql_version': '12',
'wkhtml_url': 'https://github.com/wkhtmltopdf/wkhtmltopdf/releases/download/0.12.5/wkhtmltox_0.12.5-1.bionic_amd64.deb',
'chrome': True,
'phantom': False,
'do_requirements': True,
'python_version': 'python3',
'deb_packages_python': 'python3 python3-dbfread python3-dev python3-pip python3-setuptools python3-wheel python3-markdown python3-mock python3-phonenumbers python3-vatnumber python3-websocket libpq-dev',
'deb_package_default': 'apt-transport-https build-essential ca-certificates curl ffmpeg file fonts-freefont-ttf fonts-noto-cjk gawk gnupg gsfonts libldap2-dev libjpeg9-dev libsasl2-dev libxslt1-dev lsb-release node-less ocrmypdf sed sudo unzip xfonts-75dpi zip zlib1g-dev',
'additional_pip': 'ebaysdk==2.1.5 pdf417gen==0.7.1',
'runbot_pip': 'coverage==4.5.4 astroid==2.4.2 pylint==2.5.0 flamegraph'
}"/>
<t t-set="values" t-value="default"/>
<t t-set="dummy" t-value="values.update(custom_values)" t-if="custom_values" />
<t t-call="runbot.docker_from"/>
<t t-call="runbot.docker_install_debs">
<t t-set="deb_packages" t-value="values['deb_package_default']"/>
</t>
<t t-call="runbot.docker_install_debs">
<t t-set="deb_packages" t-value="values['deb_packages_python']"/>
</t>
<t t-out="0"/><!-- custom content from caller t-call-->
<t t-call="runbot.docker_install_wkhtml"/>
<t t-call="runbot.docker_install_nodejs"/>
<t t-call="runbot.docker_install_node_packages"/>
<t t-call="runbot.docker_install_flamegraph"/>
<t t-call="runbot.docker_install_odoo_debs"/>
<t t-call="runbot.docker_install_runbot_python_requirements"/>
<t t-call="runbot.docker_install_psql"/>
<t t-if="values['chrome']" t-call="runbot.docker_install_chrome"/>
<t t-if="values['phantom']" t-call="runbot.docker_install_phantomjs"/>
<t t-if="values['do_requirements']" t-call="runbot.docker_install_odoo_python_requirements"/>
</template>
</data>
</odoo>