Code Downloader
Overview
Заголовок раздела «Overview»Code Downloader — технический job, который подготавливает SSH окружение и скачивает исходный код из Git-репозитория в директорию /code перед запуском сканеров.
Key capabilities
Заголовок раздела «Key capabilities»- Поднимает
ssh-agentи добавляет приватный ключ изPRIVATE_SSH_KEY. - Автоматически добавляет fingerprints хостов в
~/.ssh/known_hostsчерезssh-keyscan. - Клонирует репозиторий в
/code(опционально — конкретную ветку).
How it works
Заголовок раздела «How it works»- Создаёт
~/.sshи выставляет безопасные права. - Запускает
ssh-agent. - Добавляет SSH-ключ из
PRIVATE_SSH_KEYчерезssh-add -. - Очищает переменную
PRIVATE_SSH_KEY(чтобы не «жила» дальше по окружению). - Для каждого хоста из
SSH_KNOWN_HOSTSвыполняетssh-keyscan -Hи дописывает результат в~/.ssh/known_hosts. - Переходит в
/codeи выполняетgit clone:- если задан
BRANCH— клонирует эту ветку; - иначе — клонирует дефолтную ветку.
- если задан
- Добавляет строку
BRANCH=...в.env. - Проверяет, что в
/codeесть файлы кроме.env.
Run details
Заголовок раздела «Run details»Сканер использует официальный docker-образ:
registry.gitlab.com/traio-group/tools/toolset:latest
Команда запуска
mkdir -p ~/.ssh && chmod 700 ~/.ssheval $(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_hostsdonecd /codeif [ -n "$BRANCH" ]; then git clone --branch $BRANCH --single-branch --depth 50 $REPOSITORY /code echo "BRANCH=$BRANCH" >> .envelse git clone --single-branch --depth 50 $REPOSITORY /code echo "BRANCH=$(git branch --show-current)" >> .envfiif [ -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 fifiConfiguration
Заголовок раздела «Configuration»Environment variables
Заголовок раздела «Environment variables»| 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 -. |
Troubleshooting
Заголовок раздела «Troubleshooting»- Host key verification failed: добавьте хост репозитория в
SSH_KNOWN_HOSTS. - Permission denied (publickey): проверьте, что
PRIVATE_SSH_KEYкорректный и имеет доступ к репозиторию.