zulip/tools/ci/Dockerfile

70 lines
1.9 KiB
Docker

# Dockerfile for a generic Ubuntu image with just the basics we need
# to make it suitable for CI. In particular:
# * a non-root user to run as (a pain to try to do in setup,
# because by then we've already cloned the repo);
# * Git and other basic utilities.
# To rebuild from this file for a given release, say Ubuntu 18.04 bionic:
# docker build . --build-arg=BASE_IMAGE=ubuntu:18.04 --pull --tag=zulip/ci:bionic
# docker push zulip/ci:bionic
ARG BASE_IMAGE
FROM $BASE_IMAGE
RUN ln -sf /usr/share/zoneinfo/Etc/UTC /etc/localtime
# Set the locale.
ENV LC_ALL C.UTF-8
# Upgrade git if it is less than v2.18 because GitHub Actions'
# checkout installs source code using Rest API as an optimization
# if the version is less than v2.18, which causes failure in provision
# and tests because of the lack of git being initialized.
RUN if (. /etc/os-release && [ "$ID $VERSION_ID" = 'ubuntu 18.04' ]); then \
apt-get update && \
apt-get -y install software-properties-common && \
add-apt-repository -y ppa:git-core/ppa; \
fi
# Extra packages used by Zulip.
RUN apt-get update \
&& apt-get -y install --no-install-recommends \
build-essential \
ca-certificates \
curl \
gettext \
git \
hunspell-en-us \
jq \
libffi-dev \
libfreetype6-dev \
libjpeg-dev \
libldap2-dev \
libpq-dev \
libssl-dev \
libxml2-dev \
libxslt1-dev \
locales \
memcached \
moreutils \
puppet \
python3-dev \
python3-pip \
rabbitmq-server \
redis-server \
sudo \
supervisor \
unzip \
xvfb \
zlib1g-dev
ARG USERNAME=github
RUN groupadd --gid 1001 $USERNAME \
&& useradd --uid 1001 --gid $USERNAME --shell /bin/bash --create-home $USERNAME \
&& echo "$USERNAME ALL = (ALL) NOPASSWD: ALL" >> /etc/sudoers.d/50-$USERNAME \
&& echo 'Defaults env_keep += "DEBIAN_FRONTEND"' >> /etc/sudoers.d/env_keep
USER $USERNAME
CMD ["/bin/sh"]