mirror of
https://github.com/cypress-io/cypress.git
synced 2026-01-05 14:09:46 -06:00
* WIP: post install message on commit * linting * finish message contents * linting * fix npm and binary, circleci name * comment on CI build on AppVeyor * remove extra build branches
151 lines
3.6 KiB
JavaScript
151 lines
3.6 KiB
JavaScript
require('@packages/coffee/register')
|
|
|
|
const la = require('lazy-ass')
|
|
const is = require('check-more-types')
|
|
const { getNameAndBinary, getJustVersion, getShortCommit } = require('./utils')
|
|
const bump = require('./binary/bump')
|
|
const { stripIndent } = require('common-tags')
|
|
const os = require('os')
|
|
const minimist = require('minimist')
|
|
const { getInstallJson } = require('@cypress/commit-message-install')
|
|
|
|
/* eslint-disable no-console */
|
|
|
|
const { npm, binary } = getNameAndBinary(process.argv)
|
|
|
|
la(is.unemptyString(npm), 'missing npm url')
|
|
la(is.unemptyString(binary), 'missing binary url')
|
|
const platform = os.platform()
|
|
const arch = os.arch()
|
|
|
|
console.log('bumping versions for other projects')
|
|
console.log(' npm:', npm)
|
|
console.log(' binary:', binary)
|
|
console.log(' platform:', platform)
|
|
console.log(' arch:', arch)
|
|
|
|
const cliOptions = minimist(process.argv, {
|
|
string: 'provider',
|
|
alias: {
|
|
provider: 'p',
|
|
},
|
|
})
|
|
|
|
/**
|
|
* Returns given string surrounded by ```json + ``` quotes
|
|
* @param {string} s
|
|
*/
|
|
const toJsonCodeBlock = (s) => {
|
|
const start = '```json'
|
|
const finish = '```'
|
|
|
|
return `${start}\n${s}\n${finish}\n`
|
|
}
|
|
|
|
/**
|
|
* Converts given JSON object into markdown text block
|
|
* @param {object} object
|
|
*/
|
|
const toMarkdownJsonBlock = (object) => {
|
|
la(object, 'expected an object to convert to JSON', object)
|
|
const str = JSON.stringify(object, null, 2)
|
|
|
|
return toJsonCodeBlock(str)
|
|
}
|
|
|
|
console.log('starting each test projects')
|
|
|
|
const shortNpmVersion = getJustVersion(npm)
|
|
|
|
console.log('short NPM version', shortNpmVersion)
|
|
|
|
let subject = `Testing new ${platform} ${arch} Cypress version ${shortNpmVersion}`
|
|
const commitInfo = getShortCommit()
|
|
|
|
if (commitInfo) {
|
|
subject += ` ${commitInfo.short}`
|
|
}
|
|
|
|
// instructions for installing this binary,
|
|
// see "@cypress/commit-message-install"
|
|
const env = {
|
|
CYPRESS_INSTALL_BINARY: binary,
|
|
}
|
|
|
|
const getStatusAndMessage = (projectRepoName) => {
|
|
// also pass "status" object that points back at this repo and this commit
|
|
// so that other projects can report their test success as GitHub commit status check
|
|
let status = null
|
|
const commit = commitInfo && commitInfo.sha
|
|
|
|
if (commit && is.commitId(commit)) {
|
|
// commit is full 40 character hex string
|
|
const platform = os.platform()
|
|
const arch = os.arch()
|
|
|
|
status = {
|
|
owner: 'cypress-io',
|
|
repo: 'cypress',
|
|
sha: commit,
|
|
platform,
|
|
arch,
|
|
context: `[${platform}-${arch}] ${projectRepoName}`,
|
|
}
|
|
}
|
|
|
|
const commitMessageInstructions = getInstallJson({
|
|
packages: npm,
|
|
env,
|
|
platform,
|
|
arch,
|
|
branch: shortNpmVersion, // use as version as branch name on test projects
|
|
commit,
|
|
status,
|
|
})
|
|
const jsonBlock = toMarkdownJsonBlock(commitMessageInstructions)
|
|
const footer =
|
|
'Use tool `@cypress/commit-message-install` to install from above block'
|
|
let message = `${subject}\n\n${jsonBlock}\n${footer}\n`
|
|
|
|
if (process.env.CIRCLE_BUILD_URL) {
|
|
message += '\n'
|
|
message += stripIndent`
|
|
CircleCI job url: ${process.env.CIRCLE_BUILD_URL}
|
|
`
|
|
}
|
|
|
|
if (process.env.APPVEYOR) {
|
|
const account = process.env.APPVEYOR_ACCOUNT_NAME
|
|
const slug = process.env.APPVEYOR_PROJECT_SLUG
|
|
const build = process.env.APPVEYOR_BUILD_NUMBER
|
|
|
|
message += '\n'
|
|
message += stripIndent`
|
|
AppVeyor: ${account}/${slug} ${build}
|
|
`
|
|
}
|
|
|
|
console.log('commit message:')
|
|
console.log(message)
|
|
|
|
return {
|
|
status,
|
|
message,
|
|
}
|
|
}
|
|
|
|
const onError = (e) => {
|
|
console.error('could not bump test projects')
|
|
console.error(e)
|
|
process.exit(1)
|
|
}
|
|
|
|
bump
|
|
.runTestProjects(
|
|
getStatusAndMessage,
|
|
cliOptions.provider,
|
|
shortNpmVersion,
|
|
platform
|
|
)
|
|
.catch(onError)
|