-
Notifications
You must be signed in to change notification settings - Fork 7
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
QD-10347 Add Dockerfiles to 2024.3 image builds
- Loading branch information
1 parent
3e0778a
commit be32f7b
Showing
12 changed files
with
1,227 additions
and
0 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,105 @@ | ||
ARG BASE_TAG="bullseye-slim" | ||
ARG NODE_TAG="20-bullseye-slim" | ||
FROM node:$NODE_TAG AS node_base | ||
FROM debian:$BASE_TAG | ||
|
||
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 \ | ||
curl \ | ||
fontconfig \ | ||
git \ | ||
git-lfs \ | ||
gnupg2 \ | ||
locales \ | ||
procps && \ | ||
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.3" | ||
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 && \ | ||
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.24 /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"] |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,105 @@ | ||
ARG BASE_TAG="bullseye-slim" | ||
ARG NODE_TAG="20-bullseye-slim" | ||
FROM node:$NODE_TAG AS node_base | ||
FROM debian:$BASE_TAG | ||
|
||
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 \ | ||
curl \ | ||
fontconfig \ | ||
git \ | ||
git-lfs \ | ||
gnupg2 \ | ||
locales \ | ||
procps && \ | ||
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.3" | ||
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 && \ | ||
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.24 /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"] |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,109 @@ | ||
ARG BASE_TAG="bookworm-slim" | ||
FROM debian:$BASE_TAG | ||
ARG CLANG="16" | ||
|
||
ENV HOME="/root" \ | ||
LC_ALL="en_US.UTF-8" \ | ||
QODANA_DATA="/data" \ | ||
QODANA_DOCKER="true" \ | ||
PATH="/opt/qodana:${PATH}" | ||
|
||
ENV CXX="/usr/lib/llvm-$CLANG/bin/clang++" \ | ||
CC="/usr/lib/llvm-$CLANG/bin/clang" \ | ||
CPLUS_INCLUDE_PATH="/usr/lib/clang/$CLANG/include" | ||
|
||
# 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 $QODANA_DATA/project $QODANA_DATA/cache $QODANA_DATA/results && apt-get update && \ | ||
DEBIAN_FRONTEND=noninteractive apt-get install -y --no-install-recommends \ | ||
ca-certificates \ | ||
curl \ | ||
default-jre \ | ||
git \ | ||
git-lfs \ | ||
gnupg2 \ | ||
apt-transport-https \ | ||
autoconf \ | ||
automake \ | ||
cmake \ | ||
dpkg-dev \ | ||
file \ | ||
make \ | ||
patch \ | ||
libc6-dev \ | ||
locales && \ | ||
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 '*' | ||
|
||
RUN echo "deb https://apt.llvm.org/bookworm/ llvm-toolchain-bookworm-${CLANG} main" > /etc/apt/sources.list.d/llvm.list && \ | ||
curl -s https://apt.llvm.org/llvm-snapshot.gpg.key | gpg --dearmor > /etc/apt/trusted.gpg.d/llvm.gpg && \ | ||
apt-key adv --keyserver keyserver.ubuntu.com --recv-keys "15CF4D18AF4F7421" && \ | ||
apt-get -qq update && \ | ||
apt-get install -qqy -t \ | ||
llvm-toolchain-bookworm-$CLANG \ | ||
clang-$CLANG \ | ||
clang-tidy-$CLANG \ | ||
clang-format-$CLANG \ | ||
lld-$CLANG \ | ||
libc++-$CLANG-dev \ | ||
libc++abi-$CLANG-dev && \ | ||
for f in /usr/lib/llvm-$CLANG/bin/*; do ln -sf "$f" /usr/bin; done && \ | ||
ln -sf clang /usr/bin/cc && \ | ||
ln -sf clang /usr/bin/c89 && \ | ||
ln -sf clang /usr/bin/c99 && \ | ||
ln -sf clang++ /usr/bin/c++ && \ | ||
ln -sf clang++ /usr/bin/g++ && \ | ||
rm -rf /var/lib/apt/lists/* && \ | ||
apt-get autoremove -y && apt-get clean | ||
|
||
RUN apt-get update && \ | ||
apt-get install -y sudo && \ | ||
useradd -m -u 1001 -U qodana && \ | ||
passwd -d qodana && \ | ||
echo 'qodana ALL=(ALL) NOPASSWD:ALL' >> /etc/sudoers | ||
|
||
ARG QD_RELEASE="2024.3" | ||
ARG QD_BUILD="QDCL-$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 /opt/qodana && \ | ||
mv /opt/qodana/qodana-clang /opt/qodana/qodana && \ | ||
chmod +x /opt/qodana/qodana && \ | ||
apt-get purge --auto-remove -y gnupg2 && \ | ||
rm -rf /var/cache/apt /var/lib/apt/ /tmp/* "$GNUPGHOME" | ||
|
||
ENV PATH="/opt/qodana:${PATH}" | ||
|
||
LABEL maintainer="[email protected]" description="Qodana for C/C++ (CMake)" | ||
WORKDIR /data/project | ||
ENTRYPOINT ["qodana", "scan"] |
Oops, something went wrong.