-
Notifications
You must be signed in to change notification settings - Fork 1
Expand file tree
/
Copy pathDockerfile
More file actions
115 lines (101 loc) · 4.88 KB
/
Dockerfile
File metadata and controls
115 lines (101 loc) · 4.88 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
#
# This Dockerfile is dedicated to our CI service to build our projects driven by Maven or Gradle.
# The builds are performed as the user silverbuild and not as root. So, it is required the user id
# and group id are those of the user as whom the CI service is running.
#
FROM ubuntu:noble
LABEL name="Silverpeas Build" description="An image to build a Silverpeas project" vendor="Silverpeas" version=latest build=3
MAINTAINER Miguel Moquillon "miguel.moquillon@silverpeas.org"
ENV TERM=xterm
# Non generic time zone. Tests should succeed whatever the time zone.
ENV TZ=Europe/Paris
# Parameters whose values are required for the tests to succeed
ARG WILDFLY_VERSION=26.1.3
ARG JAVA_VERSION=11
ARG SONAR_JAVA_VERSION=17
ARG DEFAULT_LOCALE=fr_FR.UTF-8
ARG MAVEN_VERSION=3.9.11
ARG MAVEN_SHA=bcfe4fe305c962ace56ac7b5fc7a08b87d5abd8b7e89027ab251069faebee516b0ded8961445d6d91ec1985dfe30f8153268843c89aa392733d1a3ec956c9978
ARG NODEJS_VERSION=24
ARG DEBIAN_FRONTEND=noninteractive
# Users to use by the CI service to build projects. Required if you whish to avoid some security
# restrictions. Should be the user and group as whom the CI service is running.
ARG USER_ID=111
ARG GROUP_ID=119
COPY src/maven-deps.zip /tmp/
RUN apt-get update && apt-get install -y --no-install-recommends \
apt-utils \
iputils-ping \
vim \
curl \
git \
openssh-client \
gnupg \
locales \
language-pack-en \
language-pack-fr \
tzdata \
procps \
net-tools \
zip \
unzip \
openjdk-${JAVA_VERSION}-jdk \
openjdk-${SONAR_JAVA_VERSION}-jdk \
ffmpeg \
imagemagick \
ghostscript \
libreoffice-writer \
libreoffice-calc \
libreoffice-impress \
gpgv \
groovy \
&& groupadd -g ${GROUP_ID} silverbuild \
&& useradd -u ${USER_ID} -g ${GROUP_ID} -d /home/silverbuild -s /bin/bash -m silverbuild \
&& curl -sL https://deb.nodesource.com/setup_${NODEJS_VERSION}.x | bash - \
&& apt-get install -y nodejs \
&& rm -rf /var/lib/apt/lists/* \
&& update-ca-certificates -f \
&& mkdir -p /usr/share/maven /usr/share/maven/ref \
&& curl -fsSL -o /tmp/apache-maven.tar.gz https://dlcdn.apache.org/maven/maven-3/${MAVEN_VERSION}/binaries/apache-maven-${MAVEN_VERSION}-bin.tar.gz \
&& echo "${MAVEN_SHA} /tmp/apache-maven.tar.gz" | sha512sum -c - \
&& tar -xzf /tmp/apache-maven.tar.gz -C /usr/share/maven --strip-components=1 \
&& rm -f /tmp/apache-maven.tar.gz \
&& ln -s /usr/share/maven/bin/mvn /usr/bin/mvn \
&& unzip /tmp/maven-deps.zip -d /home/silverbuild/ \
&& curl -fsSL -o /tmp/swftools-bin-0.9.2.zip https://www.silverpeas.org/files/swftools-bin-0.9.2.zip \
&& echo 'd40bd091c84bde2872f2733a3c767b3a686c8e8477a3af3a96ef347cf05c5e43 *swftools-bin-0.9.2.zip' | sha256sum - \
&& curl -fsSL -o /tmp/wildfly-${WILDFLY_VERSION}.Final.FOR-TESTS.zip https://www.silverpeas.org/files/wildfly-${WILDFLY_VERSION}.Final.FOR-TESTS.zip \
&& mkdir /opt/wildfly-for-tests \
&& unzip /tmp/wildfly-${WILDFLY_VERSION}.Final.FOR-TESTS.zip -d /opt/wildfly-for-tests/ \
&& unzip /tmp/swftools-bin-0.9.2.zip -d / \
&& curl -fsSL -o /tmp/pdf2json-bin-0.68.zip https://www.silverpeas.org/files/pdf2json-bin-0.68.zip \
&& echo 'eec849cdd75224f9d44c0999ed1fbe8764a773d8ab0cf7fff4bf922ab81c9f84 *pdf2json-bin-0.68.zip' | sha256sum - \
&& unzip /tmp/pdf2json-bin-0.68.zip -d / \
&& echo "en_US.UTF-8 UTF-8" >> /etc/locale.gen \
&& echo "fr_FR.UTF-8 UTF-8" >> /etc/locale.gen \
&& echo "de_DE.UTF-8 UTF-8" >> /etc/locale.gen \
&& locale-gen \
&& update-locale LANG=${DEFAULT_LOCALE} LANGUAGE=${DEFAULT_LOCALE} LC_ALL=${DEFAULT_LOCALE}
COPY src/settings.xml /home/silverbuild/.m2/
RUN chown -R silverbuild:silverbuild /home/silverbuild \
&& chown -R silverbuild:silverbuild /opt/wildfly-for-tests
ENV LANG ${DEFAULT_LOCALE}
ENV LANGUAGE ${DEFAULT_LOCALE}
ENV LC_ALL ${DEFAULT_LOCALE}
ENV MAVEN_HOME /usr/share/maven
ENV JAVA_HOME /usr/lib/jvm/java-${JAVA_VERSION}-openjdk-amd64
ENV SONAR_JDK_HOME /usr/lib/jvm/java-${SONAR_JAVA_VERSION}-openjdk-amd64
# Ensure signals are forwarded to the JVM process correctly for graceful shutdown
ENV LAUNCH_JBOSS_IN_BACKGROUND true
USER silverbuild
# The GPG and SSL keys to use for respectively signing and then deploying the built artifact to
# our Nexus server have to to be provided by an outside directory; therefore the below definition
# of volumes.
# WARNING: You have to link also the below files or directories in order to be able to deploy the
# build results and to push commits:
# - /home/silverbuild/.m2/settings.xml and /home/silverbuild/.m2/settings-security.xml files
# with the ones of the CI service user in order to sign and to deploy the artifact with
# Maven. In these files the GPG key, the SSL passphrase as well as the remote servers must be defined.
# - /home/silverbuild/.m2/.gitconfig file with the ones of the CI service user in order to be able
# to push any commits.
VOLUME ["/home/silverbuild/.ssh", "/home/silverbuild/.gnupg"]