121 lines
4.0 KiB
Bash
Executable File
121 lines
4.0 KiB
Bash
Executable File
#!/bin/bash
|
|
|
|
finish_with_pipe() {
|
|
if [ "${USE_SYSDIG}" == "true" ]; then
|
|
${SCRIPT_DIR}/pipe_remove.sh ${SYSDIG_PIPE_PATH}
|
|
|
|
RES=$?
|
|
|
|
ps aux | grep 'sysdig\|pipe_listener.sh' | awk '{ print $2; }' | xargs kill -INT
|
|
|
|
if [ ${RES} != 0 ]; then
|
|
exit 1
|
|
fi
|
|
fi
|
|
}
|
|
|
|
# files package
|
|
PACKAGE_FILE=${1}
|
|
# name package
|
|
PACKAGE_NAME=${2}
|
|
# version package
|
|
PACKAGE_VERSION=${3}
|
|
# input dir from $4 or default ./input
|
|
INPUT_DIR=${4:-./input}
|
|
# report dir from $5 or default ./report
|
|
REPORT_DIR=${5-./report}
|
|
# id of the pipeline, see result of "/pipeline/start"
|
|
PIPELINE_ID=${6}
|
|
# base url of the scanhub api, default http://localhost:3000/api/v1
|
|
SCANHUB_URL=${7:-"http://localhost:3000/api/v1"}
|
|
# output dir, default ./status
|
|
STATUS_DIR=${8:-./status}
|
|
# MinIO api url, default 127.0.0.1:9000
|
|
MINIO_API_URL=${9:-"127.0.0.1:9001"} # для локального теста на 127.0.0.1, нужно выставить NETWORK=host
|
|
# MinIO user, default is admin
|
|
MINIO_USER=${10:-"admin"}
|
|
# MinIO password, default is password
|
|
MINIO_PASSWORD=${11:-"password"}
|
|
# MinIO bucket name, default is
|
|
MINIO_BUCKET=${12:-"taskalo-files"}
|
|
PLUGIN_NAME="vsix_runtime_check"
|
|
SCANFEEDER_DEBUG=${SCANFEEDER_DEBUG:-true}
|
|
USE_SYSDIG=${USE_SYSDIG:-false}
|
|
DST_USER_ID=$(id -u)
|
|
DST_GROUP_ID=$(id -g)
|
|
|
|
|
|
NETWORK=${NETWORK:-default} # для локального теста на 127.0.0.1, нужно выставить NETWORK=host
|
|
SCRIPT_DIR=$(realpath "$( dirname -- "${BASH_SOURCE[0]}" )")
|
|
SYSDIG_PIPE_PATH=${SYSDIG_PIPE_PATH:-${SCRIPT_DIR}/sysdig_pipe}
|
|
LISTENER_LOG_FILE=${REPORT_DIR}/pipe_listener.log
|
|
|
|
if [ "${USE_SYSDIG}" == "true" ]; then
|
|
sysdig=$(which sysdig)
|
|
|
|
if [ $? != 0 ]; then
|
|
echo "sysdig is not presented in the system, please install it."
|
|
exit 1
|
|
fi
|
|
|
|
${SCRIPT_DIR}/pipe_create.sh ${SYSDIG_PIPE_PATH}
|
|
if [ $? != 0 ]; then
|
|
echo "Can't create pipe for communication"
|
|
exit 1
|
|
fi
|
|
|
|
REPORT_DIR=${REPORT_DIR} ${SCRIPT_DIR}/pipe_listener.sh ${SYSDIG_PIPE_PATH} ${DST_USER_ID} ${DST_GROUP_ID} 2>&1 > ${LISTENER_LOG_FILE} &
|
|
fi
|
|
|
|
MONITOR_ENABLE=$([ "${USE_SYSDIG}" = "true" ] && echo "True" || echo "False")
|
|
USER_HOME='/home/nandy'
|
|
ADD_METADATA_VOLUME=$([ "${ADD_METADATA_VOLUME}" = "true" ] && echo "-v ${PWD}/meta:${USER_HOME}/meta" || \
|
|
echo "")
|
|
|
|
|
|
VSIX_RUNTIME_CHECK_IMAGE=${VSIX_RUNTIME_CHECK_IMAGE:-vsix_runtime_check}
|
|
|
|
echo "=====================> start ${VSIX_RUNTIME_CHECK_IMAGE}:${VSIX_RUNTIME_CHECK_VER:-latest}"
|
|
|
|
docker run --rm -i \
|
|
--platform linux/amd64 \
|
|
--network ${NETWORK} \
|
|
--add-host=host.docker.internal:host-gateway \
|
|
--privileged \
|
|
--cap-add=NET_ADMIN \
|
|
--cap-add=SYS_ADMIN \
|
|
${ADD_METADATA_VOLUME} \
|
|
-v $INPUT_DIR:/input:ro \
|
|
-v $REPORT_DIR:/report \
|
|
-v $STATUS_DIR:/status \
|
|
-v ${SYSDIG_PIPE_PATH}:/pipe \
|
|
-e REPORT_DIR=/report/ \
|
|
-e PACKAGE_FILE=$PACKAGE_FILE \
|
|
-e PACKAGE_NAME=$PACKAGE_NAME \
|
|
-e PACKAGE_VERSION=$PACKAGE_VERSION \
|
|
-e METADATA_PATH="${USER_HOME}/meta" \
|
|
-e PLUGIN_NAME="${PLUGIN_NAME}" \
|
|
-e PIPELINE_ID=${PIPELINE_ID} \
|
|
-e SCANHUB_URL=${SCANHUB_URL} \
|
|
-e MINIO_API_URL="$MINIO_API_URL" \
|
|
-e MINIO_USER="$MINIO_USER" \
|
|
-e MINIO_PASSWORD="$MINIO_PASSWORD" \
|
|
-e MINIO_BUCKET="$MINIO_BUCKET" \
|
|
-e DST_USER_ID=${DST_USER_ID} \
|
|
-e DST_GROUP_ID=${DST_GROUP_ID} \
|
|
-e SYSDIG_PIPE_PATH=/pipe \
|
|
-e SCANFEEDER_DEBUG=${SCANFEEDER_DEBUG} \
|
|
-e MONITOR_ENABLE=${MONITOR_ENABLE} \
|
|
-e USER_HOME=${USER_HOME} \
|
|
-e LOG_LEVEL="DEBUG" \
|
|
-e T05_DEFAULT_TIMEOUT=1800 \
|
|
-e SCANFEEDER_PATH="/usr/local/bin/scanfeeder" \
|
|
"${VSIX_RUNTIME_CHECK_IMAGE}:${VSIX_RUNTIME_CHECK_VER:-latest}" bash -l -c "source ${USER_HOME}/processing/venv/bin/activate && python3 ${USER_HOME}/processing/vsix_package_processing.py --file_path=/input/${PACKAGE_FILE} --report_path=/report"
|
|
|
|
RES_PLUGIN=$?
|
|
echo "=====================> finished ${VSIX_RUNTIME_CHECK_IMAGE}:${VSIX_RUNTIME_CHECK_VER:-latest} with code ${RES_PLUGIN}"
|
|
|
|
finish_with_pipe
|
|
echo "VSIX runtime check is done, exit with code ${RES_PLUGIN}"
|
|
exit ${RES_PLUGIN}
|