Skip to content

Commit

Permalink
Update dockerfile and move instructions to scripts
Browse files Browse the repository at this point in the history
Added deployment_test workflow to replace circleci integration test workflow
  • Loading branch information
paulbourelly999 committed May 16, 2024
1 parent a2c1965 commit 3e09834
Show file tree
Hide file tree
Showing 4 changed files with 128 additions and 58 deletions.
47 changes: 47 additions & 0 deletions .github/workflows/deployment_test.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,47 @@
on:
push:
branches:
- develop
- master
- "release/*"
pull_request:
types: [opened, synchronize, reopened]
name: Deployment Test
jobs:
sonarcloud:
runs-on: ubuntu-latest
container:
image: ubuntu:22.04
steps:
- name: Checkout
uses: actions/checkout@v4
with:
# Disabling shallow clone is recommended for improving relevancy of reporting
fetch-depth: 0
submodules: recursive
- name: Install dependencies
run: |
./scripts/install_dependencies.sh
- name: Build
run: |
./script/build.sh
- name: Configure network and set privileges
run: |
sed -i '/<\/Engine>/ i \ \ \ \ \ <Host name="carmacloud" appBase="webapps/carmacloud" unpackWARs="false" autoDeploy="false">\n </Host>' tomcat/conf/server.xml
echo -e '127.0.0.1\tcarmacloud' | sudo tee -a /etc/hosts
sudo groupadd tomcat
sudo useradd -g tomcat -m tomcat
chmod g+r tomcat/conf/*
chmod -R o-rwx tomcat/webapps/*
sudo chown -R root:tomcat tomcat
sudo chown -R tomcat:tomcat tomcat/logs
sudo chown -R tomcat:tomcat tomcat/temp
sudo chown -R tomcat:tomcat tomcat/work
sudo mv tomcat /opt/
- name: Start Tomcat and verify deployment
run: |
sudo /opt/tomcat/bin/catalina.sh start
sleep 10
if [[ `sudo grep "startup in" /opt/tomcat/logs/catalina.out | wc -l` -ne "1" ]]; then exit 1; fi
if [[ `wget -O - http://carmacloud:8080 | grep "CARMAcloud Login" | wc -l` -ne "1" ]]; then exit 2; fi
if [[ `wget -O - --post-data="uname=ccadmin&pword=admin_testpw" http://carmacloud:8080/api/auth/login | grep "token" | wc -l` -ne "1" ]]; then exit 3; fi
70 changes: 12 additions & 58 deletions Dockerfile
Original file line number Diff line number Diff line change
@@ -1,61 +1,15 @@
FROM ubuntu:22.04
# update package manager and install prerequisites
RUN apt-get update -y && \
apt-get install -y build-essential cmake git wget pkg-config sqlite3 libcurl4-openssl-dev libsqlite3-dev libtiff5-dev
# download geodesy projection library source
WORKDIR /tmp
RUN wget -q https://download.osgeo.org/proj/proj-9.3.0.tar.gz && \
tar -xzf proj-9.3.0.tar.gz && \
rm proj-9.3.0.tar.gz && \
mv proj-9.3.0 proj && \
mkdir -p proj/build
# download openjdk
RUN wget -q https://download.java.net/java/GA/jdk21.0.1/415e3f918a1f4062a0074a2794853d0d/12/GPL/openjdk-21.0.1_linux-x64_bin.tar.gz && \
tar -xzf openjdk-21.0.1_linux-x64_bin.tar.gz && \
rm openjdk-21.0.1_linux-x64_bin.tar.gz && \
mv jdk-21.0.1 /opt/jdk
# download apache tomcat
RUN wget -q https://archive.apache.org/dist/tomcat/tomcat-9/v9.0.83/bin/apache-tomcat-9.0.83.tar.gz && \
tar -xzf apache-tomcat-9.0.83.tar.gz && \
rm apache-tomcat-9.0.83.tar.gz && \
mv apache-tomcat-9.0.83 tomcat && \
sed -i 's/appBase="webapps"/appBase="webapps\/carmacloud"/g' tomcat/conf/server.xml && \
rm -r tomcat/webapps/*
COPY scripts/install_dependencies.sh /home/cc/scripts/install_dependencies.sh
RUN /home/cc/scripts/install_dependencies.sh
COPY src /home/cc/src
COPY lib /home/cc/lib
COPY web /home/cc/web
COPY osmbin /home/cc/osmbin
COPY *.sh /home/cc/
COPY scripts/build.sh /home/cc/scripts/build.sh

# download carma-cloud source
RUN git clone https://github.com/usdot-fhwa-stol/carma-cloud.git cc && \
rm cc/lib/libcs2cswrapper.so
# compile geodesy projection library
WORKDIR /tmp/proj/build
RUN cmake .. && \
cmake --build . && \
cmake --build . --target install && \
ldconfig
# compile jni projection library
WORKDIR /tmp/cc/src/cc/geosrv
RUN gcc -c -std=c11 -fPIC -Wall -I /opt/jdk/include/ -I /opt/jdk/include/linux/ -I /tmp/proj/src/ cs2cswrapper.c && \
gcc -shared cs2cswrapper.o -lproj -o /usr/local/lib/libcs2cswrapper.so
# compile carma-cloud java source and cleanup
WORKDIR /tmp
RUN mkdir -p tomcat/webapps/carmacloud/ROOT && \
mv cc/web/* tomcat/webapps/carmacloud/ROOT && \
mkdir -p tomcat/webapps/carmacloud/ROOT/WEB-INF/classes && \
find ./cc/src -name "*.java" > sources.txt && \
/opt/jdk/bin/javac -cp tomcat/lib/servlet-api.jar:cc/lib/commons-compress-1.18.jar:cc/lib/javax.json.jar:cc/lib/json-20210307.jar:cc/lib/keccakj.jar:cc/lib/log4j-api-2.16.0.jar:cc/lib/vector_tile.jar -d tomcat/webapps/carmacloud/ROOT/WEB-INF/classes @sources.txt && \
rm sources.txt && \
gunzip cc/osmbin/*.gz && \
mv cc/lib tomcat/webapps/carmacloud/ROOT/WEB-INF && \
mv cc/osmbin/rop.csv tomcat/webapps/carmacloud && \
mv cc/osmbin/storm.csv tomcat/webapps/carmacloud && \
mv cc/osmbin/units.csv tomcat/webapps/carmacloud && \
mv cc/osmbin tomcat/webapps/carmacloud && \
mv tomcat/webapps/carmacloud/ROOT/WEB-INF/log4j2.properties tomcat/webapps/carmacloud/ROOT/WEB-INF/classes && \
touch tomcat/webapps/carmacloud/event.csv && \
mkdir -p tomcat/work/carmacloud/xodr && \
mkdir -p tomcat/work/carmacloud/validate/xodr && \
/opt/jdk/bin/java -cp tomcat/webapps/carmacloud/ROOT/WEB-INF/classes/:tomcat/lib/servlet-api.jar cc.ws.UserMgr ccadmin admin_testpw > tomcat/webapps/carmacloud/user.csv && \
echo 'JAVA_HOME=/opt/jdk' > tomcat/bin/setenv.sh && \
sed -i 's/<param-value>ambassador-address<\/param-value>/<param-value>172.2.0.2<\/param-value>/g' tomcat/webapps/carmacloud/ROOT/WEB-INF/web.xml && \
sed -i 's/<param-value>simulation-url<\/param-value>/<param-value>http:\/\/172.2.0.47:8080\/carmacloud\/simulation<\/param-value>/g' tomcat/webapps/carmacloud/ROOT/WEB-INF/web.xml && \
mv tomcat /opt && \
rm -r proj && \
rm -r cc
RUN /home/cc/scripts/build.sh
ENTRYPOINT [ "/opt/tomcat/bin/catalina.sh", "run" ]

35 changes: 35 additions & 0 deletions scripts/build.sh
Original file line number Diff line number Diff line change
@@ -0,0 +1,35 @@
#!/bin/bash

# exit on errors
set -e
cd tmp/
mv jdk-21.0.1 /opt/jdk
echo "JAVA HOME is ${JAVA_HOME}"
cd /home/cc/src/cc/geosrv
gcc -c -std=c11 -fPIC -Wall -I "${JAVA_HOME}/opt/include/" -I "${JAVA_HOME}/opt/include/linux/" -I /tmp/proj/src/ cs2cswrapper.c
gcc -shared cs2cswrapper.o -lproj -o /usr/local/lib/libcs2cswrapper.so

cd /tmp
mkdir -p tomcat/webapps/carmacloud/ROOT
mv cc/web/* tomcat/webapps/carmacloud/ROOT
mkdir -p tomcat/webapps/carmacloud/ROOT/WEB-INF/classes
find ./cc/src -name "*.java" > sources.txt
/opt/jdk/bin/javac -cp tomcat/lib/servlet-api.jar:cc/lib/commons-compress-1.18.jar:cc/lib/javax.json.jar:cc/lib/json-20210307.jar:cc/lib/keccakj.jar:cc/lib/log4j-api-2.16.0.jar:cc/lib/vector_tile.jar -d tomcat/webapps/carmacloud/ROOT/WEB-INF/classes @sources.txt
rm sources.txt
gunzip cc/osmbin/*.gz
mv cc/lib tomcat/webapps/carmacloud/ROOT/WEB-INF
mv cc/osmbin/rop.csv tomcat/webapps/carmacloud
mv cc/osmbin/storm.csv tomcat/webapps/carmacloud
mv cc/osmbin/units.csv tomcat/webapps/carmacloud
mv cc/osmbin tomcat/webapps/carmacloud
mv tomcat/webapps/carmacloud/ROOT/WEB-INF/log4j2.properties tomcat/webapps/carmacloud/ROOT/WEB-INF/classes
touch tomcat/webapps/carmacloud/event.csv
mkdir -p tomcat/work/carmacloud/xodr
mkdir -p tomcat/work/carmacloud/validate/xodr
/opt/jdk/bin/java -cp tomcat/webapps/carmacloud/ROOT/WEB-INF/classes/:tomcat/lib/servlet-api.jar cc.ws.UserMgr ccadmin admin_testpw > tomcat/webapps/carmacloud/user.csv
echo 'JAVA_HOME=/opt/jdk' > tomcat/bin/setenv.sh
sed -i 's/<param-value>ambassador-address<\/param-value>/<param-value>127.0.0.1<\/param-value>/g' tomcat/webapps/carmacloud/ROOT/WEB-INF/web.xml
sed -i 's/<param-value>simulation-url<\/param-value>/<param-value>http:\/\/127.0.0.1:8080\/carmacloud\/simulation<\/param-value>/g' tomcat/webapps/carmacloud/ROOT/WEB-INF/web.xml
mv tomcat /opt
rm -r proj
rm -r cc
34 changes: 34 additions & 0 deletions scripts/install_dependencies.sh
Original file line number Diff line number Diff line change
@@ -0,0 +1,34 @@
#!/bin/bash

# exit on errors
set -e
apt-get update -y
apt-get install -y build-essential cmake git wget pkg-config sqlite3 libcurl4-openssl-dev libsqlite3-dev libtiff5-dev openjdk-21-jdk
# download geodesy projection library source and build
cd /tmp
wget -q https://download.osgeo.org/proj/proj-9.3.0.tar.gz
tar -xzf proj-9.3.0.tar.gz
rm proj-9.3.0.tar.gz
mv proj-9.3.0 proj
mkdir -p proj/build
cd /tmp/proj/build
cmake ..
cmake --build . && \
cmake --build . --target install && \
ldconfig
# download apache tomcat
cd /tmp
wget -q https://archive.apache.org/dist/tomcat/tomcat-9/v9.0.83/bin/apache-tomcat-9.0.83.tar.gz
tar -xzf apache-tomcat-9.0.83.tar.gz
rm apache-tomcat-9.0.83.tar.gz
mv apache-tomcat-9.0.83 tomcat
sed -i 's/appBase="webapps"/appBase="webapps\/carmacloud"/g' tomcat/conf/server.xml
rm -r tomcat/webapps/*
# download and install JDK 21
cd /tmp
wget --no-check-certificate -q https://download.java.net/java/GA/jdk21.0.1/415e3f918a1f4062a0074a2794853d0d/12/GPL/openjdk-21.0.1_linux-x64_bin.tar.gz
tar -xzf openjdk-21.0.1_linux-x64_bin.tar.gz
mv jdk-21.0.1 /opt/jdk
rm openjdk-21.0.1_linux-x64_bin.tar.gz
export JAVA_HOME="/opt/jdk"

0 comments on commit 3e09834

Please sign in to comment.