diff --git a/runbot/tests/test_dockerfile.py b/runbot/tests/test_dockerfile.py index a902415b..b66c1f94 100644 --- a/runbot/tests/test_dockerfile.py +++ b/runbot/tests/test_dockerfile.py @@ -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({