Skip to content
Snippets Groups Projects
Unverified Commit c2d1cc28 authored by chris48s's avatar chris48s Committed by GitHub
Browse files

deprecate [wercker] service (#8642)

parent a2751af0
No related branches found
No related tags found
No related merge requests found
import Joi from 'joi' import { deprecatedService } from '../index.js'
import { isBuildStatus, renderBuildStatusBadge } from '../build-status.js'
import { BaseJsonService } from '../index.js'
const werckerSchema = Joi.array() export default deprecatedService({
.items( category: 'build',
Joi.object({ route: {
result: isBuildStatus,
})
)
.min(0)
.max(1)
.required()
const werckerCIDocumentation = `
<p>
Note that Wercker badge Key (used in Wercker's native badge urls) is not the same as
the Application Id and the badge key will not work.
</p>
<p>
You can use the Wercker API to locate your Application Id:
<br />
<br />
https://app.wercker.com/api/v3/applications/:username/:applicationName
<br />
For example: https://app.wercker.com/api/v3/applications/wercker/go-wercker-api
<br />
<br />
Your Application Id will be in the 'id' field in the API response.
</p>
`
export default class Wercker extends BaseJsonService {
static category = 'build'
static route = {
base: 'wercker', base: 'wercker',
format: pattern: ':various*',
'(?:(?:ci/)([a-fA-F0-9]{24})|(?:build|ci)/([^/]+/[^/]+?))(?:/(.+?))?', },
capture: ['projectId', 'applicationName', 'branch'], label: 'wercker',
} dateAdded: new Date('2022-11-18'),
})
static examples = [
{
title: 'Wercker CI Run',
pattern: 'ci/:applicationId',
namedParams: { applicationId: '559e33c8e982fc615500b357' },
staticPreview: this.render({ result: 'passed' }),
documentation: werckerCIDocumentation,
},
{
title: 'Wercker CI Run (branch)',
pattern: 'ci/:applicationId/:branch',
namedParams: {
applicationId: '559e33c8e982fc615500b357',
branch: 'master',
},
staticPreview: this.render({ result: 'passed' }),
documentation: werckerCIDocumentation,
},
{
title: 'Wercker Build',
pattern: 'build/:userName/:applicationName',
namedParams: {
userName: 'wercker',
applicationName: 'go-wercker-api',
},
staticPreview: this.render({ result: 'passed' }),
},
{
title: 'Wercker Build (branch)',
pattern: 'build/:userName/:applicationName/:branch',
namedParams: {
userName: 'wercker',
applicationName: 'go-wercker-api',
branch: 'master',
},
staticPreview: this.render({ result: 'passed' }),
},
]
static render({ result }) {
return renderBuildStatusBadge({ status: result })
}
static getBaseUrl({ projectId, applicationName }) {
if (applicationName) {
return `https://app.wercker.com/api/v3/applications/${applicationName}/builds`
} else {
return `https://app.wercker.com/api/v3/runs?applicationId=${projectId}`
}
}
async fetch({ projectId, applicationName, branch }) {
let url
const searchParams = { branch, limit: 1 }
if (applicationName) {
url = `https://app.wercker.com/api/v3/applications/${applicationName}/builds`
} else {
url = 'https://app.wercker.com/api/v3/runs'
searchParams.applicationId = projectId
}
return this._requestJson({
schema: werckerSchema,
url,
options: { searchParams },
errorMessages: {
401: 'private application not supported',
404: 'application not found',
},
})
}
async handle({ projectId, applicationName, branch }) {
const json = await this.fetch({
projectId,
applicationName,
branch,
})
if (json.length === 0) {
return this.constructor.render({
result: 'not built',
})
}
const { result } = json[0]
return this.constructor.render({ result })
}
}
import { isBuildStatus } from '../build-status.js' import { ServiceTester } from '../tester.js'
import { createServiceTester } from '../tester.js' export const t = new ServiceTester({
export const t = await createServiceTester() id: 'wercker',
title: 'Wercker',
t.create('Build status') pathPrefix: '/wercker',
.get('/build/wercker/go-wercker-api.json') })
.expectBadge({ label: 'build', message: isBuildStatus })
t.create('Build status (deprecated)')
t.create('Build status (with branch)')
.get('/build/wercker/go-wercker-api/master.json')
.expectBadge({ label: 'build', message: isBuildStatus })
t.create('Build status (application not found)')
.get('/build/some-project/that-doesnt-exist.json')
.expectBadge({ label: 'build', message: 'application not found' })
t.create('Build status (private application)')
.get('/build/wercker/blueprint.json')
.expectBadge({ label: 'build', message: 'private application not supported' })
t.create('Build passed')
.get('/build/wercker/go-wercker-api.json') .get('/build/wercker/go-wercker-api.json')
.intercept(nock => .expectBadge({ label: 'wercker', message: 'no longer available' })
nock('https://app.wercker.com/api/v3/applications/')
.get('/wercker/go-wercker-api/builds?limit=1')
.reply(200, [{ status: 'finished', result: 'passed' }])
)
.expectBadge({
label: 'build',
message: 'passing',
color: 'brightgreen',
})
t.create('Build failed')
.get('/build/wercker/go-wercker-api.json')
.intercept(nock =>
nock('https://app.wercker.com/api/v3/applications/')
.get('/wercker/go-wercker-api/builds?limit=1')
.reply(200, [{ status: 'finished', result: 'failed' }])
)
.expectBadge({ label: 'build', message: 'failing', color: 'red' })
t.create('CI status by ID')
.get('/ci/559e33c8e982fc615500b357.json')
.expectBadge({ label: 'build', message: isBuildStatus })
t.create('CI status by ID (with branch)')
.get('/ci/559e33c8e982fc615500b357/master.json')
.expectBadge({ label: 'build', message: isBuildStatus })
t.create('CI status by ID (no runs yet)') t.create('CI status (deprecated)')
.get('/ci/559e33c8e982fc615500b357.json') .get('/ci/559e33c8e982fc615500b357.json')
.intercept(nock => .expectBadge({ label: 'wercker', message: 'no longer available' })
nock('https://app.wercker.com/api/v3')
.get('/runs?applicationId=559e33c8e982fc615500b357&limit=1')
.reply(200, [])
)
.expectBadge({ label: 'build', message: 'not built' })
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment