Версия: 1.0 Дата: 10 ноября 2025
Интеграция Accellens с Azure DevOps Pipelines позволяет запускать web сканы как часть CI/CD pipelines. Поддерживает PR-комментарии, статусные проверки и публикацию отчётов.
Скопируйте template в ваш проект:
mkdir -p ci-cd/azure-pipelines
cp ci-cd/azure-pipelines/accellens-scan.yml ci-cd/azure-pipelines/Добавьте в azure-pipelines.yml:
trigger:
branches:
include:
- main
- develop
pullRequest:
branches:
include:
- main
pool:
vmImage: 'ubuntu-latest'
variables:
ACCELLENS_PROJECT: 'my-project'
ACCELLENS_API_URL: 'https://api.accellens.dev'
ACCELLENS_OUTPUT_FORMAT: 'json'
ACCELLENS_FAIL_ON: 'high'
stages:
- stage: AccessibilityScan
displayName: 'Accessibility Scan'
jobs:
- job: AccellensScan
displayName: 'Run Accellens Scan'
steps:
- template: ci-cd/azure-pipelines/accellens-scan.yml
parameters:
accellensProject: $(ACCELLENS_PROJECT)
accellensUrl: 'https://example.com'
accellensApiUrl: $(ACCELLENS_API_URL)
accellensOutputFormat: $(ACCELLENS_OUTPUT_FORMAT)
accellensFailOn: $(ACCELLENS_FAIL_ON)В Azure DevOps перейдите в Pipelines → Your Pipeline → Edit → Variables и добавьте:
ACCELLENS_TOKEN— API токен (отметьте как secret)ACCELLENS_PROJECT— slug проекта (опционально, можно указать в pipeline)
Или используйте Variable Groups:
- Pipelines → Library → Variable groups
- Создайте группу
accellens-variables - Добавьте переменные в группу
- Используйте в pipeline:
variables:
- group: accellens-variables| Параметр | Обязателен | По умолчанию | Описание |
|---|---|---|---|
accellensProject |
✅ | - | Slug проекта в Accellens |
accellensUrl |
✅* | - | URL для сканирования (*если не указан accellensUrlsFile) |
accellensUrlsFile |
✅* | urls.txt |
Файл со списком URL (*если не указан accellensUrl) |
accellensApiUrl |
❌ | https://api.accellens.dev |
Базовый URL API |
accellensOutputFormat |
❌ | json |
Формат отчёта: json, pdf, sarif |
accellensFailOn |
❌ | none |
Уровень для fail: critical, high, medium, low, none |
accellensWaitTimeout |
❌ | 900 |
Таймаут ожидания (секунды) |
Можно использовать переменные окружения вместо параметров:
ACCELLENS_PROJECTACCELLENS_URLилиACCELLENS_URLS_FILEACCELLENS_API_URLACCELLENS_OUTPUT_FORMATACCELLENS_FAIL_ONACCELLENS_WAIT_TIMEOUT
- Перейдите в Pipelines → Your Pipeline → Edit → Variables
- Добавьте переменные:
ACCELLENS_PROJECT: slug вашего проектаACCELLENS_TOKEN: ваш API токен (отметьте как secret)
Или используйте Variable Groups:
- Pipelines → Library → Variable groups
- Создайте группу
accellens-variables - Добавьте переменные в группу
- Используйте в pipeline:
variables:
- group: accellens-variables- Артефакт отчёта (
accellens-report.json/pdf) в Azure Artifacts. - Test Results (через PublishTestResults task).
- Pipeline status (pass/fail).
- PR комментарии (через Azure DevOps REST API).
trigger:
branches:
include:
- main
pullRequest:
branches:
include:
- main
steps:
# ... предыдущие шаги ...
- task: PowerShell@2
condition: and(succeeded(), eq(variables['Build.Reason'], 'PullRequest'))
inputs:
targetType: 'inline'
script: |
$report = Get-Content accellens-report.json | ConvertFrom-Json
$comment = "## Accessibility Scan Results`n`n"
$comment += "**Findings:** $($report.findings.Count)`n"
$comment += "**AAS Score:** $($report.aas_score)`n"
$headers = @{
Authorization = "Bearer $(System.AccessToken)"
}
$body = @{
comments = @(
@{
parentCommentId = 0
content = $comment
commentType = 1
}
)
} | ConvertTo-Json -Depth 10
Invoke-RestMethod -Uri "$(System.CollectionUri)$(System.TeamProject)/_apis/git/repositories/$(Build.Repository.ID)/pullRequests/$(System.PullRequest.PullRequestId)/threads?api-version=7.0" -Method Post -Headers $headers -Body $body -ContentType "application/json"
displayName: 'Post PR Comment'Создайте templates/accellens-scan.yml:
parameters:
- name: project
type: string
- name: urls
type: string
default: './urls.txt'
- name: failOn
type: string
default: 'none'
steps:
- task: NodeTool@0
inputs:
versionSpec: '20.x'
- script: |
npm install -g @accellens/cli
displayName: 'Install Accellens CLI'
- script: |
accellens scan \
--project ${{ parameters.project }} \
--urls ${{ parameters.urls }} \
--token $(ACCELLENS_TOKEN) \
--fail-on ${{ parameters.failOn }} \
--output-format json
displayName: 'Run Accessibility Scan'
env:
ACCELLENS_TOKEN: $(ACCELLENS_TOKEN)Используйте в azure-pipelines.yml:
resources:
repositories:
- repository: templates
type: git
name: YourProject/templates
extends:
template: templates/accellens-scan.yml@templates
parameters:
project: 'mysite'
urls: './urls.txt'
failOn: 'high'ACCELLENS_TOKENхранится в Azure DevOps Variables (отметьте как secret).- Используйте Variable Groups для управления секретами на уровне проекта/организации.
- Для production используйте Azure Key Vault интеграцию.
- Используйте
System.AccessTokenдля доступа к Azure DevOps API.
- Максимум 20 URL за запуск (MVP).
- Скан занимает до 10 минут; увеличивайте
ACCELLENS_WAIT_TIMEOUTпри необходимости. - Mobile сканы не поддерживаются (будет отдельный task v1+).
| Симптом | Причина | Решение |
|---|---|---|
| Pipeline timeout | Длинные сканы | Увеличить ACCELLENS_WAIT_TIMEOUT, оптимизировать URL список |
| HTTP 401 | Неверный токен | Обновить variable, проверить права |
| Task не пишет отчёт | Недостаточно прав | Убедиться в праве Contribute на репозиторий |
- Azure DevOps Extension для Accellens (v1).
- Mobile scan task (
accellens/mobile-scan). - Интеграция с Azure Security Center.
- Work Item интеграция для создания задач из findings.