[infra/cmd] Introduce nnas docker command (#9348)
author오형석/On-Device Lab(SR)/Staff Engineer/삼성전자 <hseok82.oh@samsung.com>
Wed, 4 Dec 2019 05:16:45 +0000 (14:16 +0900)
committerGitHub Enterprise <noreply-CODE@samsung.com>
Wed, 4 Dec 2019 05:16:45 +0000 (14:16 +0900)
Introduce nnas docker-run command

Ex) format check
./nnas docker-run ./nnas format

Signed-off-by: Hyeongseok Oh <hseok82.oh@samsung.com>
infra/command/docker-run [new file with mode: 0644]
infra/config/docker.configuration [new file with mode: 0644]

diff --git a/infra/command/docker-run b/infra/command/docker-run
new file mode 100644 (file)
index 0000000..08610bf
--- /dev/null
@@ -0,0 +1,10 @@
+#!/bin/bash
+
+import "docker.configuration"
+
+docker run ${DOCKER_RUN_OPTS} ${DOCKER_ENV_VARS} ${DOCKER_VOLUMES} ${DOCKER_IMAGE_NAME} "$@"
+EXITCODE=$?
+
+docker_cleanup
+
+exit ${EXITCODE}
diff --git a/infra/config/docker.configuration b/infra/config/docker.configuration
new file mode 100644 (file)
index 0000000..fba274c
--- /dev/null
@@ -0,0 +1,49 @@
+#!/bin/bash
+
+# Don't run this script
+[[ "${BASH_SOURCE[0]}" == "${0}" ]] && echo "Please don't execute ${BASH_SOURCE[0]}" && exit 1
+
+DOCKER_IMAGE_NAME=${DOCKER_IMAGE_NAME:-nnas}
+echo "Using docker image ${DOCKER_IMAGE_NAME}"
+
+if [ -z "`docker images ${DOCKER_IMAGE_NAME}`" ]; then
+  echo "Need docker image!"
+  exit 1
+fi
+
+HOST_PATH="${NNAS_PROJECT_PATH}"
+DOCKER_PATH="${NNAS_PROJECT_PATH}"
+
+export GIT_SSL_NO_VERIFY=1
+
+DOCKER_VOLUMES+=" -v ${HOST_PATH}:${DOCKER_PATH}"
+
+if [[ ! -z "${ENV_FILE}" ]]; then
+  if [[ -e ${ENV_FILE} ]]; then
+    DOCKER_ENV_VARS+=" --env-file ${ENV_FILE} "
+  else
+    echo "[WARNING] Cannot find docker environment variable list file: ${ENV_FILE}"
+  fi
+fi
+
+DOCKER_ENV_VARS+=" -e http_proxy"
+DOCKER_ENV_VARS+=" -e no_proxy"
+DOCKER_ENV_VARS+=" -e GIT_SSL_NO_VERIFY"
+
+DOCKER_RUN_OPTS="${DOCKER_OPTS}"
+DOCKER_RUN_OPTS+=" --rm"
+DOCKER_RUN_OPTS+=" -w ${DOCKER_PATH}"
+
+function docker_cleanup()
+{
+  # Newly created files during during docker run can have different ownership.
+  # This may cause some problems, for example, some jenkins slaves or developers
+  # can't remove built files due to lack of permission.
+  # To address this issue, let's change owner of all files
+  # in nncc to owner of nncc.
+  NNFW_OWNER_UID=$(stat -c "%u" ${HOST_PATH})
+  NNFW_OWNER_GID=$(stat -c "%g" ${HOST_PATH})
+
+  CMD="chown -R ${NNFW_OWNER_UID}:${NNFW_OWNER_GID} ${DOCKER_PATH}"
+  docker run ${DOCKER_RUN_OPTS} ${DOCKER_ENV_VARS} ${DOCKER_VOLUMES} ${DOCKER_IMAGE_NAME} ${CMD}
+}