Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

SNOW-937199 Provide images for various OpenJDK docker images #1532

Closed
wants to merge 1 commit into from
Closed
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
28 changes: 19 additions & 9 deletions ci/_init.sh
Original file line number Diff line number Diff line change
@@ -1,4 +1,5 @@
#!/bin/bash -e
#!/usr/bin/env bash
set -e

export PLATFORM=$(echo $(uname) | tr '[:upper:]' '[:lower:]')
export INTERNAL_REPO=nexus.int.snowflakecomputing.com:8086
Expand All @@ -15,18 +16,27 @@ mkdir -p $WORKSPACE

export DRIVER_NAME=jdbc

# Build images
BUILD_IMAGE_VERSION=1

# Test Images
TEST_IMAGE_VERSION=1

declare -A BUILD_IMAGE_NAMES=(
)
export BUILD_IMAGE_NAMES

declare -A TEST_IMAGE_NAMES=(
[$DRIVER_NAME-centos6-default]=$DOCKER_REGISTRY_NAME/client-$DRIVER_NAME-centos6-default-test:$BUILD_IMAGE_VERSION
[$DRIVER_NAME-centos6-default]=$DOCKER_REGISTRY_NAME/client-$DRIVER_NAME-centos6-default-test:$TEST_IMAGE_VERSION
[$DRIVER_NAME-centos7-openjdk8]=$DOCKER_REGISTRY_NAME/client-$DRIVER_NAME-centos7-openjdk8-test:$TEST_IMAGE_VERSION
[$DRIVER_NAME-centos7-openjdk11]=$DOCKER_REGISTRY_NAME/client-$DRIVER_NAME-centos7-openjdk11-test:$TEST_IMAGE_VERSION
[$DRIVER_NAME-centos7-openjdk17]=$DOCKER_REGISTRY_NAME/client-$DRIVER_NAME-centos7-openjdk17-test:$TEST_IMAGE_VERSION
)
export TEST_IMAGE_NAMES

declare -A TEST_IMAGE_DOCKERFILES=(
[$DRIVER_NAME-centos6-default]=jdbc-centos6-default-test
[$DRIVER_NAME-centos7-openjdk8]=jdbc-centos7-openjdk-test
[$DRIVER_NAME-centos7-openjdk11]=jdbc-centos7-openjdk-test
[$DRIVER_NAME-centos7-openjdk17]=jdbc-centos7-openjdk-test
)

declare -A TEST_IMAGE_BUILD_ARGS=(
[$DRIVER_NAME-centos7-openjdk8]="--target jdbc-centos7-openjdk-yum --build-arg=JDK_PACKAGE=java-1.8.0-openjdk-devel"
[$DRIVER_NAME-centos7-openjdk11]="--target jdbc-centos7-openjdk-yum --build-arg=JDK_PACKAGE=java-11-openjdk-devel" # pragma: allowlist secret
[$DRIVER_NAME-centos7-openjdk17]="--target jdbc-centos7-openjdk17"
)

4 changes: 3 additions & 1 deletion ci/build.sh
Original file line number Diff line number Diff line change
@@ -1,4 +1,6 @@
#!/bin/bash -e
#!/usr/bin/env bash
set -e

#
# Build JDBC driver
#
Expand Down
1 change: 1 addition & 0 deletions ci/image/.gitignore
Original file line number Diff line number Diff line change
@@ -1,2 +1,3 @@
pom.xml
dependencies/
*.jar
91 changes: 91 additions & 0 deletions ci/image/Dockerfile.jdbc-centos7-openjdk-test
Original file line number Diff line number Diff line change
@@ -0,0 +1,91 @@
FROM centos:7 AS jdbc-centos7-openjdk-base
ARG JDK_PACKAGE

# update OS
RUN yum -y update && \
yum -y install epel-release && \
yum -y install centos-release-scl

# install Development tools
RUN yum -y groupinstall "Development Tools" && \
yum -y install zlib-devel which

# git
RUN curl -o - https://mirrors.edge.kernel.org/pub/software/scm/git/git-2.26.0.tar.gz | tar xfz - && \
cd git-2.26.0 && \
./configure --prefix=/opt/git && make && make install && \
ln -s /opt/git/bin/git /usr/local/bin/git

# python
RUN yum -y install rh-python36
COPY scripts/python3.6.sh /usr/local/bin/python3.6
COPY scripts/python3.6.sh /usr/local/bin/python3
sfc-gh-pmotacki marked this conversation as resolved.
Show resolved Hide resolved
RUN chmod a+x /usr/local/bin/python3.6 /usr/local/bin/python3
COPY scripts/pip.sh /usr/local/bin/pip
RUN chmod a+x /usr/local/bin/pip
RUN pip install -U pip
RUN pip install -U snowflake-connector-python

# aws
RUN pip install -U awscli
COPY scripts/aws.sh /usr/local/bin/aws
RUN chmod a+x /usr/local/bin/aws

# zstd
RUN yum -y install zstd

# jq
RUN yum -y install jq

# gosu
RUN curl -o /usr/local/bin/gosu -SL "https://github.com/tianon/gosu/releases/download/1.11/gosu-amd64"
RUN chmod +x /usr/local/bin/gosu
COPY scripts/entrypoint.sh /usr/local/bin/entrypoint.sh
RUN chmod +x /usr/local/bin/entrypoint.sh

# Maven
RUN curl -o - https://archive.apache.org/dist/maven/maven-3/3.6.3/binaries/apache-maven-3.6.3-bin.tar.gz | tar xfz - -C /opt && \
ln -s /opt/apache-maven-3.6.3/bin/mvn /usr/local/bin/mvn

# workspace
RUN mkdir -p /home/user && \
chmod 777 /home/user
WORKDIR /home/user

COPY pom.xml /root
COPY dependencies /root/dependencies

ENTRYPOINT ["/usr/local/bin/entrypoint.sh"]

###### OpenJDK from yum
FROM jdbc-centos7-openjdk-base AS jdbc-centos7-openjdk-yum

# Java
RUN yum -y install $JDK_PACKAGE

RUN echo export JAVA_HOME=$(dirname $(dirname $(readlink $(readlink $(which javac))))) >> /home/user/.bashrc

RUN cd /root && \
mvn -Dorg.slf4j.simpleLogger.log.org.apache.maven.cli.transfer.Slf4jMavenTransferListener=warn \
-Dnot-self-contained-jar \
--batch-mode --fail-never compile && \
mv $HOME/.m2 /home/user && \
chmod -R 777 /home/user/.m2

###### OpenJDK 17 from archive (not available in yum)
FROM jdbc-centos7-openjdk-base AS jdbc-centos7-openjdk17

# Java
RUN curl -o - https://download.java.net/java/GA/jdk17.0.2/dfd4a8d0985749f896bed50d7138ee7f/8/GPL/openjdk-17.0.2_linux-x64_bin.tar.gz | tar xfz - -C /opt && \
ln -s /opt/jdk-17.0.2 /opt/jdk-17

RUN echo export JAVA_HOME=/opt/jdk-17 >> /home/user/.bashrc
RUN echo export PATH=\$JAVA_HOME/bin:\$PATH >> /home/user/.bashrc

RUN export JAVA_HOME=/opt/jdk-17 && \
cd /root && \
mvn -Dorg.slf4j.simpleLogger.log.org.apache.maven.cli.transfer.Slf4jMavenTransferListener=warn \
-Dnot-self-contained-jar \
--batch-mode --fail-never compile && \
mv $HOME/.m2 /home/user && \
chmod -R 777 /home/user/.m2
20 changes: 8 additions & 12 deletions ci/image/build.sh
Original file line number Diff line number Diff line change
@@ -1,4 +1,5 @@
#!/bin/bash -e
#!/usr/bin/env bash
set -e
#
# Build Docker images
#
Expand All @@ -7,22 +8,17 @@ THIS_DIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )"
source $THIS_DIR/../_init.sh

cp -p $THIS_DIR/../../pom.xml $THIS_DIR
cp -rp $THIS_DIR/../../dependencies/ $THIS_DIR

for name in "${!BUILD_IMAGE_NAMES[@]}"; do
docker build \
--pull \
--file $THIS_DIR/Dockerfile.$name-build \
--label snowflake \
--label $DRIVER_NAME \
--tag ${BUILD_IMAGE_NAMES[$name]} .
done
mkdir -p dependencies && cp -rp $THIS_DIR/../../dependencies/ $THIS_DIR/dependencies

for name in "${!TEST_IMAGE_NAMES[@]}"; do
echo "Building $name"
docker build \
--progress=plain \
--platform=linux/x86_64 \
--pull \
--file $THIS_DIR/Dockerfile.$name-test \
--file $THIS_DIR/Dockerfile.$(echo ${TEST_IMAGE_DOCKERFILES[$name]}) \
--label snowflake \
--label $DRIVER_NAME \
$(echo ${TEST_IMAGE_BUILD_ARGS[$name]}) \
--tag ${TEST_IMAGE_NAMES[$name]} .
done
15 changes: 3 additions & 12 deletions ci/image/update.sh
Original file line number Diff line number Diff line change
@@ -1,4 +1,6 @@
#!/bin/bash -e
#!/usr/bin/env bash
set -e

#
# Build Docker images
#
Expand All @@ -12,17 +14,6 @@ source $THIS_DIR/../scripts/login_docker.sh
for image in $(docker images --format "{{.ID}},{{.Repository}}:{{.Tag}}" | grep "nexus.int.snowflakecomputing.com" | grep "client-$DRIVER_NAME"); do
target_id=$(echo $image | awk -F, '{print $1}')
target_name=$(echo $image | awk -F, '{print $2}')
for name in "${!BUILD_IMAGE_NAMES[@]}"; do
if [[ "$target_name" == "${BUILD_IMAGE_NAMES[$name]}" ]]; then
echo $name
docker_hub_image_name=$(echo ${BUILD_IMAGE_NAMES[$name]/$DOCKER_REGISTRY_NAME/snowflakedb})
set -x
docker tag $target_id $docker_hub_image_name
set +x
docker push "${BUILD_IMAGE_NAMES[$name]}"
docker push "$docker_hub_image_name"
fi
done
for name in "${!TEST_IMAGE_NAMES[@]}"; do
if [[ "$target_name" == "${TEST_IMAGE_NAMES[$name]}" ]]; then
echo $name
Expand Down
3 changes: 3 additions & 0 deletions ci/test.sh
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,9 @@
#
# Test JDBC
#

echo JAVA_HOME=$JAVA_HOME

set -o pipefail
THIS_DIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )"
JDBC_ROOT="$(cd "${THIS_DIR}/.." && pwd)"
Expand Down