diff --git a/.github/workflows/lint.yml b/.github/workflows/lint.yml index 3796f87..23d615e 100644 --- a/.github/workflows/lint.yml +++ b/.github/workflows/lint.yml @@ -15,3 +15,4 @@ jobs: - uses: brpaz/hadolint-action@master with: dockerfile: dodona-${{ matrix.image }}.dockerfile + ignore: DL3008 diff --git a/dodona-assembly.dockerfile b/dodona-assembly.dockerfile index 2b05053..e956e1f 100644 --- a/dodona-assembly.dockerfile +++ b/dodona-assembly.dockerfile @@ -1,7 +1,7 @@ FROM python:3.12.3-slim-bullseye # Add architecture repositories for ARM32 -# hadolint ignore=DL3003,DL3008 +# hadolint ignore=DL3003 RUN dpkg --add-architecture armhf \ && apt-get update \ # Install additional dependencies for fetching and building packages diff --git a/dodona-bash.dockerfile b/dodona-bash.dockerfile index e706d7a..e1e4d15 100644 --- a/dodona-bash.dockerfile +++ b/dodona-bash.dockerfile @@ -1,6 +1,5 @@ FROM python:3.12.3-slim-bullseye -# hadolint ignore=DL3008 RUN apt-get update && \ apt-get -y install --no-install-recommends \ bc=1.07.1-2+b2 \ diff --git a/dodona-compilers.dockerfile b/dodona-compilers.dockerfile index 1f083ae..af7e997 100644 --- a/dodona-compilers.dockerfile +++ b/dodona-compilers.dockerfile @@ -4,7 +4,7 @@ ARG LLVM_VERSION="13.0.0" ARG LLVM_SHA256="9680c841b5ceffa51f21d0d2ddd7573447b659d1889b83c153b7473342b22a49" -# hadolint ignore=DL3008,DL3013,DL4006 +# hadolint ignore=DL3013,DL4006 RUN apt-get update && DEBIAN_FRONTEND=noninteractive apt-get install --no-install-recommends -y \ cmake \ g++ \ diff --git a/dodona-haskell.dockerfile b/dodona-haskell.dockerfile index 7ceb298..f565209 100644 --- a/dodona-haskell.dockerfile +++ b/dodona-haskell.dockerfile @@ -1,6 +1,5 @@ FROM haskell:9.8.2 -# hadolint ignore=DL3008 RUN apt-get update \ # Install jq for json querying in bash # Install freeglut headers for gloss compilation diff --git a/dodona-python.dockerfile b/dodona-python.dockerfile index 484cc09..7102e24 100644 --- a/dodona-python.dockerfile +++ b/dodona-python.dockerfile @@ -1,6 +1,5 @@ FROM python:3.12.3-slim-bullseye -# hadolint ignore=DL3008 RUN chmod 711 /mnt && \ useradd -m runner && \ apt-get update && \ diff --git a/dodona-r.dockerfile b/dodona-r.dockerfile index def6df1..bc7c839 100644 --- a/dodona-r.dockerfile +++ b/dodona-r.dockerfile @@ -1,6 +1,5 @@ FROM r-base:4.4.0 -# hadolint ignore=DL3008 RUN apt-get update && \ apt-get install -y --no-install-recommends \ default-jdk \ diff --git a/dodona-tested.dockerfile b/dodona-tested.dockerfile index 1036229..3b28edf 100644 --- a/dodona-tested.dockerfile +++ b/dodona-tested.dockerfile @@ -2,10 +2,13 @@ FROM python:3.12.3-slim-bullseye # Environment Kotlin ENV SDKMAN_DIR /usr/local/sdkman +ENV HASKELL_DIR /usr/local/ghcupdir ENV PATH $SDKMAN_DIR/candidates/kotlin/current/bin:$PATH +ENV PATH $SDKMAN_DIR/candidates/java/current/bin:$PATH +ENV PATH $HASKELL_DIR/ghc/bin:$PATH +ENV PATH $HASKELL_DIR/cabal:$PATH ENV NODE_PATH /usr/lib/node_modules # Add manual directory for default-jdk -# hadolint ignore=DL3008 RUN mkdir -p /usr/share/man/man1mkdir -p /usr/share/man/man1 \ && apt-get update \ # Install additional dependencies @@ -17,41 +20,44 @@ RUN mkdir -p /usr/share/man/man1mkdir -p /usr/share/man/man1 \ unzip \ # Bash language dependencies bc binutils bsdmainutils cowsay ed figlet file toilet tree vim xxd \ + # Dependencies for GHCup + autoconf build-essential zlib1g-dev libgmp-dev \ && curl https://packages.microsoft.com/config/debian/11/packages-microsoft-prod.deb --output packages-microsoft-prod.deb \ && dpkg -i packages-microsoft-prod.deb \ && rm packages-microsoft-prod.deb \ - # Add nodejs v18 - && bash -c 'set -o pipefail && curl -fsSL https://deb.nodesource.com/setup_18.x | bash -' \ - # Install programming languages \ + # JavaScript dependencies + && bash -c 'set -o pipefail && curl -fsSL https://deb.nodesource.com/setup_22.x | bash -' \ + # Haskell dependencies + && bash -c "set -o pipefail && curl --proto '=https' --tlsv1.2 -sSf https://get-ghcup.haskell.org | BOOTSTRAP_HASKELL_NONINTERACTIVE=1 BOOTSTRAP_HASKELL_MINIMAL=1 sh" \ + && bash -c "source /root/.ghcup/env && ghcup install ghc 9.6 --isolate $HASKELL_DIR/ghc" \ + && bash -c "source /root/.ghcup/env && ghcup install cabal --isolate $HASKELL_DIR/cabal" \ + # Install programming languages \ && apt-get install -y --no-install-recommends \ - # TESTed Java and Kotlin judge dependency - openjdk-17-jdk \ - checkstyle=8.36.1-1 \ - # TESTed Haskell judge dependency - haskell-platform=2014.2.0.0.debian8 \ - hlint=3.1.6-1 \ + # Checkstyle, other Java stuff uses SDKMAN! below + checkstyle \ + hlint \ # TESTed C judge dependency - gcc=4:10.2.1-1 \ - cppcheck=2.3-1 \ + gcc \ + cppcheck \ # TESTed Javascript judge dependency nodejs \ # TESTed bash judge dependency - shellcheck=0.7.1-1+deb11u1 \ + shellcheck \ # C# dependency - dotnet-sdk-6.0=6.0.405-1 \ + dotnet-sdk-8.0 \ && apt-get clean \ && rm -rf /var/lib/apt/lists/* \ # TESTed Judge depencencies - && pip install --no-cache-dir --upgrade psutil==5.9.5 attrs==23.1.0 cattrs==23.1.2 jsonschema==4.19.1 typing_inspect==0.9.0 pyyaml==6.0.1 Pygments==2.16.1 python-i18n==0.3.9 pylint==3.0.1 \ + && pip install --no-cache-dir --upgrade psutil==5.9.8 attrs==23.2.0 cattrs==23.2.3 jsonschema==4.22.0 typing_inspect==0.9.0 pyyaml==6.0.1 Pygments==2.18.0 python-i18n==0.3.9 pylint==3.0.1 \ # TESTed Kotlin judge dependencies && bash -c 'set -o pipefail && curl -s "https://get.sdkman.io?rcupdate=false" | bash' \ && chmod a+x "$SDKMAN_DIR/bin/sdkman-init.sh" \ - && bash -c "source \"$SDKMAN_DIR/bin/sdkman-init.sh\" && sdk install kotlin 1.8.0" \ - && curl -sSLO https://github.com/pinterest/ktlint/releases/download/0.48.2/ktlint \ + && bash -c "source \"$SDKMAN_DIR/bin/sdkman-init.sh\" && sdk install java 21.0.3-tem && sdk install kotlin" \ + && curl -sSLO https://github.com/pinterest/ktlint/releases/download/1.2.1/ktlint \ && chmod a+x ktlint \ && mv ktlint /usr/local/bin \ # JavaScript dependencies - && npm install -g eslint@8.36 abstract-syntax-tree@2.17.6 \ + && npm install -g eslint@8.57 abstract-syntax-tree@2.22 \ # Haskell dependencies && cabal update \ && cabal v1-install --global aeson \