mirror of
https://github.com/odoo/runbot.git
synced 2025-03-15 15:35:46 +07:00
[IMP] runbot: adapt for noble
The migration to the new dockerfile also includes a change to the noble docker image This is done in a separate commit to ease the comparaison. Notes: The postgresql-client was initially pinned to version 16 and removed from debian control, but this version proposes add the repositories and let apt chose the latest version. This is experimental but was tested on ubuntu:jammy, with 16 version installed as expected. The requirements are installed as user instead of root to avoid the need to use the ignore_installed flag (and solve a bunch of issues related to this flag)
This commit is contained in:
parent
0d8f69e086
commit
7343d8a4cb
@ -20,64 +20,56 @@ class TestDockerfile(RunbotCase, HttpCase):
|
||||
|
||||
def test_docker_default(self):
|
||||
self.maxDiff = None
|
||||
|
||||
with (
|
||||
patch('odoo.addons.runbot.models.docker.USERNAME', 'TestUser'),
|
||||
patch('odoo.addons.runbot.models.docker.USERUID', '4242'),
|
||||
patch('odoo.addons.runbot.models.docker.USERGID', '1337'),
|
||||
):
|
||||
docker_render = self.env.ref('runbot.docker_default').dockerfile.replace('\n\n', '\n')
|
||||
docker_render = '\n'.join(line for line in docker_render.split('\n') if line and line[0] != '#')
|
||||
|
||||
self.assertEqual(
|
||||
self.env.ref('runbot.docker_default').dockerfile.replace('\n\n', '\n'),
|
||||
r"""FROM ubuntu:jammy
|
||||
r"""FROM ubuntu:noble
|
||||
ENV LANG C.UTF-8
|
||||
USER root
|
||||
# Install debian packages
|
||||
RUN set -x ; \
|
||||
apt-get update \
|
||||
&& DEBIAN_FRONTEND=noninteractive apt-get install -y --no-install-recommends apt-transport-https build-essential ca-certificates curl ffmpeg file flake8 fonts-freefont-ttf fonts-noto-cjk gawk gnupg gsfonts libldap2-dev libjpeg9-dev libsasl2-dev libxslt1-dev lsb-release ocrmypdf sed sudo unzip xfonts-75dpi zip zlib1g-dev \
|
||||
&& DEBIAN_FRONTEND=noninteractive apt-get install -y --no-install-recommends apt-transport-https build-essential ca-certificates curl file fonts-freefont-ttf fonts-noto-cjk gawk gnupg gsfonts libldap2-dev libjpeg9-dev libsasl2-dev libxslt1-dev lsb-release npm ocrmypdf sed sudo unzip xfonts-75dpi zip zlib1g-dev \
|
||||
&& rm -rf /var/lib/apt/lists/*
|
||||
# Install debian packages
|
||||
RUN set -x ; \
|
||||
apt-get update \
|
||||
&& DEBIAN_FRONTEND=noninteractive apt-get install -y --no-install-recommends python3 python3-dbfread python3-dev python3-gevent python3-pip python3-setuptools python3-wheel python3-markdown python3-mock python3-phonenumbers python3-websocket python3-google-auth libpq-dev python3-asn1crypto python3-jwt publicsuffix python3-xmlsec python3-aiosmtpd pylint \
|
||||
&& DEBIAN_FRONTEND=noninteractive apt-get install -y --no-install-recommends publicsuffix python3 flake8 python3-dbfread python3-dev python3-gevent python3-pip python3-setuptools python3-wheel python3-markdown python3-mock python3-phonenumbers python3-websocket python3-google-auth libpq-dev pylint python3-jwt python3-asn1crypto python3-html2text python3-suds python3-xmlsec \
|
||||
&& rm -rf /var/lib/apt/lists/*
|
||||
# Install wkhtmltopdf
|
||||
RUN curl -sSL https://nightly.odoo.com/deb/jammy/wkhtmltox_0.12.5-2.jammy_amd64.deb -o /tmp/wkhtml.deb \
|
||||
RUN curl -sSL https://github.com/wkhtmltopdf/packaging/releases/download/0.12.6.1-2/wkhtmltox_0.12.6.1-2.jammy_amd64.deb -o /tmp/wkhtml.deb \
|
||||
&& apt-get update \
|
||||
&& DEBIAN_FRONTEND=noninteractive apt-get -y install --no-install-recommends --fix-missing -qq /tmp/wkhtml.deb \
|
||||
&& rm -rf /var/lib/apt/lists/* \
|
||||
&& rm /tmp/wkhtml.deb
|
||||
# Install nodejs with values {"node_version": "20"}
|
||||
RUN curl -s https://deb.nodesource.com/gpgkey/nodesource.gpg.key | gpg --dearmor | tee /usr/share/keyrings/nodesource.gpg > /dev/null \
|
||||
&& echo "deb [signed-by=/usr/share/keyrings/nodesource.gpg] https://deb.nodesource.com/node_20.x `lsb_release -c -s` main" > /etc/apt/sources.list.d/nodesource.list \
|
||||
&& apt-get update \
|
||||
&& apt-get install -y nodejs
|
||||
RUN npm install -g rtlcss@3.4.0 es-check@6.0.0 eslint@8.1.0 prettier@2.7.1 eslint-config-prettier@8.5.0 eslint-plugin-prettier@4.2.1
|
||||
# Install branch debian/control with values {"odoo_branch": "master"}
|
||||
ENV NODE_PATH=/usr/lib/node_modules/
|
||||
ENV npm_config_prefix=/usr
|
||||
RUN npm install --force -g rtlcss@3.4.0 es-check@6.0.0 eslint@8.1.0 prettier@2.7.1 eslint-config-prettier@8.5.0 eslint-plugin-prettier@4.2.1
|
||||
ADD https://raw.githubusercontent.com/odoo/odoo/master/debian/control /tmp/control.txt
|
||||
RUN apt-get update \
|
||||
RUN curl -sSL https://www.postgresql.org/media/keys/ACCC4CF8.asc -o /etc/apt/trusted.gpg.d/psql_client.asc \
|
||||
&& echo "deb http://apt.postgresql.org/pub/repos/apt/ `lsb_release -s -c`-pgdg main" > /etc/apt/sources.list.d/pgclient.list \
|
||||
&& apt-get update \
|
||||
&& sed -n '/^Depends:/,/^[A-Z]/p' /tmp/control.txt \
|
||||
| awk '/^ [a-z]/ { gsub(/,/,"") ; gsub(" ", "") ; print $NF }' | sort -u \
|
||||
| egrep -v 'postgresql-client' \
|
||||
| DEBIAN_FRONTEND=noninteractive xargs apt-get install -y -qq --no-install-recommends \
|
||||
&& apt-get clean \
|
||||
&& rm -rf /var/lib/apt/lists/*
|
||||
# Install pip packages with values {"$packages": "astroid==2.4.2 pylint==2.5.0"}
|
||||
RUN python3 -m pip install --no-cache-dir astroid==2.4.2 pylint==2.5.0
|
||||
# Install pip packages with values {"$packages": "ebaysdk==2.1.5 pdf417gen==0.7.1"}
|
||||
RUN python3 -m pip install --no-cache-dir ebaysdk==2.1.5 pdf417gen==0.7.1
|
||||
RUN curl -sSL https://www.postgresql.org/media/keys/ACCC4CF8.asc | apt-key add - \
|
||||
&& echo "deb http://apt.postgresql.org/pub/repos/apt/ `lsb_release -s -c`-pgdg main" > /etc/apt/sources.list.d/pgclient.list \
|
||||
&& apt-get update \
|
||||
&& DEBIAN_FRONTEND=noninteractive apt-get install -y postgresql-client-14 \
|
||||
&& rm -rf /var/lib/apt/lists/*
|
||||
# Install chrome with values {"chrome_version": "123.0.6312.58-1"}
|
||||
RUN curl -sSL https://dl.google.com/linux/chrome/deb/pool/main/g/google-chrome-stable/google-chrome-stable_123.0.6312.58-1_amd64.deb -o /tmp/chrome.deb \
|
||||
&& apt-get update \
|
||||
&& apt-get -y install --no-install-recommends /tmp/chrome.deb \
|
||||
&& rm /tmp/chrome.deb
|
||||
# Install branch requirements with values {"odoo_branch": "master"}
|
||||
ADD https://raw.githubusercontent.com/odoo/odoo/master/requirements.txt /tmp/requirements.txt
|
||||
RUN python3 -m pip install --no-cache-dir -r /tmp/requirements.txt""" f"""
|
||||
# Create user template with values {{"USERUID": {USERUID}, "USERGID": {USERGID}, "USERNAME": "{USERNAME}"}}
|
||||
RUN groupadd -g {USERGID} {USERNAME} && useradd --create-home -u {USERUID} -g {USERNAME} -G audio,video {USERNAME}
|
||||
# Switch user with values {{"USERNAME": "{USERNAME}"}}
|
||||
USER {USERNAME}
|
||||
""")
|
||||
RUN deluser ubuntu
|
||||
RUN groupadd -g 1337 TestUser && useradd --create-home -u 4242 -g TestUser -G audio,video TestUser
|
||||
USER TestUser
|
||||
ENV PIP_BREAK_SYSTEM_PACKAGES=1
|
||||
RUN python3 -m pip install --no-cache-dir ebaysdk==2.1.5 pdf417gen==0.7.1 ruff==0.4.7
|
||||
ADD --chown=TestUser https://raw.githubusercontent.com/odoo/odoo/master/requirements.txt /tmp/requirements.txt
|
||||
RUN python3 -m pip install --no-cache-dir -r /tmp/requirements.txt
|
||||
USER TestUser""", docker_render)
|
||||
|
||||
def test_dockerfile_base_fields(self):
|
||||
dockerfile = self.env['runbot.dockerfile'].create({
|
||||
|
Loading…
Reference in New Issue
Block a user