Files
shields/services/sonar/sonar-quality-gate.service.js
chris48s 39ec09329a migrate some services from examples to openApi part 44; affects [sonar] (#9919)
* fix sonar tests

* migrate some services from examples to openApi

* migrate some services from examples to openApi
2024-02-05 11:01:58 +00:00

72 lines
1.7 KiB
JavaScript

import { pathParam } from '../index.js'
import SonarBase from './sonar-base.js'
import {
documentation,
queryParamSchema,
openApiQueryParams,
} from './sonar-helpers.js'
export default class SonarQualityGate extends SonarBase {
static category = 'analysis'
static route = {
base: 'sonar',
pattern: ':metric(quality_gate|alert_status)/:component/:branch*',
queryParamSchema,
}
static openApi = {
'/sonar/quality_gate/{component}': {
get: {
summary: 'Sonar Quality Gate',
description: documentation,
parameters: [
pathParam({ name: 'component', example: 'swellaby:azdo-shellcheck' }),
...openApiQueryParams,
],
},
},
'/sonar/quality_gate/{component}/{branch}': {
get: {
summary: 'Sonar Quality Gate (branch)',
description: documentation,
parameters: [
pathParam({ name: 'component', example: 'swellaby:azdo-shellcheck' }),
pathParam({ name: 'branch', example: 'master' }),
...openApiQueryParams,
],
},
},
}
static defaultBadgeData = { label: 'quality gate' }
static render({ qualityState }) {
if (qualityState === 'OK') {
return {
message: 'passed',
color: 'success',
}
}
return {
message: 'failed',
color: 'critical',
}
}
async handle({ component, branch }, { server, sonarVersion }) {
const json = await this.fetch({
sonarVersion,
server,
component,
branch,
metricName: 'alert_status',
})
const { alert_status: qualityState } = this.transform({
json,
sonarVersion,
})
return this.constructor.render({ qualityState })
}
}