Skip to content

Commit 80baad6

Browse files
committed
feat(scripts/ci-after-success): use internal release configuration by default
To ensure support for the `main` release branch, configure the semantic-release command to provide the new internal `release.config.js` as the `--extends` option by default.
1 parent 3b9ea7d commit 80baad6

File tree

4 files changed

+46
-6
lines changed

4 files changed

+46
-6
lines changed

README.md

+12
Original file line numberDiff line numberDiff line change
@@ -38,6 +38,7 @@
3838
- [ESLint](#eslint)
3939
- [Prettier](#prettier)
4040
- [Jest](#jest)
41+
- [Semantic Release](#semantic-release)
4142
- [License](#license)
4243
- [Maintenance](#maintenance)
4344

@@ -118,6 +119,17 @@ module.exports = {
118119
}
119120
```
120121

122+
#### Semantic Release
123+
124+
Or, for Semantic Release (used in `ci-after-success` script) in
125+
`release.config.js`:
126+
127+
```js
128+
module.exports = {
129+
extends: require.resolve('@hover/javascript/release'),
130+
}
131+
```
132+
121133
## License
122134

123135
MIT

src/scripts/__tests__/__snapshots__/ci-after-success.js.snap

+8
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,14 @@ Array [
1616
]
1717
`;
1818

19+
exports[`ci-after-success configures semantic release with internal configuration when no local configuration exists 1`] = `Array []`;
20+
21+
exports[`ci-after-success configures semantic release with internal configuration when no local configuration exists 2`] = `
22+
Array [
23+
concurrently --prefix [{name}] --names release --prefix-colors bgBlue.bold.reset "echo installing semantic-release && npx -p semantic-release@17 -c 'echo running semantic-release && semantic-release' --extends ./src/config/release.config.js",
24+
]
25+
`;
26+
1927
exports[`ci-after-success does not do autorelease script when running on travis but in a pull request 1`] = `Array []`;
2028

2129
exports[`ci-after-success does not do autorelease script when running on travis but in a pull request 2`] = `

src/scripts/__tests__/ci-after-success.js

+12
Original file line numberDiff line numberDiff line change
@@ -3,12 +3,18 @@ import {unquoteSerializer} from './helpers/serializers'
33

44
expect.addSnapshotSerializer(unquoteSerializer)
55

6+
jest.mock('../../utils', () => {
7+
const actualUtils = jest.requireActual('../../utils')
8+
return {...actualUtils, hasLocalConfig: jest.fn()}
9+
})
10+
611
cases(
712
'ci-after-success',
813
({
914
version = '0.0.0-semantically-released',
1015
hasCoverageDir = true,
1116
isOptedOutOfCoverage = false,
17+
hasLocalConfig = true,
1218
env = {
1319
CI: 'true',
1420
CF_BRANCH: 'main',
@@ -28,6 +34,8 @@ cases(
2834
process.exit = jest.fn()
2935
console.log = jest.fn()
3036

37+
require('../../utils').hasLocalConfig.mockReturnValue(hasLocalConfig)
38+
3139
// tests
3240
if (version) {
3341
utils.pkg.version = version
@@ -69,6 +77,10 @@ cases(
6977
'does not do the autorelease script when the version is different': {
7078
version: '1.2.3',
7179
},
80+
'configures semantic release with internal configuration when no local configuration exists': {
81+
hasCoverageDir: false,
82+
hasLocalConfig: false,
83+
},
7284
'does not do the codecov script when there is no coverage directory': {
7385
hasCoverageDir: false,
7486
},

src/scripts/ci-after-success.js

+14-6
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,4 @@
1+
const path = require('path')
12
const spawn = require('cross-spawn')
23

34
const {TRAVIS_BRANCH, CF_BRANCH} = process.env
@@ -6,10 +7,14 @@ const {
67
resolveBin,
78
getConcurrentlyArgs,
89
hasFile,
10+
hasLocalConfig,
911
pkg,
1012
parseEnv,
1113
} = require('../utils')
1214

15+
const here = p => path.join(__dirname, p)
16+
const hereRelative = p => here(p).replace(process.cwd(), '.')
17+
1318
const releaseBranches = [
1419
'main',
1520
'master',
@@ -21,6 +26,13 @@ const releaseBranches = [
2126
const branch = CF_BRANCH || TRAVIS_BRANCH
2227
const isCI = parseEnv('TRAVIS', false) || parseEnv('CI', false)
2328

29+
const codecovCommand = `echo installing codecov && npx -p codecov@3 -c 'echo running codecov && codecov'`
30+
const releaseCommand = `echo installing semantic-release && npx -p semantic-release@17 -c 'echo running semantic-release && semantic-release'${
31+
hasLocalConfig('release')
32+
? ''
33+
: ` --extends ${hereRelative('../config/release.config.js')}`
34+
}`
35+
2436
const autorelease =
2537
pkg.version === '0.0.0-semantically-released' &&
2638
isCI &&
@@ -38,12 +50,8 @@ if (!autorelease && !reportCoverage) {
3850
resolveBin('concurrently'),
3951
getConcurrentlyArgs(
4052
{
41-
codecov: reportCoverage
42-
? `echo installing codecov && npx -p codecov@3 -c 'echo running codecov && codecov'`
43-
: null,
44-
release: autorelease
45-
? `echo installing semantic-release && npx -p semantic-release@17 -c 'echo running semantic-release && semantic-release'`
46-
: null,
53+
codecov: reportCoverage ? codecovCommand : null,
54+
release: autorelease ? releaseCommand : null,
4755
},
4856
{killOthers: false},
4957
),

0 commit comments

Comments
 (0)