Skip to content

Commit

Permalink
feat: upgrade semantic-release in travis-after-success script
Browse files Browse the repository at this point in the history
  • Loading branch information
Kent C. Dodds committed Apr 7, 2018
1 parent 7dd1f6a commit 09f6662
Show file tree
Hide file tree
Showing 4 changed files with 76 additions and 50 deletions.
28 changes: 14 additions & 14 deletions package.json
Original file line number Diff line number Diff line change
Expand Up @@ -31,14 +31,14 @@
"author": "Kent C. Dodds <kent@doddsfamily.us> (http://kentcdodds.com/)",
"license": "MIT",
"dependencies": {
"all-contributors-cli": "^4.11.0",
"all-contributors-cli": "^4.11.1",
"arrify": "^1.0.1",
"babel-cli": "^6.26.0",
"babel-jest": "^22.4.1",
"babel-jest": "^22.4.3",
"babel-macros": "^1.2.0",
"babel-plugin-external-helpers": "^6.22.0",
"babel-plugin-minify-dead-code-elimination": "^0.3.0",
"babel-plugin-module-resolver": "^3.1.0",
"babel-plugin-module-resolver": "^3.1.1",
"babel-plugin-transform-class-properties": "^6.24.1",
"babel-plugin-transform-inline-environment-variables": "^0.3.0",
"babel-plugin-transform-object-rest-spread": "^6.26.0",
Expand All @@ -47,36 +47,36 @@
"babel-preset-env": "^1.6.1",
"babel-preset-react": "^6.24.1",
"concurrently": "^3.5.1",
"cross-env": "^5.1.3",
"cross-env": "^5.1.4",
"cross-spawn": "^6.0.5",
"doctoc": "^1.3.1",
"eslint": "^4.18.2",
"eslint": "^4.19.1",
"eslint-config-kentcdodds": "^13.0.1",
"eslint-config-prettier": "^2.9.0",
"glob": "^7.1.2",
"husky": "^0.14.3",
"is-ci": "^1.1.0",
"jest": "^22.4.2",
"lint-staged": "^7.0.0",
"jest": "^22.4.3",
"lint-staged": "^7.0.4",
"lodash.camelcase": "^4.3.0",
"lodash.has": "^4.5.2",
"lodash.omit": "^4.5.0",
"mkdirp": "^0.5.1",
"prettier": "^1.11.1",
"read-pkg-up": "^3.0.0",
"resolve": "^1.5.0",
"resolve": "^1.6.0",
"rimraf": "^2.6.2",
"rollup": "^0.56.5",
"rollup": "^0.57.1",
"rollup-plugin-babel": "^3.0.3",
"rollup-plugin-commonjs": "^9.0.0",
"rollup-plugin-commonjs": "^9.1.0",
"rollup-plugin-json": "^2.3.0",
"rollup-plugin-node-builtins": "^2.1.2",
"rollup-plugin-node-globals": "^1.1.0",
"rollup-plugin-node-resolve": "^3.2.0",
"rollup-plugin-node-globals": "^1.2.0",
"rollup-plugin-node-resolve": "^3.3.0",
"rollup-plugin-replace": "^2.0.0",
"rollup-plugin-uglify": "^3.0.0",
"which": "^1.3.0",
"yargs-parser": "^9.0.2"
"yargs-parser": "^10.0.0"
},
"eslintConfig": {
"extends": ["kentcdodds", "kentcdodds/jest"],
Expand All @@ -99,6 +99,6 @@
"homepage": "https://github.com/kentcdodds/kcd-scripts#readme",
"devDependencies": {
"jest-in-case": "^1.0.2",
"slash": "^1.0.0"
"slash": "^2.0.0"
}
}
23 changes: 18 additions & 5 deletions src/scripts/__tests__/__snapshots__/travis-after-success.js.snap
Original file line number Diff line number Diff line change
@@ -1,17 +1,30 @@
// Jest Snapshot v1, https://goo.gl/fbAQLP

exports[`travis-after-success calls concurrently with both scripts when on travis 1`] = `concurrently --prefix [{name}] --names codecov,release --prefix-colors bgBlue.bold.reset,bgGreen.bold.reset "echo installing codecov && npx -p codecov -c 'echo running codecov && codecov'" "echo installing semantic-release && npx -p semantic-release@8 -c 'echo running semantic-release && semantic-release pre && npm publish && semantic-release post'"`;
exports[`travis-after-success calls concurrently with both scripts when on travis 1`] = `npx travis-deploy-once`;

exports[`travis-after-success does not do autorelease script when running on travis but in a pull request 1`] = `concurrently --prefix [{name}] --names codecov --prefix-colors bgBlue.bold.reset "echo installing codecov && npx -p codecov -c 'echo running codecov && codecov'"`;
exports[`travis-after-success calls concurrently with both scripts when on travis 2`] = `concurrently --prefix [{name}] --names codecov,release --prefix-colors bgBlue.bold.reset,bgGreen.bold.reset "echo installing codecov && npx -p codecov -c 'echo running codecov && codecov'" "echo installing semantic-release && npx -p semantic-release@8 -c 'echo running semantic-release && semantic-release'"`;

exports[`travis-after-success does not do the autorelease script when the version is different 1`] = `concurrently --prefix [{name}] --names codecov --prefix-colors bgBlue.bold.reset "echo installing codecov && npx -p codecov -c 'echo running codecov && codecov'"`;
exports[`travis-after-success does not do autorelease script when running on travis but in a pull request 1`] = `npx travis-deploy-once`;

exports[`travis-after-success does not do the codecov script when opted out 1`] = `concurrently --prefix [{name}] --names release --prefix-colors bgBlue.bold.reset "echo installing semantic-release && npx -p semantic-release@8 -c 'echo running semantic-release && semantic-release pre && npm publish && semantic-release post'"`;
exports[`travis-after-success does not do autorelease script when running on travis but in a pull request 2`] = `concurrently --prefix [{name}] --names codecov --prefix-colors bgBlue.bold.reset "echo installing codecov && npx -p codecov -c 'echo running codecov && codecov'"`;

exports[`travis-after-success does not do the codecov script when there is no coverage directory 1`] = `concurrently --prefix [{name}] --names release --prefix-colors bgBlue.bold.reset "echo installing semantic-release && npx -p semantic-release@8 -c 'echo running semantic-release && semantic-release pre && npm publish && semantic-release post'"`;
exports[`travis-after-success does not do the autorelease script when the version is different 1`] = `npx travis-deploy-once`;

exports[`travis-after-success does not do the autorelease script when the version is different 2`] = `concurrently --prefix [{name}] --names codecov --prefix-colors bgBlue.bold.reset "echo installing codecov && npx -p codecov -c 'echo running codecov && codecov'"`;

exports[`travis-after-success does not do the codecov script when opted out 1`] = `npx travis-deploy-once`;

exports[`travis-after-success does not do the codecov script when opted out 2`] = `concurrently --prefix [{name}] --names release --prefix-colors bgBlue.bold.reset "echo installing semantic-release && npx -p semantic-release@8 -c 'echo running semantic-release && semantic-release'"`;

exports[`travis-after-success does not do the codecov script when there is no coverage directory 1`] = `npx travis-deploy-once`;

exports[`travis-after-success does not do the codecov script when there is no coverage directory 2`] = `concurrently --prefix [{name}] --names release --prefix-colors bgBlue.bold.reset "echo installing semantic-release && npx -p semantic-release@8 -c 'echo running semantic-release && semantic-release'"`;

exports[`travis-after-success does not run either script when no coverage dir and not the right version 1`] = `
Array [
Array [
installing and running travis-deploy-once,
],
Array [
No need to autorelease or report coverage. Skipping travis-after-success script...,
],
Expand Down
10 changes: 6 additions & 4 deletions src/scripts/__tests__/travis-after-success.js
Original file line number Diff line number Diff line change
Expand Up @@ -41,10 +41,12 @@ cases(
if (runsNothing) {
expect(console.log.mock.calls).toMatchSnapshot()
} else {
expect(crossSpawnSyncMock).toHaveBeenCalledTimes(1)
const [firstCall] = crossSpawnSyncMock.mock.calls
const [script, calledArgs] = firstCall
expect([script, ...calledArgs].join(' ')).toMatchSnapshot()
expect(crossSpawnSyncMock).toHaveBeenCalledTimes(2)
const [firstCall, secondCall] = crossSpawnSyncMock.mock.calls
const [scriptOne, calledArgsOne] = firstCall
expect([scriptOne, ...calledArgsOne].join(' ')).toMatchSnapshot()
const [scriptTwo, calledArgsTwo] = secondCall
expect([scriptTwo, ...calledArgsTwo].join(' ')).toMatchSnapshot()
}

// afterEach
Expand Down
65 changes: 38 additions & 27 deletions src/scripts/travis-after-success.js
Original file line number Diff line number Diff line change
Expand Up @@ -7,34 +7,45 @@ const {
parseEnv,
} = require('../utils')

const autorelease =
pkg.version === '0.0.0-semantically-released' &&
parseEnv('TRAVIS', false) &&
process.env.TRAVIS_BRANCH === 'master' &&
!parseEnv('TRAVIS_PULL_REQUEST', false)
console.log('installing and running travis-deploy-once')
const deployOnceResults = spawn.sync('npx', ['travis-deploy-once'])
if (deployOnceResults.status === 0) {
runAfterSuccessScripts()
} else {
process.exit(deployOnceResults.status)
}

const reportCoverage = hasFile('coverage') && !parseEnv('SKIP_CODECOV', false)
// eslint-disable-next-line complexity
function runAfterSuccessScripts() {
const autorelease =
pkg.version === '0.0.0-semantically-released' &&
parseEnv('TRAVIS', false) &&
process.env.TRAVIS_BRANCH === 'master' &&
!parseEnv('TRAVIS_PULL_REQUEST', false)

if (!autorelease && !reportCoverage) {
console.log(
'No need to autorelease or report coverage. Skipping travis-after-success script...',
)
} else {
const result = spawn.sync(
resolveBin('concurrently'),
getConcurrentlyArgs(
{
codecov: reportCoverage
? `echo installing codecov && npx -p codecov -c 'echo running codecov && codecov'`
: null,
release: autorelease
? `echo installing semantic-release && npx -p semantic-release@8 -c 'echo running semantic-release && semantic-release pre && npm publish && semantic-release post'`
: null,
},
{killOthers: false},
),
{stdio: 'inherit'},
)
const reportCoverage = hasFile('coverage') && !parseEnv('SKIP_CODECOV', false)

if (!autorelease && !reportCoverage) {
console.log(
'No need to autorelease or report coverage. Skipping travis-after-success script...',
)
} else {
const result = spawn.sync(
resolveBin('concurrently'),
getConcurrentlyArgs(
{
codecov: reportCoverage
? `echo installing codecov && npx -p codecov -c 'echo running codecov && codecov'`
: null,
release: autorelease
? `echo installing semantic-release && npx -p semantic-release@8 -c 'echo running semantic-release && semantic-release'`
: null,
},
{killOthers: false},
),
{stdio: 'inherit'},
)

process.exit(result.status)
process.exit(result.status)
}
}

0 comments on commit 09f6662

Please sign in to comment.