Dockerfile
 1  # Builder image.
 2  FROM golang:latest AS builder
 3  
 4  WORKDIR /app
 5  COPY ./ ./
 6  
 7  # Build the binary.
 8  RUN go mod tidy
 9  RUN CGO_ENABLED=0 go build -o eval-dev-quality ./cmd/eval-dev-quality
10  
11  # Actual running image.
12  FROM ubuntu:noble
13  RUN apt-get update && \
14  	apt-get install -y \
15  	ca-certificates \
16  	gcc \
17  	git \
18  	libssl-dev \
19  	libtool \
20  	libyaml-dev \
21  	make \
22  	unzip \
23  	wget \
24  	zlib1g-dev \
25  	&& update-ca-certificates
26  
27  # Switch to the ubuntu user as we want it to run as non-root.
28  USER ubuntu
29  WORKDIR /app
30  COPY --chown=ubuntu:ubuntu ./testdata ./testdata
31  COPY --chown=ubuntu:ubuntu ./Makefile ./Makefile
32  RUN mkdir -p .eval-dev-quality
33  RUN mkdir -p /app/evaluation
34  
35  # Install Ruby
36  RUN mkdir -p /tmp/compile
37  RUN wget https://cache.ruby-lang.org/pub/ruby/3.3/ruby-3.3.4.tar.gz && \
38  	tar -xf ruby-3.3.4.tar.gz -C /tmp/compile/ && \
39  	rm ruby-3.3.4.tar.gz
40  WORKDIR /tmp/compile/ruby-3.3.4
41  RUN ./configure --prefix /app/.eval-dev-quality/ruby-3.3.4 --disable-install-doc
42  RUN	make install
43  WORKDIR /app
44  RUN rm -rf /tmp/compile
45  ENV PATH="${PATH}:/app/.eval-dev-quality/ruby-3.3.4/bin"
46  
47  # Install Maven
48  RUN wget https://archive.apache.org/dist/maven/maven-3/3.9.1/binaries/apache-maven-3.9.1-bin.tar.gz && \
49  	tar -xf apache-maven-3.9.1-bin.tar.gz -C /app/.eval-dev-quality/ && \
50  	rm apache-maven-3.9.1-bin.tar.gz
51  ENV PATH="${PATH}:/app/.eval-dev-quality/apache-maven-3.9.1/bin"
52  
53  # Install Gradle
54  RUN wget https://services.gradle.org/distributions/gradle-8.0.2-bin.zip && \
55  	unzip gradle-8.0.2-bin.zip -d /app/.eval-dev-quality/ && \
56  	rm gradle-8.0.2-bin.zip
57  ENV PATH="${PATH}:/app/.eval-dev-quality/gradle-8.0.2/bin"
58  
59  # Install Java
60  RUN wget https://corretto.aws/downloads/resources/11.0.24.8.1/amazon-corretto-11.0.24.8.1-linux-x64.tar.gz && \
61  	tar -xf amazon-corretto-11.0.24.8.1-linux-x64.tar.gz -C /app/.eval-dev-quality/ && \
62  	rm amazon-corretto-11.0.24.8.1-linux-x64.tar.gz
63  ENV JAVA_HOME="/app/.eval-dev-quality/amazon-corretto-11.0.24.8.1-linux-x64"
64  ENV PATH="${PATH}:${JAVA_HOME}/bin"
65  
66  # Install Go
67  RUN wget https://go.dev/dl/go1.21.5.linux-amd64.tar.gz && \
68  	tar -xf go1.21.5.linux-amd64.tar.gz -C /app/.eval-dev-quality/ && \
69  	rm go1.21.5.linux-amd64.tar.gz
70  ENV PATH="${PATH}:/app/.eval-dev-quality/go/bin"
71  ENV GOROOT="/app/.eval-dev-quality/go"
72  ENV PATH="${PATH}:/home/ubuntu/go/bin"
73  
74  # Install the binary
75  COPY --from=builder --chown=ubuntu:ubuntu /app/eval-dev-quality /app/.eval-dev-quality/bin/
76  ENV PATH="${PATH}:/app/.eval-dev-quality/bin"
77  RUN make install-tools-testing
78  RUN make install-tools /app/.eval-dev-quality/bin