Версия: 1.0 Дата: 10 ноября 2025
Официальный GitHub Action accellens/github-action предоставляет запуск web
сканов как часть CI pipelines. Поддерживает PR-комментарии, статусные проверки
и загрузку отчётов.
Создайте workflow (например, .github/workflows/accellens-scan.yml):
name: Accessibility Scan
on:
pull_request:
branches: [main, develop]
push:
branches: [main]
workflow_dispatch:
inputs:
urls:
description: 'URLs to scan (comma-separated or file path)'
required: false
type: string
dry-run:
description: 'Run in dry-run mode (mock credentials, no real scan)'
required: false
type: boolean
default: false
jobs:
accessibility:
runs-on: ubuntu-latest
name: Accellens Accessibility Scan
permissions:
contents: read
pull-requests: write
issues: write
steps:
- name: Checkout code
uses: actions/checkout@v6
- name: Run Accellens Scan
id: accellens-scan
uses: ./.github/actions/accellens-scan
with:
project: ${{ secrets.ACCELLENS_PROJECT || 'mysite' }}
urls: ${{ github.event.inputs.urls || './urls.txt' }}
token: ${{ secrets.ACCELLENS_TOKEN }}
api-url: ${{ secrets.ACCELLENS_API_URL || 'https://api.accellens.dev' }}
fail-on: high
output-format: json
comment-pr: true
upload-artifact: true
dry-run: ${{ github.event.inputs.dry-run || 'false' }}
- name: Upload report artifact
if: always()
uses: actions/upload-artifact@v5
with:
name: accellens-report
path: accellens-report.json
retention-days: 30
if-no-files-found: ignore
- name: Display scan results
if: always()
run: |
echo "Scan ID: ${{ steps.accellens-scan.outputs.scan-id }}"
echo "Findings Count: ${{ steps.accellens-scan.outputs.findings-count }}"
echo "Critical Findings: ${{ steps.accellens-scan.outputs.findings-critical }}"
echo "High Findings: ${{ steps.accellens-scan.outputs.findings-high }}"Примечание: Для использования action из другого репозитория, замените ./.github/actions/accellens-scan на Tridention/Accessibility-Intelligence-Platform/.github/actions/accellens-scan@v1 после публикации.
Для тестирования workflow без реальных API вызовов используйте dry-run режим:
- name: Run Accellens Scan (Dry-Run)
uses: ./.github/actions/accellens-scan
with:
project: sample-project
urls: ./urls.txt
token: mock-token-for-dry-run
dry-run: 'true'Dry-run режим:
- ✅ Использует mock credentials (не требует реального токена)
- ✅ Генерирует mock результаты сканирования
- ✅ Создаёт mock отчёты (JSON/SARIF/PDF)
- ✅ Не выполняет реальные API вызовы
- ✅ Завершается успешно за ~2-3 секунды
Подробные логи успешного запуска см. в github-actions-dry-run-logs.md.
| Параметр | Обязателен | Значение по умолчанию | Описание |
|---|---|---|---|
project |
✅ | - | Slug проекта в платформе |
urls |
✅ | - | Путь к файлу со списком URL или одиночный URL |
token |
✅ | - | API токен (GitHub secret). Используйте mock-token-for-dry-run для dry-run режима |
api-url |
❌ | https://api.accellens.dev |
Базовый URL API Accellens |
fail-on |
❌ | none |
Уровень, при котором workflow завершается с ошибкой (critical, high, medium, low, none) |
output-format |
❌ | json |
json, pdf, sarif |
extra-headers |
❌ | - | Дополнительные HTTP заголовки (JSON строка) |
wait-timeout |
❌ | 900 |
Таймаут ожидания завершения (секунд) |
comment-pr |
❌ | true |
Публиковать результаты в PR комментариях |
upload-artifact |
❌ | true |
Загружать отчёт как артефакт |
dry-run |
❌ | false |
Запустить в dry-run режиме (mock credentials, no real scan) |
- Артефакт отчёта (
accellens-report.json/pdf) — загружается автоматически. - PR комментарий — автоматически публикуется в Pull Request с summary findings.
- Outputs:
scan-id— ID завершенного сканированияreport-path— путь к файлу отчётаfindings-count— общее количество findingsfindings-critical— количество critical findingsfindings-high— количество high severity findings
ACCELLENS_TOKENхранится в GitHub Secrets (org/team repo).- Токен имеет scope
scan:writeиreport:readдля конкретного проекта. - Optionally, используйте GitHub OIDC для short-lived токенов (roadmap).
- Максимум 20 URL за запуск (MVP).
- Скан занимает до 10 минут; увеличивайте
wait-timeoutпри необходимости. - Mobile сканы не поддерживаются (будет отдельный action v1+).
| Симптом | Причина | Решение |
|---|---|---|
| Workflow timeout | Длинные сканы | Увеличить wait-timeout, оптимизировать URL список |
| HTTP 401 | Неверный токен | Обновить secret, проверить права |
| Action не пишет отчёт | Недостаточно прав на workspace | Убедиться в праве write на repo |
| CLI installation failed | Проблемы с npm registry | Проверить доступность npm, использовать npm config set registry |
| Scan ID not found | Неверный формат scan ID | Проверить, что scan завершился успешно |
Проблема: Dry-run не активируется
Решение:
- Убедитесь, что
dry-run: 'true'установлен в inputs - Или используйте
token: mock-token-for-dry-run - Проверьте логи на наличие сообщения
⚠️ DRY-RUN MODE
Проблема: Dry-run генерирует пустой отчёт
Решение:
- Проверьте, что
output-formatуказан корректно (json,pdf,sarif) - Убедитесь, что файл
accellens-report.{format}создан в workspace
Для проверки конфигурации workflow без реальных сканов:
# Локальная валидация YAML
yamllint .github/workflows/accellens-scan.yml
# Проверка через act (локальный GitHub Actions runner)
act workflow_dispatch -W .github/workflows/accellens-scan.yml \
--input dry-run=true \
--secret ACCELLENS_TOKEN=mock-token-for-dry-runDry-Run режим:
⚠️ DRY-RUN MODE: Using mock credentials and simulated scan results
🔍 Running in DRY-RUN mode (mock credentials, no real scan)
Project: sample-project
URLs: ./urls.txt
Output format: json
Installing Accellens CLI...
✓ CLI installed successfully (mock)
Authenticating CLI...
✓ Authentication successful (mock)
Starting scan...
✓ Scan completed successfully (mock)
Scan ID: dry-run-abc123xyz
Generating report...
✓ Report saved to accellens-report.json
✓ Dry-run completed successfully
Реальный запуск:
Installing Accellens CLI...
✓ CLI installed successfully
Authenticating CLI...
✓ Authentication successful
Starting scan for project: mysite
Scan ID: 550e8400-e29b-41d4-a716-446655440000
Waiting for scan to complete (timeout: 900s)...
Scan status: running, waiting...
✓ Scan completed successfully
Fetching report...
✓ Report saved to accellens-report.json
✓ PR comment posted
Включите debug логирование:
- name: Run Accellens Scan
env:
ACTIONS_STEP_DEBUG: true
ACTIONS_RUNNER_DEBUG: true
uses: ./.github/actions/accellens-scan
with:
# ... параметрыПроверьте outputs:
- name: Debug outputs
if: always()
run: |
echo "Scan ID: ${{ steps.accellens-scan.outputs.scan-id }}"
echo "Report Path: ${{ steps.accellens-scan.outputs.report-path }}"
echo "Findings: ${{ steps.accellens-scan.outputs.findings-count }}"- PR annotations с подсветкой строк (v1).
- Mobile scan action (
accellens/mobile-action@v1). - Slack уведомления (via workflow dispatch).
Другие CI/CD интеграции: См. GitLab CI, Jenkins, CircleCI, Azure DevOps, Bitbucket Pipelines.
См. .github/workflows/accellens-scan.yml в репозитории для полного примера конфигурации.
Для тестирования workflow без реальных API вызовов:
- name: Validate workflow (Dry-Run)
uses: ./.github/actions/accellens-scan
with:
project: test-project
urls: https://example.com
token: mock-token-for-dry-run
dry-run: 'true'Подробные логи успешного запуска см. в github-actions-dry-run-logs.md.
Успешный dry-run:
- ✅ Workflow завершается успешно за ~2-3 секунды
- ✅ Генерируется mock отчёт с примерными данными
- ✅ Все outputs установлены корректно
- ✅ Артефакт загружается (если
upload-artifact: true)
Успешный реальный запуск:
- ✅ Scan выполняется и завершается успешно
- ✅ Отчёт содержит реальные findings
- ✅ PR комментарий публикуется (если
comment-pr: true) - ✅ Workflow может завершиться с ошибкой, если
fail-onусловие выполнено
- CLI Reference
- API Reference
- Testing Strategy
- Dry-Run Logs — логи успешного dry-run запуска