diff --git a/.gitignore b/.gitignore index 40b99530d1718e72ade45d7a4c8fc062a5afa3c0..6551e48428f6ec2ff0b0fbafac45e373a1c00119 100644 --- a/.gitignore +++ b/.gitignore @@ -8,4 +8,6 @@ SnippetTest.java submitted.txt gradlew gradlew.bat -gradle \ No newline at end of file +gradle +build_dependencies +libs \ No newline at end of file diff --git a/Dockerfile b/Dockerfile index d92f61597e077582365d2fca3abec23ac822e26a..158fa4b6c7b9573b98b3333f01e1321a499bf034 100644 --- a/Dockerfile +++ b/Dockerfile @@ -7,16 +7,22 @@ RUN dnf update -y && dnf clean all # Copy in the project files WORKDIR /app COPY ./scripts /app +COPY redis-cli.tar.gz . +COPY jars.tar.gz . -# Setup libraries and node modules. -WORKDIR /app/bundles -RUN tar xzf redis-cli.tar.gz -RUN rm redis-cli.tar.gz -RUN mv redis-cli /usr/local/bin/redis-cli +# Set workdir. WORKDIR /app -# Cleanup -RUN rm -rf bundles +# Setup redis. +RUN tar xzf redis-cli.tar.gz && rm redis-cli.tar.gz +RUN mv redis-cli /usr/local/bin/redis-cli + +# Setup jars. +RUN tar xzf jars.tar.gz && rm jars.tar.gz +RUN mkdir libs && mv jars/main/* libs/ +RUN mkdir process_job/libs && mv jars/process_job/* process_job/libs/ +RUN mkdir send_results/libs && mv jars/send_results/* send_results/libs/ +RUN rm -rf jars # Set permissions and ownership RUN chown -R 1000 /app diff --git a/README.md b/README.md index e5521ec9466c5e3992eb4bc38561af67a0c3966a..d260c9db3f37e43b7ffa21910b8230a14db7aa10 100644 --- a/README.md +++ b/README.md @@ -10,6 +10,23 @@ code snippets that were submitted from students through the LEARN application. - Java 11 - Gradle 6.7 +## Container Usage: + +### Container info: + +- workdir: /app +- user id: 1000 +- Does not require container port mapping. + +### Recommended Resources: + +- Min/Max CPU: 0.25/0.5 +- Min/Max Memory: 256Mi/1Gi + +### Required Environment Variables: + +- ```REDIS_HOST``` - The redis server host address. + ## Local Development 1) Install [Java JDK 11](https://adoptopenjdk.net). diff --git a/hardening_manifest.yaml b/hardening_manifest.yaml index ae28273e9055cd8b5864e6a6194f3e47f68569a7..1f24c1db908cbd86587e9d937dd626dd5ac6e04e 100644 --- a/hardening_manifest.yaml +++ b/hardening_manifest.yaml @@ -30,11 +30,24 @@ labels: # List of resources to make available to the offline build context resources: -- url: https://download.redis.io/releases/redis-6.0.9.tar.gz - filename: redis-6.0.9.tar.gz - validation: - type: sha256 - value: dc2bdcf81c620e9f09cfd12e85d3bc631c897b2db7a55218fd8a65eaa37f86dd + - auth: + type: s3 + id: galvanize + region: us-gov-west-1 + url: s3://learn-dependencies/java-evaluator/redis-cli.tar.gz + filename: redis-cli.tar.gz + validation: + type: sha256 + value: 975e37c4165969c4cd612ddd81a6950e872f2d9a7a355376a05be4ad901e62fe + - auth: + type: s3 + id: galvanize + region: us-gov-west-1 + url: s3://learn-dependencies/java-evaluator/jars.tar.gz + filename: jars.tar.gz + validation: + type: sha256 + value: 8d9cbd2da25b8c1792e6fc900c9bd88c7e79005fdacf81fd0765933682b53c21 # List of project maintainers maintainers: diff --git a/scripts/.gitlab-ci.yml b/scripts/.gitlab-ci.yml deleted file mode 100644 index b6b5de1b911a14b1420cd421b36ca7b046e473f2..0000000000000000000000000000000000000000 --- a/scripts/.gitlab-ci.yml +++ /dev/null @@ -1,4 +0,0 @@ -include: - - project: 'platform-one/devops/pipeline-products' - ref: 'learn-ci' - file: 'products/tron/galvanize/learn/java-evaluator-ci.yml' diff --git a/scripts/Dockerfile.packages b/scripts/Dockerfile.packages new file mode 100644 index 0000000000000000000000000000000000000000..8940719541b1fd7d565573e05a66c42b94419b58 --- /dev/null +++ b/scripts/Dockerfile.packages @@ -0,0 +1,32 @@ +ARG BASE_REGISTRY +ARG BASE_IMAGE +ARG BASE_TAG + +FROM ${BASE_REGISTRY}/${BASE_IMAGE}:${BASE_TAG} +USER 0 + +# Install required libs. +RUN dnf update -y && dnf install -y \ + curl \ + make \ + gcc \ + gcc-c++ + +# Setup our environment +WORKDIR /app + +# Redis +RUN curl -L http://download.redis.io/redis-stable.tar.gz -o redis-stable.tar.gz +RUN tar xzf redis-stable.tar.gz +WORKDIR /app/redis-stable +RUN make redis-cli +WORKDIR /app/redis-stable/src +RUN tar czf redis-cli.tar.gz redis-cli +RUN mv redis-cli.tar.gz /app/ +WORKDIR /app + +# Add write permissions. +RUN chown -R 1000 . + +# Set the entry point. +CMD tail -f /dev/null diff --git a/scripts/bundles/redis-cli.tar.gz b/scripts/bundles/redis-cli.tar.gz deleted file mode 100644 index e694dfedcbaeaf8927abdba4868d90eb0857e619..0000000000000000000000000000000000000000 Binary files a/scripts/bundles/redis-cli.tar.gz and /dev/null differ diff --git a/scripts/get-job.sh b/scripts/get-job.sh index bfb5a172660263d490c91c1dabb0d6408a442a40..8ded423a90c49f6ed407784807293d14f6f1d7cf 100755 --- a/scripts/get-job.sh +++ b/scripts/get-job.sh @@ -3,6 +3,8 @@ # Initial builds. gradle --offline test +loop=1 + while true ; do # If it exists, delete the json-object.json file [ -e json-object.json ] && rm json-object.json @@ -21,6 +23,14 @@ while true ; do [ -s json-object.json ] || continue + # Log the current job number. + echo + echo "============================" + echo "Processing job number: $loop" + echo "============================" + echo + let "loop=loop+1" + java -jar process_job/build/libs/process-job.jar gradle --offline test \ diff --git a/scripts/libs/apiguardian-api-1.1.0.jar b/scripts/libs/apiguardian-api-1.1.0.jar deleted file mode 100644 index e6fcead36fe0c8f7920f8f7abc532a62d51350c4..0000000000000000000000000000000000000000 Binary files a/scripts/libs/apiguardian-api-1.1.0.jar and /dev/null differ diff --git a/scripts/libs/commons-codec-1.15.jar b/scripts/libs/commons-codec-1.15.jar deleted file mode 100644 index f14985ac9214db96dadcba46c0578baf55c5b347..0000000000000000000000000000000000000000 Binary files a/scripts/libs/commons-codec-1.15.jar and /dev/null differ diff --git a/scripts/libs/commons-logging-1.1.2.jar b/scripts/libs/commons-logging-1.1.2.jar deleted file mode 100644 index d6a543c4edf0e875077238a3603d34f6032ae9cd..0000000000000000000000000000000000000000 Binary files a/scripts/libs/commons-logging-1.1.2.jar and /dev/null differ diff --git a/scripts/libs/hamcrest-all-1.3.jar b/scripts/libs/hamcrest-all-1.3.jar deleted file mode 100644 index 6f62ba00c7be664f5b5a23aae888887d176580ce..0000000000000000000000000000000000000000 Binary files a/scripts/libs/hamcrest-all-1.3.jar and /dev/null differ diff --git a/scripts/libs/junit-jupiter-api-5.7.0.jar b/scripts/libs/junit-jupiter-api-5.7.0.jar deleted file mode 100644 index 64c98e19ff63744067cf750f064c14086dd2f5c0..0000000000000000000000000000000000000000 Binary files a/scripts/libs/junit-jupiter-api-5.7.0.jar and /dev/null differ diff --git a/scripts/libs/junit-jupiter-engine-5.7.0.jar b/scripts/libs/junit-jupiter-engine-5.7.0.jar deleted file mode 100644 index 31e46531edbaa8296c873bca3a9ee1ea8132702f..0000000000000000000000000000000000000000 Binary files a/scripts/libs/junit-jupiter-engine-5.7.0.jar and /dev/null differ diff --git a/scripts/libs/junit-platform-commons-1.7.0.jar b/scripts/libs/junit-platform-commons-1.7.0.jar deleted file mode 100644 index 9288cfbd6bc197f03b6db38cb4a69aa44e3f5c6a..0000000000000000000000000000000000000000 Binary files a/scripts/libs/junit-platform-commons-1.7.0.jar and /dev/null differ diff --git a/scripts/libs/junit-platform-engine-1.7.0.jar b/scripts/libs/junit-platform-engine-1.7.0.jar deleted file mode 100644 index 94bc882e78b9819f2361aba01ec39af524e9479e..0000000000000000000000000000000000000000 Binary files a/scripts/libs/junit-platform-engine-1.7.0.jar and /dev/null differ diff --git a/scripts/libs/opentest4j-1.2.0.jar b/scripts/libs/opentest4j-1.2.0.jar deleted file mode 100644 index d5006361a412f458525afc317aecb067dd093d0a..0000000000000000000000000000000000000000 Binary files a/scripts/libs/opentest4j-1.2.0.jar and /dev/null differ diff --git a/scripts/process_job/libs/org.json-2.0.jar b/scripts/process_job/libs/org.json-2.0.jar deleted file mode 100644 index 543438992fab3d820a1d900d65537347be419d21..0000000000000000000000000000000000000000 Binary files a/scripts/process_job/libs/org.json-2.0.jar and /dev/null differ diff --git a/scripts/repackage.sh b/scripts/repackage.sh new file mode 100755 index 0000000000000000000000000000000000000000..d58fa27387e527b987d4cc5faa2ccf7625faee00 --- /dev/null +++ b/scripts/repackage.sh @@ -0,0 +1,46 @@ +#!/bin/bash + +# Image Params. +BASE_REGISTRY=registry.il2.dso.mil +BASE_IMAGE=platform-one/devops/pipeline-templates/ironbank/gradle-jre11 +BASE_TAG=6.7.1 + +# This is the profile name in your aws credentials file. +DEPENDENCY_FOLDER=build_dependencies +AWS_PROFILE_NAME=revacomm +AWS_BUCKET_NAME=learn-dependencies/java-evaluator +AWS_REGION=us-gov-west-1 + +echo "Clearing dependency folder." +rm -rf $DEPENDENCY_FOLDER +mkdir $DEPENDENCY_FOLDER + +echo "Building docker image." +IMAGE_ID=$(docker build --file Dockerfile.packages . -q \ + --build-arg BASE_REGISTRY=$BASE_REGISTRY \ + --build-arg BASE_IMAGE=$BASE_IMAGE \ + --build-arg BASE_TAG=$BASE_TAG) +echo "Image ID: ${IMAGE_ID}" + +echo "Starting docker container." +CONTAINER_ID=$(docker run -d "$IMAGE_ID") +echo "Container ID: ${CONTAINER_ID}" + +echo "Copying node modules and gems to the bundles directory." +docker cp "$CONTAINER_ID":/app/redis-cli.tar.gz $DEPENDENCY_FOLDER + +echo "Stopping the docker container." +docker stop "$CONTAINER_ID" + +echo "Uploading all the build dependencies to AWS." +aws s3 sync $DEPENDENCY_FOLDER s3://$AWS_BUCKET_NAME --delete --profile $AWS_PROFILE_NAME --region $AWS_REGION + +echo "Checksums:" +cd $DEPENDENCY_FOLDER +sha256sum redis-cli.tar.gz +cd .. + +echo "Removing dependency folder." +rm -rf $DEPENDENCY_FOLDER + +echo "Done!" \ No newline at end of file diff --git a/scripts/send_results/libs/commons-codec-1.15.jar b/scripts/send_results/libs/commons-codec-1.15.jar deleted file mode 100644 index f14985ac9214db96dadcba46c0578baf55c5b347..0000000000000000000000000000000000000000 Binary files a/scripts/send_results/libs/commons-codec-1.15.jar and /dev/null differ diff --git a/scripts/send_results/libs/commons-logging-1.1.2.jar b/scripts/send_results/libs/commons-logging-1.1.2.jar deleted file mode 100644 index d6a543c4edf0e875077238a3603d34f6032ae9cd..0000000000000000000000000000000000000000 Binary files a/scripts/send_results/libs/commons-logging-1.1.2.jar and /dev/null differ diff --git a/scripts/send_results/libs/httpclient-4.5.13.jar b/scripts/send_results/libs/httpclient-4.5.13.jar deleted file mode 100644 index 218ee25f2b11b65c83c16dbea9d47f652c4993b0..0000000000000000000000000000000000000000 Binary files a/scripts/send_results/libs/httpclient-4.5.13.jar and /dev/null differ diff --git a/scripts/send_results/libs/httpcore-4.4.13.jar b/scripts/send_results/libs/httpcore-4.4.13.jar deleted file mode 100644 index 163dc438cbb4ff9302855d40976ba8d02bf7450c..0000000000000000000000000000000000000000 Binary files a/scripts/send_results/libs/httpcore-4.4.13.jar and /dev/null differ diff --git a/scripts/send_results/libs/org.json-2.0.jar b/scripts/send_results/libs/org.json-2.0.jar deleted file mode 100644 index 543438992fab3d820a1d900d65537347be419d21..0000000000000000000000000000000000000000 Binary files a/scripts/send_results/libs/org.json-2.0.jar and /dev/null differ