#!/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}