Skip to content

Commit

Permalink
Add qodana-android for 2024.1
Browse files Browse the repository at this point in the history
  • Loading branch information
avafanasiev committed May 14, 2024
1 parent 754dec6 commit 0b71c30
Show file tree
Hide file tree
Showing 4 changed files with 278 additions and 0 deletions.
16 changes: 16 additions & 0 deletions 2024.1/android/.dockerignore
Original file line number Diff line number Diff line change
@@ -0,0 +1,16 @@
linux/amd64/remotedevelopment
linux/amd64/help
linux/amd64/web/asset-manifest.json
linux/amd64/web/preview.html
linux/amd64/Install-Linux-tar.txt
linux/amd64/build.txt
linux/arm64/remotedevelopment
linux/arm64/help
linux/arm64/web/asset-manifest.json
linux/arm64/web/preview.html
linux/arm64/Install-Linux-tar.txt
linux/arm64/build.txt
linux/amd64/plugins/*
linux/arm64/plugins/*
*.tar.gz
*.zip
122 changes: 122 additions & 0 deletions 2024.1/android/Dockerfile
Original file line number Diff line number Diff line change
@@ -0,0 +1,122 @@
ARG BASE_TAG="bullseye-slim"
ARG NODE_TAG="20-bullseye-slim"
FROM node:$NODE_TAG AS node_base
FROM debian:$BASE_TAG

# renovate: datasource=repology depName=debian_11/ca-certificates versioning=loose
ENV CA_CERTIFICATES_VERSION="20210119"
# renovate: datasource=repology depName=debian_11/curl versioning=loose
ENV CURL_VERSION="7.74.0-1.3+deb11u11"
# renovate: datasource=repology depName=debian_11/fontconfig versioning=loose
ENV FONTCONFIG_VERSION="2.13.1-4.2"
# renovate: datasource=repology depName=debian_11/git versioning=loose
ENV GIT_VERSION="1:2.30.2-1+deb11u2"
# renovate: datasource=repology depName=debian_11/git-lfs versioning=loose
ENV GIT_LFS_VERSION="2.13.2-1+b5"
# renovate: datasource=repology depName=debian_11/gnupg2 versioning=loose
ENV GNUPG2_VERSION="2.2.27-2+deb11u2"
# renovate: datasource=repology depName=debian_11/locales versioning=loose
ENV LOCALES_VERSION="2.31-13+deb11u8"
# renovate: datasource=repology depName=debian_11/procps versioning=loose
ENV PROCPS_VERSION="2:3.3.17-5"

ENV HOME="/root" \
LC_ALL="en_US.UTF-8" \
QODANA_DIST="/opt/idea" \
QODANA_DATA="/data" \
QODANA_DOCKER="true"
ENV JAVA_HOME="$QODANA_DIST/jbr" \
QODANA_CONF="$HOME/.config/idea" \
PATH="$QODANA_DIST/bin:$PATH"

# hadolint ignore=SC2174,DL3009
RUN --mount=target=/var/lib/apt/lists,type=cache,sharing=locked \
--mount=target=/var/cache/apt,type=cache,sharing=locked \
rm -f /etc/apt/apt.conf.d/docker-clean && \
mkdir -m 777 -p /opt $QODANA_DATA $QODANA_CONF && apt-get update && \
DEBIAN_FRONTEND=noninteractive apt-get install -y --no-install-recommends \
ca-certificates=$CA_CERTIFICATES_VERSION \
curl=$CURL_VERSION \
fontconfig=$FONTCONFIG_VERSION \
git=$GIT_VERSION \
git-lfs=$GIT_LFS_VERSION \
gnupg2=$GNUPG2_VERSION \
locales=$LOCALES_VERSION \
procps=$PROCPS_VERSION && \
echo 'en_US.UTF-8 UTF-8' > /etc/locale.gen && locale-gen && \
apt-get autoremove -y && apt-get clean && \
chmod 777 -R $HOME && \
echo 'root:x:0:0:root:/root:/bin/bash' > /etc/passwd && chmod 666 /etc/passwd && \
git config --global --add safe.directory '*' && \
mkdir -p -m 777 "$HOME/.m2" "$HOME/.m2/repository"

ENV GRADLE_USER_HOME="/data/cache/gradle"

ARG QD_RELEASE="2024.1"
ARG QD_BUILD="QDANDC-$QD_RELEASE"
# hadolint ignore=DL3003,SC2043
RUN set -ex && \
dpkgArch="$(dpkg --print-architecture)" && \
case "$dpkgArch" in \
"amd64") \
OS_ARCH_SUFFIX=""; \
;; \
"arm64") \
OS_ARCH_SUFFIX="-aarch64"; \
;; \
*) echo "Unsupported architecture $dpkgArch" >&2; exit 1 ;; \
esac && \
QD_NAME="qodana-$QD_BUILD$OS_ARCH_SUFFIX" \
QD_URL="https://download.jetbrains.com/qodana/$QD_RELEASE/$QD_NAME.tar.gz" && \
curl -fsSL "$QD_URL" -o "/tmp/$QD_NAME.tar.gz" \
"$QD_URL.sha256" -o "/tmp/$QD_NAME.tar.gz.sha256" \
"$QD_URL.sha256.asc" -o "/tmp/$QD_NAME.tar.gz.sha256.asc" && \
GNUPGHOME="$(mktemp -d)" && \
export GNUPGHOME && \
for key in \
"B46DC71E03FEEB7F89D1F2491F7A8F87B9D8F501" \
; do \
gpg --batch --keyserver "hkps://keys.openpgp.org" --recv-keys "$key" || \
gpg --batch --keyserver "keyserver.ubuntu.com" --recv-keys "$key" ; \
done && \
gpg --verify "/tmp/$QD_NAME.tar.gz.sha256.asc" "/tmp/$QD_NAME.tar.gz.sha256" && \
(cd /tmp && sha256sum --check --status "$QD_NAME.tar.gz.sha256") && \
mkdir -p /tmp/qd && tar -xzf "/tmp/$QD_NAME.tar.gz" --directory /tmp/qd --strip-components=1 && \
mv /tmp/qd/qodana-QD* "$QODANA_DIST" && \
chmod +x "$QODANA_DIST"/bin/*.sh "$QODANA_DIST"/bin/qodana && \
update-alternatives --install /usr/bin/java java "$JAVA_HOME/bin/java" 0 && \
update-alternatives --install /usr/bin/javac javac "$JAVA_HOME/bin/javac" 0 && \
update-alternatives --set java "$JAVA_HOME/bin/java" && \
update-alternatives --set javac "$JAVA_HOME/bin/javac" && \
apt-get purge --auto-remove -y gnupg2 && \
rm -rf /var/cache/apt /var/lib/apt/ /tmp/* "$GNUPGHOME"

ENV ANDROID_SDK_ROOT="/opt/android-sdk" ANDROID_USER_HOME="$QODANA_DATA/cache/android"
ENV ANDROID_HOME="$ANDROID_SDK_ROOT"
ENV ANDROID_SDK_TOOLS="$ANDROID_SDK_ROOT/cmdline-tools/tools/bin" QODANA_CORETTO_SDK="$QODANA_DATA/.jdks/corretto-11"
# IDE includes JDK17 by default since 2022, so we need additional JDK for the most projects
COPY --from=amazoncorretto:11.0.23 /usr/lib/jvm/java-11-amazon-corretto $QODANA_CORETTO_SDK

ARG ANDROID_SDK_VERSION="9123335"
ARG ANDROID_SDK_SHA256="0bebf59339eaa534f4217f8aa0972d14dc49e7207be225511073c661ae01da0a"
ARG ANDROID_API_LEVEL="33"
SHELL ["/bin/bash", "-o", "pipefail", "-c"]
# hadolint ignore=SC2174,DL3009
RUN --mount=target=/var/lib/apt/lists,type=cache,sharing=locked \
--mount=target=/var/cache/apt,type=cache,sharing=locked \
apt-get update && DEBIAN_FRONTEND=noninteractive apt-get install -y --no-install-recommends unzip=6.0-26+deb11u1 && \
mkdir -m 777 -p $QODANA_DATA/cache $ANDROID_USER_HOME $ANDROID_SDK_ROOT $ANDROID_SDK_ROOT/cmdline-tools $ANDROID_SDK_ROOT/platforms $ANDROID_SDK_ROOT/ndk && \
echo "${ANDROID_SDK_SHA256} /tmp/android.zip" > /tmp/shasum && \
curl -fsSL -o /tmp/android.zip \
"https://dl.google.com/android/repository/commandlinetools-linux-${ANDROID_SDK_VERSION}_latest.zip" && \
sha256sum --check --status /tmp/shasum && \
unzip -q /tmp/android.zip -d ${ANDROID_SDK_ROOT}/cmdline-tools && \
mv ${ANDROID_SDK_ROOT}/cmdline-tools/cmdline-tools ${ANDROID_SDK_ROOT}/cmdline-tools/tools && \
echo y | ${ANDROID_SDK_TOOLS}/sdkmanager "platforms;android-${ANDROID_API_LEVEL}" && \
chmod 777 -R $ANDROID_SDK_ROOT && \
apt-get purge --auto-remove -y unzip && \
rm -rf /tmp/*

LABEL maintainer="[email protected]" description="Qodana Community for Android (https://jb.gg/qodana-android)"
WORKDIR /data/project
ENTRYPOINT ["/opt/idea/bin/qodana"]
98 changes: 98 additions & 0 deletions 2024.1/android/included_plugins.txt
Original file line number Diff line number Diff line change
@@ -0,0 +1,98 @@
org.intellij.qodana
org.intellij.intelliLang
com.intellij.configurationScript
com.intellij.properties
com.intellij.platform.images
org.editorconfig.editorconfigjetbrains
org.jetbrains.plugins.yaml
org.jetbrains.plugins.textmate
com.jetbrains.sh
com.intellij.css
Git4Idea
hg4idea
HtmlTools
tanvd.grazi
com.intellij.database
intellij.grid.core.impl
intellij.grid.impl
intellij.charts
intellij.indexing.shared.core
intellij.indexing.shared
intellij.ktor
AntSupport
Coverage
DevKit
JUnit
Lombook Plugin
TestNG-J
XPathView
com.intellij.aop
com.intellij.beanValidation
com.intellij.cdi
com.intellij.configurationScript
com.intellij.css
com.intellij.dev
com.intellij.freemarker
com.intellij.gradle
com.intellij.hibernate
com.intellij.java
com.intellij.java-i18n
com.intellij.java.ide
com.intellij.javaee
com.intellij.javaee.jpa
com.intellij.javaee.web
com.intellij.javaee.el
com.intellij.jpa.jpb.model
com.intellij.jsp
com.intellij.microservices.jvm
com.intellij.persistence
com.intellij.platform.images
com.intellij.properties
com.intellij.reactivestreams
com.intellij.spring
com.intellij.spring.boot
com.intellij.spring.boot.initializr
com.intellij.spring.data
com.intellij.spring.integration
com.intellij.spring.messaging
com.intellij.spring.mvc
com.intellij.spring.security
com.intellij.spring.cloud
com.intellij.uiDesigner
com.intellij.velocity
org.intellij.groovy
org.jetbrains.idea.eclipse
org.jetbrains.idea.maven
org.jetbrains.idea.maven.ext
org.jetbrains.idea.gradle.ext
org.jetbrains.idea.gradle.dsl
org.jetbrains.idea.maven.model
org.jetbrains.idea.maven.server.api
org.jetbrains.idea.reposearch
org.jetbrains.kotlin
org.jetbrains.plugins.gradle
org.jetbrains.plugins.gradle.maven
com.jetbrains.restWebServices
org.jetbrains.plugins.gradle.dependency.updater
com.intellij.plugins.dependencyAnalysis
org.jetbrains.security.package-checker
com.intellij.microservices.ui
NodeJS
JavaScriptDebugger
JavaScript
JSIntentionPowerPack
com.intellij.plugins.webcomponents
Karma
XPathView
com.intellij.css
org.jetbrains.plugins.less
org.jetbrains.plugins.sass
org.jetbrains.plugins.vue
org.intellij.plugins.postcss
intellij.webpack
com.jetbrains.restClient
org.toml.lang
com.intellij.jvm.dfa.analysis
org.jetbrains.android
com.android.tools.idea.smali
intellij.webp
42 changes: 42 additions & 0 deletions 2024.1/android/internal.Dockerfile
Original file line number Diff line number Diff line change
@@ -0,0 +1,42 @@
FROM registry.jetbrains.team/p/sa/containers/qodana:debian-base-241

ARG TARGETPLATFORM
ARG DEVICEID
ENV DEVICEID=$DEVICEID
COPY $TARGETPLATFORM $QODANA_DIST
RUN chmod +x $QODANA_DIST/bin/*.sh $QODANA_DIST/bin/qodana && \
update-alternatives --install /usr/bin/java java $JAVA_HOME/bin/java 0 && \
update-alternatives --install /usr/bin/javac javac $JAVA_HOME/bin/javac 0 && \
update-alternatives --set java $JAVA_HOME/bin/java && \
update-alternatives --set javac $JAVA_HOME/bin/javac && \
rm -rf /var/cache/apt /var/lib/apt/ /tmp/*

ENV ANDROID_SDK_ROOT="/opt/android-sdk" ANDROID_USER_HOME="$QODANA_DATA/cache/android"
ENV ANDROID_HOME="$ANDROID_SDK_ROOT"
ENV ANDROID_SDK_TOOLS="$ANDROID_SDK_ROOT/cmdline-tools/tools/bin" QODANA_CORETTO_SDK="$QODANA_DATA/.jdks/corretto-11"
# IDE includes JDK17 by default since 2022, so we need additional JDK for the most projects
COPY --from=amazoncorretto:11.0.23 /usr/lib/jvm/java-11-amazon-corretto $QODANA_CORETTO_SDK

ARG ANDROID_SDK_VERSION="9123335"
ARG ANDROID_SDK_SHA256="0bebf59339eaa534f4217f8aa0972d14dc49e7207be225511073c661ae01da0a"
ARG ANDROID_API_LEVEL="33"
SHELL ["/bin/bash", "-o", "pipefail", "-c"]
# hadolint ignore=SC2174
RUN --mount=target=/var/lib/apt/lists,type=cache,sharing=locked \
--mount=target=/var/cache/apt,type=cache,sharing=locked \
apt-get update && DEBIAN_FRONTEND=noninteractive apt-get install -y --no-install-recommends unzip=6.0-26+deb11u1 && \
mkdir -m 777 -p $QODANA_DATA/cache $ANDROID_USER_HOME $ANDROID_SDK_ROOT $ANDROID_SDK_ROOT/cmdline-tools $ANDROID_SDK_ROOT/platforms $ANDROID_SDK_ROOT/ndk && \
echo "${ANDROID_SDK_SHA256} /tmp/android.zip" > /tmp/shasum && \
curl -fsSL -o /tmp/android.zip \
"https://dl.google.com/android/repository/commandlinetools-linux-${ANDROID_SDK_VERSION}_latest.zip" && \
sha256sum --check --status /tmp/shasum && \
unzip -q /tmp/android.zip -d ${ANDROID_SDK_ROOT}/cmdline-tools && \
mv ${ANDROID_SDK_ROOT}/cmdline-tools/cmdline-tools ${ANDROID_SDK_ROOT}/cmdline-tools/tools && \
echo y | ${ANDROID_SDK_TOOLS}/sdkmanager "platforms;android-${ANDROID_API_LEVEL}" && \
chmod 777 -R $ANDROID_SDK_ROOT && \
apt-get purge --auto-remove -y unzip && \
rm -rf /tmp/*

LABEL maintainer="[email protected]" description="Qodana Community for Android (https://jb.gg/qodana-android)"
WORKDIR /data/project
ENTRYPOINT ["/opt/idea/bin/qodana"]

0 comments on commit 0b71c30

Please sign in to comment.