Created
August 15, 2018 18:38
-
-
Save bochsdbg/94ffbce70d4b113d47809cd8b4d0d7b9 to your computer and use it in GitHub Desktop.
aicups
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
#!/bin/bash | |
if [ -z "$(find . -maxdepth 1 -name '*.csproj' -printf 1 -quit)" ]; then | |
cp ../default/solution.csproj . | |
fi && \ | |
HOME=/tmp DOTNET_SKIP_FIRST_TIME_EXPERIENCE=1 dotnet build -c Release --no-incremental -v:q -nologo -clp:"NoSummary;ErrorsOnly" 2>&1 && \ | |
cp bin/Release/netcoreapp2.1/solution.dll "$COMPILED_FILE_PATH" |
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
#!/bin/bash | |
dotnet "$MOUNT_POINT" |
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
#!/bin/bash | |
ACTION="" | |
DOCKER_TAG="aicups-test" | |
DOCKER_FLAGS="-u9999 --cpuset-cpus=0 --ulimit nproc=50" | |
TMPDIR="/tmp/aicups-test" | |
CLIENT_ID="test-client" | |
ZIPPED="" | |
ARGS=() | |
CONTAINER_ID="" | |
function display_help { | |
echo "Usage: $0 <command> [args]" | |
echo "Commands: b(uild), c(ompile), r(un)" | |
echo "build [dockerfile_path]" | |
echo " default: dockerfile_path = ." | |
echo "compile <client-id> <path_to_sources>" | |
echo "run" | |
exit 1 | |
} | |
while [ "$#" -gt 0 ]; do | |
case "$1" in | |
-t | --tag) | |
DOCKER_TAG="$2" | |
shift 2 | |
;; | |
-d | --temp-dir) | |
TMPDIR="$2" | |
shift 2 | |
;; | |
-h | --help) | |
display_help | |
;; | |
-z | --zipped) | |
ZIPPED=1 | |
shift | |
;; | |
-*) | |
echo "Unknown option: $1" >&2 | |
exit 1 | |
;; | |
*) | |
ARGS+=("$1") | |
shift | |
;; | |
esac | |
done | |
case "${ARGS[0]}" in | |
b | build) | |
ACTION="build" | |
DOCKERFILE_PATH="${ARGS[1]}" | |
if [ -z "$DOCKERFILE_PATH" ]; then | |
DOCKERFILE_PATH="." | |
fi | |
docker build -t "$DOCKER_TAG" "$DOCKERFILE_PATH" | |
CONTAINER_ID=$(docker run -d -i "$DOCKER_TAG") | |
docker exec -i "$CONTAINER_ID" /bin/bash -c 'mkdir -p /opt/client && chmod 777 -R /opt/client' | |
docker commit "$CONTAINER_ID" "$DOCKER_TAG" | |
docker stop "$CONTAINER_ID" >/dev/null | |
;; | |
c | compile) | |
ACTION="compile" | |
SOURCES_PATH="${ARGS[1]}" | |
if [ -z "$SOURCES_PATH" ]; then | |
display_help | |
fi | |
CLIENT_ID="${ARGS[2]:-$CLIENT_ID}" | |
MOUNT_POINT="" | |
CONTAINER_ID=$(docker run $DOCKER_FLAGS -d -i "$DOCKER_TAG") | |
if [ $? -eq 0 ]; then | |
SOLUTION_CODE_ENTRYPOINT=$(docker exec "$CONTAINER_ID" printenv SOLUTION_CODE_ENTRYPOINT) && \ | |
SOLUTION_CODE_PATH=$(docker exec "$CONTAINER_ID" printenv SOLUTION_CODE_PATH) && \ | |
COMPILED_FILE_PATH=$(docker exec "$CONTAINER_ID" printenv COMPILED_FILE_PATH) && \ | |
if [ -f "$SOURCES_PATH" ]; then | |
docker cp "$SOURCES_PATH" "$CONTAINER_ID:$SOLUTION_CODE_PATH/$SOLUTION_CODE_ENTRYPOINT" | |
MOUNT_POINT="$SOLUTION_CODE_PATH/$SOLUTION_CODE_ENTRYPOINT" | |
elif [ -d "$SOURCES_PATH" ]; then | |
docker cp -r "$SOURCES_PATH/." "$CONTAINER_ID:$SOLUTION_CODE_PATH/" | |
MOUNT_POINT="$SOLUTION_CODE_PATH" | |
else | |
echo "Cannot find source path: '$SOURCE_PATH'" | |
false | |
fi && \ | |
docker exec -i "$CONTAINER_ID" /bin/bash -c "MOUNT_POINT='$MOUNT_POINT' eval \$COMPILATION_COMMAND" && \ | |
RUN_CONTAINER_ID=$(docker run $DOCKER_FLAGS -d -i "$DOCKER_TAG") && \ | |
docker cp "$CONTAINER_ID:$COMPILED_FILE_PATH" "$RUN_CONTAINER_ID:/opt/client/$(basename '$COMPILED_FILE_PATH')" | |
docker stop "$CONTAINER_ID" >/dev/null | |
fi | |
;; | |
r | run) | |
ACTION="run" | |
DOCKER_CID=$(docker run $DOCKER_FLAGS "$DOCKER_TAG" -d -it /bin/bash) | |
docker stop "$DOCKER_CID" | |
;; | |
s | stop) | |
ACTION="stop" | |
;; | |
*) | |
display_help | |
;; | |
esac |
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
FROM ubuntu:16.04 | |
MAINTAINER Sergey Samokhvalov <onlyforthesky@gmail.com> | |
ENV DEBIAN_FRONTEND=noninteractive | |
ENV LC_ALL=C.UTF-8 | |
ENV LANG=C.UTF-8 | |
ENV SOLUTION_CODE_ENTRYPOINT=solution.cs | |
ENV SOLUTION_CODE_PATH=/opt/client/solution/ | |
RUN apt-get update && \ | |
apt-get install -y apt-transport-https apt-utils wget | |
RUN wget -q https://packages.microsoft.com/config/ubuntu/16.04/packages-microsoft-prod.deb && \ | |
dpkg -i packages-microsoft-prod.deb && \ | |
apt-get update && \ | |
apt-get install -y dotnet-sdk-2.1 && \ | |
mkdir -p /opt/client/solution && \ | |
rm -rf packages-microsoft-prod.deb /var/lib/apt/lists/* /tmp/* | |
ENV COMPILED_FILE_PATH=/opt/client/out.dll | |
ENV COMPILATION_COMMAND='cd /opt/client/solution/ && if [ -f __build__.sh ]; then . __build__.sh; else . ../default/__build__.sh; fi' | |
ENV RUN_COMMAND='cd /opt/client/solution/ && if [ -f __run__.sh ]; then . __run__.sh; else . ../default/__run__.sh; fi' | |
COPY Newtonsoft.Json.dll /opt/client/libs/Newtonsoft.Json.dll | |
COPY solution.csproj /opt/client/default/solution.csproj | |
COPY __build__.sh /opt/client/default/__build__.sh | |
COPY __run__.sh /opt/client/default/__run__.sh |
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
<Project Sdk="Microsoft.NET.Sdk"> | |
<PropertyGroup> | |
<OutputType>Exe</OutputType> | |
<TargetFramework>netcoreapp2.1</TargetFramework> | |
</PropertyGroup> | |
<ItemGroup> | |
<Reference Include="Newtonsoft.Json"> | |
<HintPath>/opt/client/libs/Newtonsoft.Json.dll</HintPath> | |
</Reference> | |
</ItemGroup> | |
</Project> |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment