Skip to content

Latest commit

 

History

History
168 lines (119 loc) · 6.74 KB

File metadata and controls

168 lines (119 loc) · 6.74 KB

GitLab CI/CD Integration — Accellens

Версия: 1.0 Дата: 10 ноября 2025


1. Обзор

Интеграция Accellens с GitLab CI/CD позволяет запускать web сканы как часть CI pipelines. Поддерживает MR-комментарии, статусные проверки и загрузку отчётов.


2. Установка

Быстрый старт

Скопируйте template в ваш проект:

mkdir -p .gitlab-ci
cp .gitlab-ci/accellens-scan.yml .gitlab-ci/

Добавьте в .gitlab-ci.yml:

include:
  - local: '.gitlab-ci/accellens-scan.yml'

stages:
  - test

variables:
  ACCELLENS_PROJECT: 'my-project'
  ACCELLENS_API_URL: 'https://api.accellens.dev'
  ACCELLENS_OUTPUT_FORMAT: 'json'
  ACCELLENS_FAIL_ON: 'high'

accellens_scan:
  extends: .accellens_scan_template
  variables:
    ACCELLENS_URL: 'https://example.com'
    # Или используйте файл с URL:
    # ACCELLENS_URLS_FILE: "urls.txt"

Настройка переменных

В GitLab перейдите в Settings → CI/CD → Variables и добавьте:

  • ACCELLENS_TOKEN — API токен (masked, protected)
  • ACCELLENS_PROJECT — slug проекта (опционально, можно указать в .gitlab-ci.yml)
  • GITLAB_TOKEN — для публикации комментариев в MR (опционально)

3. Параметры

Параметр Обязателен Значение по умолчанию Описание
ACCELLENS_PROJECT ✅ - Slug проекта в платформе
ACCELLENS_TOKEN ✅ - API токен (GitLab CI/CD variable)
ACCELLENS_URL ✅* - Одиночный URL для сканирования (*обязателен, если не указан ACCELLENS_URLS_FILE)
ACCELLENS_URLS_FILE ✅* urls.txt Путь к файлу со списком URL (*обязателен, если не указан ACCELLENS_URL)
ACCELLENS_API_URL ❌ https://api.accellens.dev Базовый URL API Accellens
ACCELLENS_FAIL_ON ❌ none Уровень, при котором job завершается с ошибкой (critical, high, medium, low, none)
ACCELLENS_OUTPUT_FORMAT ❌ json json, pdf, sarif
ACCELLENS_ALLOW_FAILURE ❌ false Разрешить job завершаться с ошибкой без остановки pipeline

4. Выходные данные

  • Артефакт отчёта (accellens-report.json/pdf) — автоматически загружается как артефакт.
  • MR комментарий — автоматически публикуется в Merge Request с summary findings (если настроен GITLAB_TOKEN).
  • Pipeline status — job завершается с ошибкой, если найдены findings выше уровня ACCELLENS_FAIL_ON.

5. Секреты и безопасность

  • ACCELLENS_TOKEN хранится в GitLab CI/CD Variables (Settings → CI/CD → Variables).
  • Токен имеет scope scan:write и report:read для конкретного проекта.
  • Рекомендуется использовать masked и protected переменные.
  • Optionally, используйте GitLab OIDC для short-lived токенов (roadmap).

6. Расширенная конфигурация

Использование template

Template уже включает:

  • Автоматическую установку CLI
  • Ожидание завершения сканирования
  • Получение отчёта
  • Публикацию комментариев в MR (если настроен GITLAB_TOKEN)
  • Fail-on-severity логику

Просто используйте extends: .accellens_scan_template:

include:
  - local: '.gitlab-ci/accellens-scan.yml'

accellens_scan:
  extends: .accellens_scan_template
  variables:
    ACCELLENS_URL: 'https://example.com'

Множественные сканы

accellens_scan_staging:
  extends: .accellens_scan_template
  variables:
    ACCELLENS_URL: 'https://staging.example.com'
  only:
    - develop

accellens_scan_production:
  extends: .accellens_scan_template
  variables:
    ACCELLENS_URL: 'https://example.com'
  only:
    - main
    - master

7. Ограничения

  • Максимум 20 URL за запуск (MVP).
  • Скан занимает до 10 минут; увеличивайте ACCELLENS_WAIT_TIMEOUT при необходимости.
  • Mobile сканы не поддерживаются (будет отдельный job v1+).

8. Troubleshooting

Симптом Причина Решение
Job timeout Длинные сканы Увеличить ACCELLENS_WAIT_TIMEOUT, оптимизировать URL список
HTTP 401 Неверный токен Обновить CI/CD variable, проверить права
Job не пишет отчёт Недостаточно прав Убедиться в праве write на проект

9. Roadmap интеграций

  • MR annotations с подсветкой строк (v1).
  • Mobile scan job (accellens/mobile-scan).
  • Slack уведомления (via webhook).
  • Интеграция с GitLab Security Dashboard.

10. Связанные документы