diff --git a/.github/workflows/test.yml b/.github/workflows/test.yml index e097d2f7..78ca5157 100644 --- a/.github/workflows/test.yml +++ b/.github/workflows/test.yml @@ -22,7 +22,7 @@ jobs: java-version: '11' - name: Set up Maven - uses: stCarolas/setup-maven@v4.5 + uses: stCarolas/setup-maven@v5 with: maven-version: '3.9.1' @@ -36,6 +36,11 @@ jobs: run: make install shell: bash # Explicitly use Bash because otherwise failing Windows jobs are not erroring. + - name: Install required tools + run: | + make install-tools + shell: bash # Explicitly use Bash because otherwise failing Windows jobs are not erroring. + - name: Install testing tools run: | make install-tools-testing diff --git a/Dockerfile b/Dockerfile index 5ba95a69..684090da 100644 --- a/Dockerfile +++ b/Dockerfile @@ -1,40 +1,54 @@ -FROM ubuntu:noble -RUN apt-get update && apt-get install -y ca-certificates wget unzip git make && update-ca-certificates +# Builder image. +FROM golang:latest as builder -WORKDIR /home/ubuntu/eval-dev-quality +WORKDIR /app COPY ./ ./ -RUN chown -R ubuntu:ubuntu ./ +# Build the binary. +RUN go mod tidy +RUN CGO_ENABLED=0 go build -o eval-dev-quality ./cmd/eval-dev-quality + +# Actual running image. +FROM ubuntu:noble +RUN apt-get update && apt-get install -y ca-certificates wget unzip git make && update-ca-certificates + +# Switch to the ubuntu user as we want it to run as non-root. USER ubuntu -RUN mkdir -p ~/.eval-dev-quality +WORKDIR /app +COPY --chown=ubuntu:ubuntu ./testdata ./testdata +COPY --chown=ubuntu:ubuntu ./Makefile ./Makefile +RUN mkdir -p .eval-dev-quality +RUN mkdir -p /app/evaluation # Install Maven RUN wget https://archive.apache.org/dist/maven/maven-3/3.9.1/binaries/apache-maven-3.9.1-bin.tar.gz && \ - tar -xf apache-maven-3.9.1-bin.tar.gz -C ~/.eval-dev-quality/ && \ + tar -xf apache-maven-3.9.1-bin.tar.gz -C /app/.eval-dev-quality/ && \ rm apache-maven-3.9.1-bin.tar.gz -ENV PATH="${PATH}:/home/ubuntu/.eval-dev-quality/apache-maven-3.9.1/bin" +ENV PATH="${PATH}:/app/.eval-dev-quality/apache-maven-3.9.1/bin" # Install Gradle RUN wget https://services.gradle.org/distributions/gradle-8.0.2-bin.zip && \ - unzip gradle-8.0.2-bin.zip -d ~/.eval-dev-quality/ && \ + unzip gradle-8.0.2-bin.zip -d /app/.eval-dev-quality/ && \ rm gradle-8.0.2-bin.zip -ENV PATH="${PATH}:/home/ubuntu/.eval-dev-quality/gradle-8.0.2/bin" +ENV PATH="${PATH}:/app/.eval-dev-quality/gradle-8.0.2/bin" # Install Java RUN wget https://corretto.aws/downloads/latest/amazon-corretto-11-x64-linux-jdk.tar.gz && \ - tar -xf amazon-corretto-11-x64-linux-jdk.tar.gz -C ~/.eval-dev-quality/ && \ + tar -xf amazon-corretto-11-x64-linux-jdk.tar.gz -C /app/.eval-dev-quality/ && \ rm amazon-corretto-11-x64-linux-jdk.tar.gz -ENV JAVA_HOME="/home/ubuntu/.eval-dev-quality/amazon-corretto-11.0.23.9.1-linux-x64" +ENV JAVA_HOME="/app/.eval-dev-quality/amazon-corretto-11.0.23.9.1-linux-x64" ENV PATH="${PATH}:${JAVA_HOME}/bin" # Install Go RUN wget https://go.dev/dl/go1.21.5.linux-amd64.tar.gz && \ - tar -xf go1.21.5.linux-amd64.tar.gz -C ~/.eval-dev-quality/ && \ + tar -xf go1.21.5.linux-amd64.tar.gz -C /app/.eval-dev-quality/ && \ rm go1.21.5.linux-amd64.tar.gz -ENV PATH="${PATH}:/home/ubuntu/.eval-dev-quality/go/bin" +ENV PATH="${PATH}:/app/.eval-dev-quality/go/bin" +ENV GOROOT="/app/.eval-dev-quality/go" ENV PATH="${PATH}:/home/ubuntu/go/bin" -# Setup the evaluation - -RUN make install-all -ENV PATH="${PATH}:/home/ubuntu/.eval-dev-quality/bin" +# Install the binary +COPY --from=builder --chown=ubuntu:ubuntu /app/eval-dev-quality /app/.eval-dev-quality/bin/ +ENV PATH="${PATH}:/app/.eval-dev-quality/bin" +RUN make install-tools-testing +RUN make install-tools /app/.eval-dev-quality/bin diff --git a/Makefile b/Makefile index 158a4704..4ca6f326 100644 --- a/Makefile +++ b/Makefile @@ -1,7 +1,7 @@ export ROOT_DIR := $(shell dirname $(realpath $(lastword $(MAKEFILE_LIST)))) export PACKAGE_BASE := github.com/symflower/eval-dev-quality -export UNIT_TEST_TIMEOUT := 480 +export UNIT_TEST_TIMEOUT := 720 ARGS := $(wordlist 2,$(words $(MAKECMDGOALS)),$(MAKECMDGOALS)) $(eval $(ARGS):;@:) # turn arguments into do-nothing targets @@ -47,13 +47,16 @@ install: # [