diff --git a/services/jenkins/jenkins-build.service.js b/services/jenkins/jenkins-build.service.js
index 16ed187603..942a16cada 100644
--- a/services/jenkins/jenkins-build.service.js
+++ b/services/jenkins/jenkins-build.service.js
@@ -1,4 +1,5 @@
import Joi from 'joi'
+import { queryParam } from '../index.js'
import { renderBuildStatusBadge } from '../build-status.js'
import JenkinsBase from './jenkins-base.js'
import {
@@ -40,16 +41,20 @@ export default class JenkinsBuild extends JenkinsBase {
queryParamSchema,
}
- static examples = [
- {
- title: 'Jenkins',
- namedParams: {},
- queryParams: {
- jobUrl: 'https://wso2.org/jenkins/view/All%20Builds/job/archetypes',
+ static openApi = {
+ '/jenkins/build': {
+ get: {
+ summary: 'Jenkins Build',
+ parameters: [
+ queryParam({
+ name: 'jobUrl',
+ example: 'https://ci.eclipse.org/jgit/job/jgit',
+ required: true,
+ }),
+ ],
},
- staticPreview: renderBuildStatusBadge({ status: 'passing' }),
},
- ]
+ }
static defaultBadgeData = { label: 'build' }
diff --git a/services/jenkins/jenkins-build.tester.js b/services/jenkins/jenkins-build.tester.js
index 573530a6d1..c11e96cd82 100644
--- a/services/jenkins/jenkins-build.tester.js
+++ b/services/jenkins/jenkins-build.tester.js
@@ -14,9 +14,7 @@ t.create('build job not found')
t.create('build found (view)')
.get(
- `/build.json?jobUrl=${encodeURIComponent(
- 'https://wso2.org/jenkins/view/All Builds/job/archetypes',
- )}`,
+ '/build.json?jobUrl=https://jenkins.sqlalchemy.org/view/alembic/job/alembic_coverage/',
)
.expectBadge({ label: 'build', message: isJenkinsBuildStatus })
diff --git a/services/jenkins/jenkins-coverage.service.js b/services/jenkins/jenkins-coverage.service.js
index 11fef840b1..5271c25bce 100644
--- a/services/jenkins/jenkins-coverage.service.js
+++ b/services/jenkins/jenkins-coverage.service.js
@@ -1,4 +1,5 @@
import Joi from 'joi'
+import { pathParam, queryParam } from '../index.js'
import { coveragePercentage } from '../color-formatters.js'
import JenkinsBase from './jenkins-base.js'
import {
@@ -87,7 +88,7 @@ const formatMap = {
},
}
-const documentation = `
+const description = `
We support coverage metrics from a variety of Jenkins plugins:
@@ -107,20 +108,26 @@ export default class JenkinsCoverage extends JenkinsBase {
queryParamSchema,
}
- static examples = [
- {
- title: 'Jenkins Coverage',
- namedParams: {
- format: 'cobertura',
+ static openApi = {
+ '/jenkins/coverage/{format}': {
+ get: {
+ summary: 'Jenkins Coverage',
+ description,
+ parameters: [
+ pathParam({
+ name: 'format',
+ example: 'cobertura',
+ schema: { type: 'string', enum: this.getEnum('format') },
+ }),
+ queryParam({
+ name: 'jobUrl',
+ example: 'https://jenkins.sqlalchemy.org/job/alembic_coverage',
+ required: true,
+ }),
+ ],
},
- queryParams: {
- jobUrl: 'https://jenkins.sqlalchemy.org/job/alembic_coverage',
- },
- keywords: ['jacoco', 'cobertura', 'llvm-cov', 'istanbul'],
- staticPreview: this.render({ coverage: 95 }),
- documentation,
},
- ]
+ }
static defaultBadgeData = { label: 'coverage' }
diff --git a/services/jenkins/jenkins-coverage.tester.js b/services/jenkins/jenkins-coverage.tester.js
index f494e014e6..65a5d77a3a 100644
--- a/services/jenkins/jenkins-coverage.tester.js
+++ b/services/jenkins/jenkins-coverage.tester.js
@@ -10,13 +10,13 @@ export const t = await createServiceTester()
t.create('jacoco: job found')
.get(
`/jacoco.json?jobUrl=${encodeURIComponent(
- 'https://wso2.org/jenkins/view/All%20Builds/job/archetypes',
+ 'https://ci-maven.apache.org/job/Maven/job/maven-box/job/maven-surefire/job/master',
)}`,
)
.expectBadge({ label: 'coverage', message: isIntegerPercentage })
t.create('jacoco: job not found')
- .get('/jacoco.json?jobUrl=https://wso2.org/jenkins/job/does-not-exist')
+ .get('/jacoco.json?jobUrl=https://ci-maven.apache.org/job/does-not-exist')
.expectBadge({ label: 'coverage', message: 'job or coverage not found' })
t.create('cobertura: job not found')
@@ -31,12 +31,6 @@ t.create('cobertura: job found')
)
.expectBadge({ label: 'coverage', message: isIntegerPercentage })
-t.create('code coverage API v1: job not found')
- .get(
- '/apiv1.json?jobUrl=https://jenkins.library.illinois.edu/job/does-not-exist',
- )
- .expectBadge({ label: 'coverage', message: 'job or coverage not found' })
-
const coverageApiV1Response = {
_class: 'io.jenkins.plugins.coverage.targets.CoverageResult',
results: {
@@ -66,9 +60,17 @@ t.create('code coverage API v1: job found')
)
.expectBadge({ label: 'coverage', message: isIntegerPercentage })
-t.create('code coverage API v4+: job not found')
+t.create('code coverage API v1: job not found')
.get(
- '/apiv4.json?jobUrl=https://jenkins.library.illinois.edu/job/does-not-exist',
+ '/apiv1.json?jobUrl=http://loneraver.duckdns.org:8082/job/does-not-exist',
+ )
+ .intercept(nock =>
+ nock(
+ 'http://loneraver.duckdns.org:8082/job/does-not-exist/lastCompletedBuild',
+ )
+ .get('/coverage/result/api/json')
+ .query(true)
+ .reply(404),
)
.expectBadge({ label: 'coverage', message: 'job or coverage not found' })
@@ -77,3 +79,7 @@ t.create('code coverage API v4+: job found')
'/apiv4.json?jobUrl=https://jenkins.mm12.xyz/jenkins/job/nmfu/job/master',
)
.expectBadge({ label: 'coverage', message: isIntegerPercentage })
+
+t.create('code coverage API v4+: job not found')
+ .get('/apiv4.json?jobUrl=https://jenkins.mm12.xyz/jenkins/job/does-not-exist')
+ .expectBadge({ label: 'coverage', message: 'job or coverage not found' })
diff --git a/services/jenkins/jenkins-tests.service.js b/services/jenkins/jenkins-tests.service.js
index 667e70534b..ffeb670884 100644
--- a/services/jenkins/jenkins-tests.service.js
+++ b/services/jenkins/jenkins-tests.service.js
@@ -1,11 +1,12 @@
import Joi from 'joi'
import {
- documentation,
+ documentation as description,
testResultQueryParamSchema,
+ testResultOpenApiQueryParams,
renderTestResultBadge,
} from '../test-results.js'
import { optionalNonNegativeInteger } from '../validators.js'
-import { InvalidResponse } from '../index.js'
+import { InvalidResponse, queryParam } from '../index.js'
import JenkinsBase from './jenkins-base.js'
import {
buildTreeParamQueryString,
@@ -41,27 +42,22 @@ export default class JenkinsTests extends JenkinsBase {
queryParamSchema: queryParamSchema.concat(testResultQueryParamSchema),
}
- static examples = [
- {
- title: 'Jenkins tests',
- namedParams: {},
- queryParams: {
- compact_message: null,
- passed_label: 'passed',
- failed_label: 'failed',
- skipped_label: 'skipped',
- jobUrl: 'https://jenkins.sqlalchemy.org/job/alembic_gerrit',
+ static openApi = {
+ '/jenkins/tests': {
+ get: {
+ summary: 'Jenkins Tests',
+ description,
+ parameters: [
+ queryParam({
+ name: 'jobUrl',
+ example: 'https://jenkins.sqlalchemy.org/job/alembic_gerrit',
+ required: true,
+ }),
+ ...testResultOpenApiQueryParams,
+ ],
},
- staticPreview: this.render({
- passed: 477,
- failed: 2,
- skipped: 0,
- total: 479,
- isCompact: false,
- }),
- documentation,
},
- ]
+ }
static defaultBadgeData = { label: 'tests' }