Skip to content

Commit

Permalink
Merge pull request #663 from kbase/compile_and_run_java_11
Browse files Browse the repository at this point in the history
Migrate to Java 11
  • Loading branch information
ialarmedalien authored Feb 9, 2023
2 parents 5a56596 + 45498a6 commit d45e317
Show file tree
Hide file tree
Showing 12 changed files with 331 additions and 107 deletions.
33 changes: 27 additions & 6 deletions .github/workflows/test.yml
Original file line number Diff line number Diff line change
Expand Up @@ -18,27 +18,48 @@ on:
# TODO split tests into mongo related & non mongo related. Run the former once.
jobs:

workspace_container_tests:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v3

- name: Set up Python 3.10
uses: actions/setup-python@v3
with:
python-version: "3.10"

- name: Install dependencies and set up test config
shell: bash
run: |
# set up python dependencies
pip install pytest requests
- name: Run tests
shell: bash
run: |
sh scripts/run_tests.sh
workspace_deluxe_tests:
runs-on: ubuntu-latest
strategy:
fail-fast: false
matrix:
include:
- java: '8'
- java: '11'
mongo: 'mongodb-linux-x86_64-3.6.23'
minio: '2019-05-23T00-29-34Z'
wired_tiger: 'false'
wired_tiger: 'true'
ant_test: 'test_quick_coverage'
# the current production setup
- java: '11'
mongo: 'mongodb-linux-x86_64-3.6.23'
mongo: 'mongodb-linux-x86_64-3.6.13'
minio: '2019-05-23T00-29-34Z'
wired_tiger: 'true'
wired_tiger: 'false'
ant_test: 'test_quick_coverage'

steps:
- uses: actions/checkout@v3

- name: Setup java
- name: Set up java
uses: actions/setup-java@v3
with:
distribution: 'temurin'
Expand Down
41 changes: 29 additions & 12 deletions Dockerfile
Original file line number Diff line number Diff line change
@@ -1,29 +1,47 @@
FROM kbase/sdkbase2 as build
FROM eclipse-temurin:11-jdk as build

COPY . /tmp/workspace_deluxe
RUN pip install configobj && \
cd /tmp && \
WORKDIR /tmp
RUN apt-get update -y && \
apt-get install -y ant git ca-certificates python3-sphinx && \
git clone https://github.com/kbase/jars && \
cd workspace_deluxe && \
make docker_deps

FROM kbase/kb_jre
# updated/slimmed down version of what's in kbase/kb_jre
FROM ubuntu:18.04

# These ARGs values are passed in via the docker build command
ARG BUILD_DATE
ARG VCS_REF
ARG BRANCH=develop

COPY --from=build /tmp/workspace_deluxe/deployment/ /kb/deployment/

RUN /usr/bin/tomcat8-instance-create /kb/deployment/services/workspace/tomcat && \
mv /kb/deployment/services/workspace/WorkspaceService.war /kb/deployment/services/workspace/tomcat/webapps/ROOT.war && \
rm -rf /kb/deployment/services/workspace/tomcat/webapps/ROOT

# Must set catalina_base to match location of tomcat8-instance-create dir
# before calling /usr/share/tomcat8/bin/catalina.sh
ENV CATALINA_BASE /kb/deployment/services/workspace/tomcat
ENV KB_DEPLOYMENT_CONFIG /kb/deployment/conf/deployment.cfg
ENV DOCKERIZE_VERSION linux-amd64-v0.6.1
ENV TOMCAT_VERSION tomcat8
USER root

RUN mkdir -p /var/lib/apt/lists/partial && \
apt-get update -y && \
apt-get install --no-install-recommends -y ca-certificates ${TOMCAT_VERSION}-user libservlet3.1-java wget && \
update-ca-certificates && \
apt-get clean && \
useradd -c "KBase user" -rd /kb/deployment/ -u 998 -s /bin/bash kbase && \
mkdir -p /kb/deployment/bin && \
chown -R kbase /kb/deployment && \
cd /kb/deployment/bin && \
wget -N https://github.com/kbase/dockerize/raw/master/dockerize-${DOCKERIZE_VERSION}.tar.gz && \
tar xvzf dockerize-${DOCKERIZE_VERSION}.tar.gz && \
rm dockerize-${DOCKERIZE_VERSION}.tar.gz

COPY --from=build /tmp/workspace_deluxe/deployment/ /kb/deployment/

RUN /usr/bin/${TOMCAT_VERSION}-instance-create /kb/deployment/services/workspace/tomcat && \
mv /kb/deployment/services/workspace/WorkspaceService.war /kb/deployment/services/workspace/tomcat/webapps/ROOT.war && \
rm -rf /kb/deployment/services/workspace/tomcat/webapps/ROOT

# The BUILD_DATE value seem to bust the docker cache when the timestamp changes, move to
# the end
Expand All @@ -32,7 +50,7 @@ LABEL org.label-schema.build-date=$BUILD_DATE \
org.label-schema.vcs-ref=$VCS_REF \
org.label-schema.schema-version="1.0.0-rc1" \
us.kbase.vcs-branch=$BRANCH \
maintainer="Steve Chan sychan@lbl.gov"
maintainer="KBase developers engage@kbase.us"

EXPOSE 7058
ENTRYPOINT [ "/kb/deployment/bin/dockerize" ]
Expand All @@ -45,4 +63,3 @@ CMD [ "-template", "/kb/deployment/conf/.templates/deployment.cfg.templ:/kb/depl
"-stdout", "/kb/deployment/services/workspace/tomcat/logs/catalina.out", \
"-stdout", "/kb/deployment/services/workspace/tomcat/logs/access.log", \
"/usr/share/tomcat8/bin/catalina.sh", "run" ]

21 changes: 9 additions & 12 deletions Makefile
Original file line number Diff line number Diff line change
Expand Up @@ -9,7 +9,7 @@ URL = https://kbase.us/services/ws/
TARGET ?= /kb/deployment

GITCOMMIT := $(shell git rev-parse --short HEAD)
#TODO use --points-at when git 1.7.10 available
#TODO use --points-at when git 1.7.10 available
TAGS := $(shell git tag --contains $(GITCOMMIT))

DEPLOY_RUNTIME ?= /kb/runtime
Expand All @@ -32,15 +32,15 @@ build-libs:
$(ANT) compile

build-docs:
-rm -r docs
-rm -r docs
$(ANT) javadoc
pod2html --infile=lib/Bio/KBase/$(SERVICE)/Client.pm --outfile=docs/$(SERVICE)_perl.html
rm -f pod2htm?.tmp
sphinx-build docsource/ docs
cp $(SERVICE).spec docs/.
cp docshtml/* docs/.

docker_deps: build-libs build-docs
docker_deps: build-libs build-docs
$(ANT) buildwar
# cp server_scripts/glassfish_administer_service.py deployment/bin
# chmod 755 deployment/bin/glassfish_administer_service.py
Expand All @@ -49,9 +49,6 @@ docker_deps: build-libs build-docs

compile: compile-typespec compile-typespec-java compile-html

compile-java-client:
$(ANT) compile_client

compile-html:
kb-sdk compile --html --out docshtml $(SERVICE).spec

Expand All @@ -73,7 +70,7 @@ test: test-service

test-service:
$(ANT) test

test-quick:
$(ANT) test_quick

Expand Down Expand Up @@ -115,16 +112,16 @@ deploy-upstart:
echo "# shell> groupadd kbase" >> /etc/init/$(SERVICE).conf
echo "# shell> useradd -r -g $(SERVICE_USER) $(SERVICE_USER)" >> /etc/init/$(SERVICE).conf
echo "#" >> /etc/init/$(SERVICE).conf
echo "start on runlevel [23] and started shock" >> /etc/init/$(SERVICE).conf
echo "stop on runlevel [!23]" >> /etc/init/$(SERVICE).conf
echo "pre-start exec chown -R $(SERVICE_USER) $(TARGET)/services/$(SERVICE)" >> /etc/init/$(SERVICE).conf
echo "exec su kbase -c '$(TARGET)/services/$(SERVICE)/start_service'" >> /etc/init/$(SERVICE).conf
echo "start on runlevel [23] and started shock" >> /etc/init/$(SERVICE).conf
echo "stop on runlevel [!23]" >> /etc/init/$(SERVICE).conf
echo "pre-start exec chown -R $(SERVICE_USER) $(TARGET)/services/$(SERVICE)" >> /etc/init/$(SERVICE).conf
echo "exec su kbase -c '$(TARGET)/services/$(SERVICE)/start_service'" >> /etc/init/$(SERVICE).conf

undeploy:
-rm -rf $(SERVICE_DIR)
-rm -rfv $(TARGET)/lib/Bio/KBase/$(SERVICE)
-rm -rfv $(TARGET)/lib/biokbase/$(SERVICE)
-rm -rfv $(TARGET)/lib/javascript/$(SERVICE)
-rm -rfv $(TARGET)/lib/javascript/$(SERVICE)
-rm -rfv $(TARGET)/lib/$(CLIENT_JAR)

clean:
Expand Down
40 changes: 10 additions & 30 deletions build.xml
Original file line number Diff line number Diff line change
Expand Up @@ -16,12 +16,12 @@
<property name="doc_server_doc_loc" location="/server_docs"/>
<property name="tempunpack" location="unpackedjars"/>
<property name="classes" location="classes"/>
<property name="client_classes" location="client_classes"/>
<property name="jar.file" value="WorkspaceService.jar"/>
<property name="war.file" value="WorkspaceService.war"/>
<property name="clientjar.file" value="WorkspaceClient.jar"/>
<property name="war.dir" value="war"/>
<property name="test.reports.dir" location="test-reports"/>
<property name="jackson.version" value="2.9.9"/>

<fileset dir="${jardir}" id="sourceslib">
<include name="kbase/common/kbase-common-0.1.1.jar"/>
Expand All @@ -43,9 +43,9 @@
<!-- joda is required for kbase-common -->
<include name="joda/joda-time-2.2.jar"/>
<include name="kbase/auth/kbase-auth-0.4.4.jar"/>
<include name="jackson/jackson-annotations-2.9.9.jar"/>
<include name="jackson/jackson-core-2.9.9.jar"/>
<include name="jackson/jackson-databind-2.9.9.jar"/>
<include name="jackson/jackson-annotations-${jackson.version}.jar"/>
<include name="jackson/jackson-core-${jackson.version}.jar"/>
<include name="jackson/jackson-databind-${jackson.version}.jar"/>
</fileset>

<fileset dir="${jardir}" id="shocklib">
Expand Down Expand Up @@ -176,33 +176,13 @@
<mkdir dir="${test.reports.dir}/html"/>
</target>

<target name="compile_client" description="compile only the client">
<mkdir dir="${client_classes}"/>
<javac destdir="${client_classes}" includeantruntime="false" target="1.6" source="1.6"
debug="true" classpathref="compile.classpath">
<src path="${src}"/>
<exclude name="AllWorkspaceTestsRunner.java"/>
<exclude name="us/kbase/typedobj/**"/>
<exclude name="us/kbase/common/**"/>
<exclude name="us/kbase/workspace/WorkspaceServer.java"/>
<exclude name="us/kbase/workspace/database/**"/>
<exclude name="us/kbase/workspace/docserver/**"/>
<exclude name="us/kbase/workspace/exceptions/**"/>
<exclude name="us/kbase/workspace/kbase/**"/>
<exclude name="us/kbase/workspace/test/**"/>
<exclude name="us/kbase/workspace/lib/**"/>
</javac>
<jar destfile="${dist}/client/${clientjar.file}" basedir="${client_classes}"/>
<delete dir="${client_classes}"/>
</target>

<target name="compile" depends="init" description="compile the source">
<!-- Compile class files-->
<javac
destdir="${classes}"
includeantruntime="false"
target="1.8"
source="1.8"
target="11"
source="11"
encoding="UTF-8"
debug="true"
classpathref="compile.classpath">
Expand Down Expand Up @@ -262,10 +242,10 @@
<javadoc access="protected" author="false" classpathref="compile.classpath"
destdir="${doc}" nodeprecated="false" nodeprecatedlist="false"
noindex="false" nonavbar="false" notree="false"
source="1.8" splitindex="true" use="true" version="true">
<link href="http://download.oracle.com/javase/8/docs/api/"/>
<link href="http://fasterxml.github.io/jackson-core/javadoc/2.2.0/"/>
<link href="http://fasterxml.github.io/jackson-databind/javadoc/2.2.0/"/>
source="11" splitindex="true" use="true" version="true">
<link href="http://download.oracle.com/javase/11/docs/api/"/>
<link href="https://www.javadoc.io/doc/com.fasterxml.jackson.core/jackson-core/${jackson.version}/"/>
<link href="https://www.javadoc.io/doc/com.fasterxml.jackson.core/jackson-databind/${jackson.version}/"/>
<fileset refid="client-jdoc-files"/>
<fileset refid="sources-jdoc-files"/>
</javadoc>
Expand Down
6 changes: 3 additions & 3 deletions deployment/conf/.templates/deployment.cfg.templ
Original file line number Diff line number Diff line change
@@ -1,9 +1,11 @@
[Workspace]
mongodb-database={{ default .Env.mongodb_database "workspace" }}
mongodb-host={{ default .Env.mongodb_host "ci-mongo" }}
mongodb-user={{ default .Env.mongodb_user "wsserv" }}
mongodb-pwd={{ default .Env.mongodb_pwd "" }}
mongodb-type-database={{ default .Env.mongodb_type_database "workspace_type_db" }}
type-delegation-target={{ default .Env.type_delegation_target "" }}
mongodb-retrywrites={{ default .Env.mongodb_retrywrites "false" }}
mongodb-pwd={{ default .Env.mongodb_pwd "" }}
ws-admin={{ default .Env.ws_admin "scanonadmin" }}
# backend user is wstest globus user in ci
# use that acct to generate token
Expand All @@ -17,8 +19,6 @@ backend-trust-all-ssl-certificates={{ default .Env.backend_trust_all_ssl_certifi
bytestream-url={{ default .Env.bytestream_url ""}}
bytestream-token={{ default .Env.bytestream_token "" }}
bytestream-user={{ default .Env.bytestream_user "" }}
mongodb-host={{ default .Env.mongodb_host "ci-mongo" }}
mongodb-user={{ default .Env.mongodb_user "wsserv" }}
service-port={{ default .Env.service_port "7058" }}
max-memory={{ default .Env.max_memory "15000" }}
min-memory={{ default .Env.min_memory "10000" }}
Expand Down
21 changes: 0 additions & 21 deletions deployment/conf/.templates/setenv.sh.templ
Original file line number Diff line number Diff line change
@@ -1,28 +1,7 @@
#!/bin/sh
#

CATALINA_HOME=/usr/share/tomcat8

# The first existing directory is used for JAVA_HOME (if JAVA_HOME is not
# defined in $DEFAULT)
JDK_DIRS="/usr/lib/jvm/java-8-openjdk-amd64 /usr/lib/jvm/jre-8-oracle-x64"

# Look for the right JVM to use
for jdir in $JDK_DIRS; do
if [ -r "$jdir/bin/java" -a -z "${JAVA_HOME}" ]; then
JAVA_HOME_TMP="$jdir"
# checks for a real JDK like environment, needed to check if
# really the java-gcj-compat-dev package is installed
if [ -r "$jdir/bin/jdb" ]; then
JAVA_HOME="$JAVA_HOME_TMP"
fi
fi
done

# Default Java options
if [ -z "$JAVA_OPTS" ]; then
JAVA_OPTS="-Djava.awt.headless=true -server \
-Xms{{ default .Env.min_memory "1000" }}m -Xmx{{ default .Env.max_memory "3000" }}m \
-XX:+UseG1GC"
fi

60 changes: 60 additions & 0 deletions docker-compose.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,60 @@
version: '3.4'

services:
workspace:
# build the workspace docker image locally
build: .
# to use the latest docker image from ghcr.io (see the readme file for more details),
# uncomment the next line and comment out the build line
# image: ghcr.io/kbase/workspace_deluxe:latest
ports:
- "7058:7058"
depends_on: ["auth2"]
environment:
- ignore_handle_service=true
- backend_type=GridFS
- mongodb_host=ci-mongo:27017
- mongodb_user=
- auth2_service=http://auth2:8080/testmode/
- listeners=
command:
- "-wait"
- "tcp://auth2:8080"
- "-template"
- "/kb/deployment/conf/.templates/deployment.cfg.templ:/kb/deployment/conf/deployment.cfg"
- "-template"
- "/kb/deployment/conf/.templates/server.xml.templ:/kb/deployment/services/workspace/tomcat/conf/server.xml"
- "-template"
- "/kb/deployment/conf/.templates/tomcat-users.xml.templ:/kb/deployment/services/workspace/tomcat/conf/tomcat-users.xml"
- "-template"
- "/kb/deployment/conf/.templates/logging.properties.templ:/kb/deployment/services/workspace/tomcat/conf/logging.properties"
- "-template"
- "/kb/deployment/conf/.templates/setenv.sh.templ:/kb/deployment/services/workspace/tomcat/bin/setenv.sh"
- "-stdout"
- "/kb/deployment/services/workspace/tomcat/logs/catalina.out"
- "-stdout"
- "/kb/deployment/services/workspace/tomcat/logs/access.log"
- "/usr/share/tomcat8/bin/catalina.sh"
- "run"

auth2:
image: ghcr.io/kbase/auth2:latest
ports:
- "8080:8080"
environment:
- KB_DEPLOYMENT_CONFIG=/kb/deployment/conf/deployment.cfg
- test_mode_enabled=true
command:
- "-wait"
- "tcp://ci-mongo:27017"
- "-timeout"
- "120s"
- "-template"
- "/kb/deployment/conf/.templates/deployment.cfg.templ:/kb/deployment/conf/deployment.cfg"
- "/kb/deployment/bin/start_auth2.sh"
depends_on: ["ci-mongo"]

ci-mongo:
image: "mongo:3.6.23"
ports:
- "27017:27017"
Loading

0 comments on commit d45e317

Please sign in to comment.