Skip to content

Latest commit

 

History

History
272 lines (210 loc) · 8.14 KB

File metadata and controls

272 lines (210 loc) · 8.14 KB

Jenkins Integration — Accellens

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


1. Обзор

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


2. Установка

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

Вариант 1: Использование Shared Library (рекомендуется)

  1. Скопируйте ci-cd/jenkins/accellens-pipeline.groovy в ваш Jenkins Shared Library
  2. Настройте Shared Library в Jenkins:
    • Manage Jenkins → Configure System → Global Pipeline Libraries
    • Name: accellens-pipeline
    • Default version: main
  3. Используйте в Jenkinsfile:
@Library('accellens-pipeline') _

accellensPipeline(
    project: 'my-project',
    url: 'https://example.com',
    outputFormat: 'json',
    failOn: 'high'
)

Вариант 2: Прямое использование

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

def accellensPipeline = load 'ci-cd/jenkins/accellens-pipeline.groovy'

accellensPipeline(
    project: env.ACCELLENS_PROJECT,
    url: env.ACCELLENS_URL,
    outputFormat: 'json',
    failOn: 'high'
)

Настройка

  1. Установите плагины:

    • NodeJS Plugin
    • Pipeline Utility Steps
    • HTML Publisher Plugin (опционально)
  2. Настройте Node.js:

    • Manage Jenkins → Global Tool Configuration → NodeJS
    • Добавьте Node.js 20+
  3. Добавьте credentials:

    • Manage Jenkins → Credentials → System → Global credentials
    • ID: accellens-token
    • Type: Secret text
    • Secret: Ваш Accellens API токен

3. Параметры Pipeline

Параметр Обязателен По умолчанию Описание
project - Slug проекта в Accellens
url ✅* - URL для сканирования (*если не указан urlsFile)
urlsFile ✅* - Файл со списком URL (*если не указан url)
apiUrl https://api.accellens.dev Базовый URL API
outputFormat json Формат отчёта: json, pdf, sarif
failOn none Уровень для fail: critical, high, medium, low, none
waitTimeout 900 Таймаут ожидания (секунды)
commentPR false Публиковать комментарии в PR
uploadArtifact true Загружать отчёт как артефакт

Переменные окружения

Можно использовать переменные окружения вместо параметров:

  • ACCELLENS_PROJECT
  • ACCELLENS_URL или ACCELLENS_URLS_FILE
  • ACCELLENS_API_URL
  • ACCELLENS_OUTPUT_FORMAT
  • ACCELLENS_FAIL_ON
  • ACCELLENS_WAIT_TIMEOUT

4. Примеры использования

Базовый пример

@Library('accellens-pipeline') _

accellensPipeline(
    project: 'my-project',
    url: 'https://example.com'
)

С параметрами build

pipeline {
    agent any

    parameters {
        string(name: 'ACCELLENS_URL', defaultValue: 'https://example.com')
        choice(name: 'ACCELLENS_FAIL_ON', choices: ['none', 'low', 'medium', 'high', 'critical'])
    }

    stages {
        stage('Scan') {
            steps {
                script {
                    accellensPipeline(
                        project: 'my-project',
                        url: params.ACCELLENS_URL,
                        failOn: params.ACCELLENS_FAIL_ON
                    )
                }
            }
        }
    }
}

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

stage('Accessibility Scans') {
    parallel {
        stage('Staging') {
            steps {
                script {
                    accellensPipeline(
                        project: 'my-project',
                        url: 'https://staging.example.com'
                    )
                }
            }
        }
        stage('Production') {
            steps {
                script {
                    accellensPipeline(
                        project: 'my-project',
                        url: 'https://example.com'
                    )
                }
            }
        }
    }
}

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

  • Артефакт отчёта (accellens-report.json/pdf).
  • HTML отчёт (через HTML Publisher Plugin).
  • Build status (pass/fail).
  • Уведомления (email, Slack, и т.д.).

6. Интеграция с Jenkins Plugins

HTML Publisher Plugin

post {
    always {
        publishHTML([
            reportName: 'Accessibility Report',
            reportDir: '.',
            reportFiles: 'accellens-report.json',
            keepAll: true,
            allowMissing: false
        ])
    }
}

JUnit Plugin (для SARIF)

post {
    always {
        junit 'accellens-report.sarif'
    }
}

Slack Notification

post {
    failure {
        slackSend(
            channel: '#accessibility',
            color: 'danger',
            message: "Accessibility scan failed for ${env.JOB_NAME} #${env.BUILD_NUMBER}"
        )
    }
    success {
        slackSend(
            channel: '#accessibility',
            color: 'good',
            message: "Accessibility scan passed for ${env.JOB_NAME} #${env.BUILD_NUMBER}"
        )
    }
}

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

  • ACCELLENS_TOKEN хранится в Jenkins Credentials.
  • Используйте Secret text credentials для токенов.
  • Рекомендуется использовать Jenkins Credentials Binding Plugin.
  • Для production используйте HashiCorp Vault или AWS Secrets Manager интеграцию.

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

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

9. Troubleshooting

Симптом Причина Решение
Build timeout Длинные сканы Увеличить ACCELLENS_WAIT_TIMEOUT, оптимизировать URL список
HTTP 401 Неверный токен Обновить credentials, проверить права
CLI не найден npm не установлен Установить Node.js в Jenkins или использовать Docker agent

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

  • Jenkins Plugin для Accellens (v1).
  • Mobile scan stage (accellens/mobile-scan).
  • Blue Ocean интеграция.
  • Pipeline as Code templates.

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