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