-
Notifications
You must be signed in to change notification settings - Fork 851
Expand file tree
/
Copy pathDockerfile
More file actions
72 lines (66 loc) · 3.36 KB
/
Dockerfile
File metadata and controls
72 lines (66 loc) · 3.36 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
################################################################################
# Dockerfile to setup a CentOS / Fedora type docker image, suitable
# for building ATS, perhaps as part of a Jenkins CI. Note that some
# of the features in here are specific to the official ATS Jenkins
# setup, see comment below.
#
# Licensed to the Apache Software Foundation (ASF) under one
# or more contributor license agreements. See the NOTICE file
# distributed with this work for additional information
# regarding copyright ownership. The ASF licenses this file
# to you under the Apache License, Version 2.0 (the
# "License"); you may not use this file except in compliance
# with the License. You may obtain a copy of the License at
#
# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.
################################################################################
# These can (should?) be overridden from the command line with ----build-arg, e.g.
# docker build --build-arg OS_VERSION=7 --build-arg OS_TYPE=centos
#
ARG OS_VERSION=30
ARG OS_TYPE=fedora
# This does currently not work, e.g. this I'd expect to make it conditional:
#
# RUN if [ "${ADD_JENKINS}" = "yes" ]; then yum ...
#
ARG ADD_JENKINS=no
# Alright, lets pull in the base image from docker.io
FROM ${OS_TYPE}:${OS_VERSION}
################################################################################
# All the DNF / YUM packages necessary for building ATS. you do not need all
# these if you only intend to run ATS, see the .spec file for the required
#runtime packages.
# This runs all the yum installation, starting with a system level update
RUN yum -y update; \
# Compilers
yum -y install ccache make pkgconfig bison flex gcc-c++ clang \
# Autoconf
autoconf automake libtool \
# Various other tools
git rpm-build distcc-server file wget openssl hwloc; \
# Devel packages that ATS needs
yum -y install openssl-devel expat-devel pcre-devel libcap-devel hwloc-devel libunwind-devel \
xz-devel libcurl-devel ncurses-devel jemalloc-devel GeoIP-devel luajit-devel brotli-devel \
ImageMagick-devel ImageMagick-c++-devel hiredis-devel zlib-devel zstd-devel \
perl-ExtUtils-MakeMaker perl-Digest-SHA perl-URI; \
# This is for autest stuff
yum -y install python3 httpd-tools procps-ng nmap-ncat \
python3-virtualenv python3-gunicorn python3-requests python3-httpbin; \
# Install uv for Python environment management
curl -LsSf https://astral.sh/uv/install.sh | sh; \
# Optional: This is for the OpenSSH server, and Jenkins account + access (comment out if not needed)
yum -y install java openssh-server && ssh-keygen -A; rm -f /run/nologin; \
groupadd -g 665 jenkins && \
useradd -g jenkins -u 989 -s /bin/bash -M -d /home/jenkins -c "Jenkins Continuous Build server" jenkins && \
mkdir -p /var/jenkins && chown jenkins.jenkins /var/jenkins
# Check if devtoolset-7 is required
RUN if [ ! -z "$(grep -i centos /etc/redhat-release)" ]; then \
yum -y install centos-release-scl; \
yum -y install devtoolset-7 devtoolset-7-libasan-devel; \
fi