Перейти к содержимому
traio.kz

Code Downloader

Code Downloader — технический job, который подготавливает SSH окружение и скачивает исходный код из Git-репозитория в директорию /code перед запуском сканеров.

  • Поднимает ssh-agent и добавляет приватный ключ из PRIVATE_SSH_KEY.
  • Автоматически добавляет fingerprints хостов в ~/.ssh/known_hosts через ssh-keyscan.
  • Клонирует репозиторий в /code (опционально — конкретную ветку).
  1. Создаёт ~/.ssh и выставляет безопасные права.
  2. Запускает ssh-agent.
  3. Добавляет SSH-ключ из PRIVATE_SSH_KEY через ssh-add -.
  4. Очищает переменную PRIVATE_SSH_KEY (чтобы не «жила» дальше по окружению).
  5. Для каждого хоста из SSH_KNOWN_HOSTS выполняет ssh-keyscan -H и дописывает результат в ~/.ssh/known_hosts.
  6. Переходит в /code и выполняет git clone:
    • если задан BRANCH — клонирует эту ветку;
    • иначе — клонирует дефолтную ветку.
  7. Добавляет строку BRANCH=... в .env.
  8. Проверяет, что в /code есть файлы кроме .env.

Сканер использует официальный docker-образ:

  • registry.gitlab.com/traio-group/tools/toolset:latest

Команда запуска

mkdir -p ~/.ssh && chmod 700 ~/.ssh
eval $(ssh-agent -s)
echo "$PRIVATE_SSH_KEY" | ssh-add -
export PRIVATE_SSH_KEY=""
for host in $SSH_KNOWN_HOSTS; do
ssh-keyscan -H "$host" >> ~/.ssh/known_hosts
done
cd /code
if [ -n "$BRANCH" ]; then
git clone --branch $BRANCH --single-branch --depth 50 $REPOSITORY /code
echo "BRANCH=$BRANCH" >> .env
else
git clone --single-branch --depth 50 $REPOSITORY /code
echo "BRANCH=$(git branch --show-current)" >> .env
fi
if [ -d "/code" ]; then
# List all files except .env
non_env_files=$(find /code -mindepth 1 -not -name ".env")
if [ -z "$non_env_files" ]; then
echo "/code folder is empty (ignoring .env)."
exit 1
else
echo "Code has been succesfully downloaded"
exit 0
fi
fi
Name Default Required Description
REPOSITORY true SSH URL репозитория для клонирования (например, git@gitlab.com:group/project.git).
BRANCH false Ветка для клонирования. Если не задана — используется дефолтная ветка репозитория.
SSH_KNOWN_HOSTS gitlab.com github.com false Список хостов (через пробел), которые будут добавлены в known_hosts через ssh-keyscan. Пример: gitlab.com github.com 192.168.50.198.
PRIVATE_SSH_KEY "" true Приватный SSH ключ для доступа к репозиторию. Используется командой ssh-add -.
  • Host key verification failed: добавьте хост репозитория в SSH_KNOWN_HOSTS.
  • Permission denied (publickey): проверьте, что PRIVATE_SSH_KEY корректный и имеет доступ к репозиторию.