From 759e358835b497946b6806f6c0dac777e055239d Mon Sep 17 00:00:00 2001 From: Gabo Date: Fri, 3 Jul 2020 17:37:17 -0500 Subject: [PATCH] Rework to use dependencies and docker binaries --- Dockerfile | 139 ++++++++++++++++++----------------------------------- 1 file changed, 47 insertions(+), 92 deletions(-) diff --git a/Dockerfile b/Dockerfile index 355afbff..5ec35c14 100644 --- a/Dockerfile +++ b/Dockerfile @@ -28,10 +28,6 @@ ARG PSSA_VERSION='latest' # arm-ttk ARG ARM_TTK_URI='https://github.com/Azure/arm-ttk.git' ARG ARM_TTK_DIRECTORY='/opt/microsoft/arm-ttk' -# clj-kondo -ARG CLJ_KONDO_VERSION='2020.06.21' -# Go Linter -ARG GO_VERSION='v1.27.0' # Raku Linter ARG RAKU_VER="2020.06" ARG RAKU_INSTALL_PATH=/usr @@ -41,19 +37,49 @@ ARG RAKUBREW_HOME=/tmp/rakubrew # Run APK installs # #################### RUN apk add --no-cache \ - bash git git-lfs musl-dev curl gcc jq file\ + bash curl \ + gcc go \ + icu-libs jq libxml2-utils make musl-dev \ npm nodejs \ - libxml2-utils perl \ - ruby ruby-dev ruby-bundler ruby-rdoc make \ - py3-setuptools ansible-lint \ - go \ openjdk8-jre \ - php7 \ - ca-certificates less ncurses-terminfo-base \ - krb5-libs libgcc libintl libssl1.1 libstdc++ \ - tzdata userspace-rcu zlib icu-libs lttng-ust \ - libffi-dev openssl-dev + perl php7 \ + py3-setuptools ansible-lint \ + ruby ruby-dev ruby-bundler ruby-rdoc +######################################## +# Copy dependencies files to container # +######################################## +COPY dependencies/* / + +################################ +# Installs python dependencies # +################################ +RUN pip3 install --no-cache-dir pipenv +RUN pipenv install --system + +#################### +# Run NPM Installs # +#################### +RUN npm config set package-lock false \ + && npm config set loglevel error \ + && npm --no-cache install + +############################# +# Add node packages to path # +############################# +ENV PATH="/node_modules/.bin:${PATH}" + +#################### +# Run GEM installs # +#################### +RUN gem install rubocop:0.74.0 rubocop-rails rubocop-github:0.13.0 + +# Need to fix the version as it installs 'rubocop:0.85.1' as a dep, and forces the default +# We then need to promote the correct version, uninstall, and fix deps +RUN sh -c 'INCORRECT_VERSION=$(gem list rhc -e rubocop | grep rubocop | awk "{print $2}" | cut -d"(" -f2 | cut -d"," -f1); \ + gem install --default rubocop:0.74.0; \ + yes | gem uninstall rubocop:$INCORRECT_VERSION -a -x -I; \ + gem install rubocop:0.74.0' ######################################### # Install Powershell + PSScriptAnalyzer # @@ -81,105 +107,35 @@ ENV ARM_TTK_PSD1="${ARM_TTK_DIRECTORY}/arm-ttk/arm-ttk.psd1" RUN git clone "${ARM_TTK_URI}" "${ARM_TTK_DIRECTORY}" \ && ln -sTf "$ARM_TTK_PSD1" /usr/bin/arm-ttk -##################### -# Run Pip3 Installs # -##################### -RUN pip3 --no-cache-dir install --upgrade --no-cache-dir \ - yamllint pylint yq cfn-lint shyaml - -#################### -# Run NPM Installs # -#################### -RUN npm config set package-lock false \ - && npm config set loglevel error \ - && npm -g --no-cache install \ - markdownlint-cli \ - jsonlint prettyjson \ - @coffeelint/cli \ - typescript eslint \ - standard \ - babel-eslint \ - @typescript-eslint/eslint-plugin \ - @typescript-eslint/parser \ - eslint-plugin-jest \ - stylelint \ - stylelint-config-standard \ - @stoplight/spectral \ - htmlhint \ - && npm --no-cache install \ - markdownlint-cli \ - jsonlint prettyjson \ - @coffeelint/cli \ - typescript eslint \ - standard \ - babel-eslint \ - prettier \ - eslint-config-prettier \ - @typescript-eslint/eslint-plugin \ - @typescript-eslint/parser \ - eslint-plugin-jest \ - stylelint \ - stylelint-config-standard \ - htmlhint - -#################################### -# Install dockerfilelint from repo # -#################################### -RUN git clone https://github.com/replicatedhq/dockerfilelint.git && cd /dockerfilelint && npm install - - # I think we could fix this with path but not sure the language... - # https://github.com/nodejs/docker-node/blob/master/docs/BestPractices.md - -#################### -# Run GEM installs # -#################### -RUN gem install rubocop:0.74.0 rubocop-rails rubocop-github:0.13.0 - -# Need to fix the version as it installs 'rubocop:0.85.1' as a dep, and forces the default -# We then need to promote the correct version, uninstall, and fix deps -RUN sh -c 'INCORRECT_VERSION=$(gem list rhc -e rubocop | grep rubocop | awk "{print $2}" | cut -d"(" -f2 | cut -d"," -f1); \ - gem install --default rubocop:0.74.0; \ - yes | gem uninstall rubocop:$INCORRECT_VERSION -a -x -I; \ - gem install rubocop:0.74.0' - ###################### # Install shellcheck # ###################### -RUN wget -qO- "https://github.com/koalaman/shellcheck/releases/download/stable/shellcheck-stable.linux.x86_64.tar.xz" | tar -xJv \ - && mv "shellcheck-stable/shellcheck" /usr/bin/ +COPY --from=koalaman/shellcheck:stable /bin/shellcheck /usr/bin/ ##################### # Install Go Linter # ##################### -RUN wget -O- -nvq https://raw.githubusercontent.com/golangci/golangci-lint/master/install.sh | sh -s "$GO_VERSION" +COPY --from=golangci/golangci-lint:v1.27.0 /usr/bin/golangci-lint /usr/bin/ ################## # Install TFLint # ################## -RUN curl -Ls "$(curl -Ls https://api.github.com/repos/terraform-linters/tflint/releases/latest | grep -o -E "https://.+?_linux_amd64.zip")" -o tflint.zip && unzip tflint.zip && rm tflint.zip \ - && mv "tflint" /usr/bin/ +COPY --from=wata727/tflint:0.16.2 /usr/local/bin/tflint /usr/bin/ ###################### # Install protolint # ###################### -RUN curl -LsS "$(curl -Ls https://api.github.com/repos/yoheimuta/protolint/releases/latest | grep -o -E "https://.+?_Linux_x86_64.tar.gz")" -o protolint.tar.gz \ - && tar -xzf protolint.tar.gz \ - && rm protolint.tar.gz \ - && mv "protolint" /usr/bin/ +COPY --from=yoheimuta/protolint:v0.25.1 /usr/local/bin/protolint /usr/bin/ ######################### # Install dotenv-linter # ######################### -RUN wget "https://github.com/dotenv-linter/dotenv-linter/releases/latest/download/dotenv-linter-alpine-x86_64.tar.gz" -O - -q | tar -xzf - \ - && mv "dotenv-linter" /usr/bin +COPY --from=dotenvlinter/dotenv-linter:2.0.0 /dotenv-linter /usr/bin/ ##################### # Install clj-kondo # ##################### -RUN curl -sLO https://github.com/borkdude/clj-kondo/releases/download/v${CLJ_KONDO_VERSION}/clj-kondo-${CLJ_KONDO_VERSION}-linux-static-amd64.zip \ - && unzip clj-kondo-${CLJ_KONDO_VERSION}-linux-static-amd64.zip \ - && rm clj-kondo-${CLJ_KONDO_VERSION}-linux-static-amd64.zip \ - && mv clj-kondo /usr/bin/ +COPY --from=borkdude/clj-kondo:2020.06.21 /usr/local/bin/clj-kondo /usr/bin/ ################## # Install ktlint # @@ -208,8 +164,7 @@ RUN mkdir -p $RAKUBREW_HOME/bin \ ################################ # Install editorconfig-checker # ################################ -RUN wget -qO- "https://github.com/editorconfig-checker/editorconfig-checker/releases/latest/download/ec-linux-amd64.tar.gz" | tar -xzf - \ - && mv "bin/ec-linux-amd64" /usr/bin/editorconfig-checker +COPY --from=mstruebing/editorconfig-checker:2.1.0 /usr/bin/ec /usr/bin/editorconfig-checker ########################################### # Load GitHub Env Vars for GitHub Actions #