-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathDockerfile
70 lines (56 loc) · 2.71 KB
/
Dockerfile
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
FROM ubuntu:20.04
# Install dependencies
RUN apt-get update -y && \
apt-get install software-properties-common -y && \
apt-get update -y && \
apt-get install -y openjdk-8-jdk \
git \
build-essential \
subversion \
perl \
curl \
unzip \
cpanminus \
make \
wget && \
rm -rf /var/lib/apt/lists/*
#############################################################################
# Setup Defects4J
#############################################################################
# Setup Defects4j environment variables
ENV JAVA_HOME=/usr/lib/jvm/java-8-openjdk-amd64 \
TZ=America/Los_Angeles \
PATH="defects4j/framework/bin:${PATH}"
# Setup Defects4J dependencies
WORKDIR /
RUN git clone https://github.com/rjust/defects4j.git defects4j
WORKDIR /defects4j
RUN cpanm --installdeps . && \
./init.sh && \
ln -snf /usr/share/zoneinfo/$TZ /etc/localtime && echo $TZ > /etc/timezone
# Custom command to replace defects4j.build.xml file to one that allows fork and timeout, to stop hanging
RUN sed -i 's/<junit printsummary="yes" haltonfailure="no" haltonerror="no" fork="no" showOutput="true">/<junit printsummary="yes" haltonfailure="no" haltonerror="no" fork="on" forkmode="once" showOutput="true" timeout="180000">/' /defects4j/framework/projects/defects4j.build.xml
#############################################################################
# Maven setup
#############################################################################
# Setup Maven environment variables
ENV MAVEN_VERSION=3.8.6 \
MAVEN_HOME=/opt/maven \
M2_HOME=/opt/maven \
PATH=${M2_HOME}/bin:${PATH}
WORKDIR /
RUN wget https://dlcdn.apache.org/maven/maven-3/${MAVEN_VERSION}/binaries/apache-maven-${MAVEN_VERSION}-bin.tar.gz -P /tmp/mvn && \
wget https://downloads.apache.org/maven/maven-3/${MAVEN_VERSION}/binaries/apache-maven-${MAVEN_VERSION}-bin.tar.gz.sha512 -P /tmp/mvn/ && \
echo "$(cat /tmp/mvn/apache-maven-${MAVEN_VERSION}-bin.tar.gz.sha512) /tmp/mvn/apache-maven-${MAVEN_VERSION}-bin.tar.gz" | sha512sum -c && \
tar xzf /tmp/mvn/apache-maven-${MAVEN_VERSION}-bin.tar.gz -C /opt/ && \
ln -s /opt/apache-maven-${MAVEN_VERSION} /opt/maven && \
ln -s /opt/maven/bin/mvn /usr/local/bin && \
rm /tmp/mvn/apache-maven-${MAVEN_VERSION}-bin.tar.gz && \
rm /tmp/mvn/apache-maven-${MAVEN_VERSION}-bin.tar.gz.sha512
#############################################################################
# APRFramework runner
#############################################################################
WORKDIR /APRFramework
COPY . .
RUN mvn clean compile assembly:single
CMD java -jar target/APRFramework-jar-with-dependencies.jar