Skip to content

Commit a084872

Browse files
committed
feat(scripts/ci-after-success): support GitHub actions
1 parent 2c0fb7a commit a084872

File tree

3 files changed

+113
-4
lines changed

3 files changed

+113
-4
lines changed

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

+89-1
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,30 @@
33
exports[`ci-after-success calls concurrently with both scripts when on ci 1`] = `Array []`;
44

55
exports[`ci-after-success calls concurrently with both scripts when on ci 2`] = `
6+
Array [
7+
Array [
8+
Running ci-after-success for: main,
9+
],
10+
]
11+
`;
12+
13+
exports[`ci-after-success calls concurrently with both scripts when on ci 3`] = `
14+
Array [
15+
concurrently --prefix [{name}] --names codecov,release --prefix-colors bgBlue.bold.reset,bgGreen.bold.reset "echo installing codecov && npx -p codecov@3 -c 'echo running codecov && codecov'" "echo installing semantic-release && npx -p semantic-release@17 -c 'echo running semantic-release && semantic-release'",
16+
]
17+
`;
18+
19+
exports[`ci-after-success calls concurrently with both scripts when on github actions 1`] = `Array []`;
20+
21+
exports[`ci-after-success calls concurrently with both scripts when on github actions 2`] = `
22+
Array [
23+
Array [
24+
Running ci-after-success for: main,
25+
],
26+
]
27+
`;
28+
29+
exports[`ci-after-success calls concurrently with both scripts when on github actions 3`] = `
630
Array [
731
concurrently --prefix [{name}] --names codecov,release --prefix-colors bgBlue.bold.reset,bgGreen.bold.reset "echo installing codecov && npx -p codecov@3 -c 'echo running codecov && codecov'" "echo installing semantic-release && npx -p semantic-release@17 -c 'echo running semantic-release && semantic-release'",
832
]
@@ -11,6 +35,14 @@ Array [
1135
exports[`ci-after-success calls concurrently with both scripts when on travis 1`] = `Array []`;
1236

1337
exports[`ci-after-success calls concurrently with both scripts when on travis 2`] = `
38+
Array [
39+
Array [
40+
Running ci-after-success for: main,
41+
],
42+
]
43+
`;
44+
45+
exports[`ci-after-success calls concurrently with both scripts when on travis 3`] = `
1446
Array [
1547
concurrently --prefix [{name}] --names codecov,release --prefix-colors bgBlue.bold.reset,bgGreen.bold.reset "echo installing codecov && npx -p codecov@3 -c 'echo running codecov && codecov'" "echo installing semantic-release && npx -p semantic-release@17 -c 'echo running semantic-release && semantic-release'",
1648
]
@@ -19,6 +51,14 @@ Array [
1951
exports[`ci-after-success configures semantic release with internal configuration when no local configuration exists 1`] = `Array []`;
2052

2153
exports[`ci-after-success configures semantic release with internal configuration when no local configuration exists 2`] = `
54+
Array [
55+
Array [
56+
Running ci-after-success for: main,
57+
],
58+
]
59+
`;
60+
61+
exports[`ci-after-success configures semantic release with internal configuration when no local configuration exists 3`] = `
2262
Array [
2363
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'",
2464
]
@@ -27,6 +67,14 @@ Array [
2767
exports[`ci-after-success does not do autorelease script when running on travis but in a pull request 1`] = `Array []`;
2868

2969
exports[`ci-after-success does not do autorelease script when running on travis but in a pull request 2`] = `
70+
Array [
71+
Array [
72+
Running ci-after-success for: main,
73+
],
74+
]
75+
`;
76+
77+
exports[`ci-after-success does not do autorelease script when running on travis but in a pull request 3`] = `
3078
Array [
3179
concurrently --prefix [{name}] --names codecov --prefix-colors bgBlue.bold.reset "echo installing codecov && npx -p codecov@3 -c 'echo running codecov && codecov'",
3280
]
@@ -35,6 +83,14 @@ Array [
3583
exports[`ci-after-success does not do the autorelease script when the version is different 1`] = `Array []`;
3684

3785
exports[`ci-after-success does not do the autorelease script when the version is different 2`] = `
86+
Array [
87+
Array [
88+
Running ci-after-success for: main,
89+
],
90+
]
91+
`;
92+
93+
exports[`ci-after-success does not do the autorelease script when the version is different 3`] = `
3894
Array [
3995
concurrently --prefix [{name}] --names codecov --prefix-colors bgBlue.bold.reset "echo installing codecov && npx -p codecov@3 -c 'echo running codecov && codecov'",
4096
]
@@ -43,6 +99,14 @@ Array [
4399
exports[`ci-after-success does not do the codecov script when opted out 1`] = `Array []`;
44100

45101
exports[`ci-after-success does not do the codecov script when opted out 2`] = `
102+
Array [
103+
Array [
104+
Running ci-after-success for: main,
105+
],
106+
]
107+
`;
108+
109+
exports[`ci-after-success does not do the codecov script when opted out 3`] = `
46110
Array [
47111
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'",
48112
]
@@ -51,6 +115,14 @@ Array [
51115
exports[`ci-after-success does not do the codecov script when there is no coverage directory 1`] = `Array []`;
52116

53117
exports[`ci-after-success does not do the codecov script when there is no coverage directory 2`] = `
118+
Array [
119+
Array [
120+
Running ci-after-success for: main,
121+
],
122+
]
123+
`;
124+
125+
exports[`ci-after-success does not do the codecov script when there is no coverage directory 3`] = `
54126
Array [
55127
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'",
56128
]
@@ -64,11 +136,27 @@ Array [
64136
]
65137
`;
66138

67-
exports[`ci-after-success does not run either script when no coverage dir and not the right version 2`] = `Array []`;
139+
exports[`ci-after-success does not run either script when no coverage dir and not the right version 2`] = `
140+
Array [
141+
Array [
142+
Running ci-after-success for: main,
143+
],
144+
]
145+
`;
146+
147+
exports[`ci-after-success does not run either script when no coverage dir and not the right version 3`] = `Array []`;
68148

69149
exports[`ci-after-success runs autorelease script on alternate release branch "next" 1`] = `Array []`;
70150

71151
exports[`ci-after-success runs autorelease script on alternate release branch "next" 2`] = `
152+
Array [
153+
Array [
154+
Running ci-after-success for: next,
155+
],
156+
]
157+
`;
158+
159+
exports[`ci-after-success runs autorelease script on alternate release branch "next" 3`] = `
72160
Array [
73161
concurrently --prefix [{name}] --names codecov,release --prefix-colors bgBlue.bold.reset,bgGreen.bold.reset "echo installing codecov && npx -p codecov@3 -c 'echo running codecov && codecov'" "echo installing semantic-release && npx -p semantic-release@17 -c 'echo running semantic-release && semantic-release'",
74162
]

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

+20-1
Original file line numberDiff line numberDiff line change
@@ -21,6 +21,7 @@ cases(
2121
},
2222
}) => {
2323
// beforeEach
24+
2425
const {sync: crossSpawnSyncMock} = require('cross-spawn')
2526
const utils = require('../../utils')
2627
utils.resolveBin = (modName, {executable = modName} = {}) => executable
@@ -29,33 +30,45 @@ cases(
2930
process.env[envKey] = env[envKey]
3031
return orig
3132
})
32-
const originalLog = console.log
33+
3334
const originalExit = process.exit
35+
const originalLog = console.log
36+
const originalInfo = console.info
37+
3438
process.exit = jest.fn()
3539
console.log = jest.fn()
40+
console.info = jest.fn()
3641

3742
require('../../utils').hasLocalConfig.mockReturnValue(hasLocalConfig)
3843

3944
// tests
45+
4046
if (version) {
4147
utils.pkg.version = version
4248
}
49+
4350
utils.hasFile = () => hasCoverageDir
4451
process.env.SKIP_CODECOV = isOptedOutOfCoverage
4552
require('../ci-after-success')
4653

4754
expect(console.log.mock.calls).toMatchSnapshot()
55+
expect(console.info.mock.calls).toMatchSnapshot()
56+
4857
const commands = crossSpawnSyncMock.mock.calls.map(
4958
call => `${call[0]} ${call[1].join(' ')}`,
5059
)
5160
expect(commands).toMatchSnapshot()
5261

5362
// afterEach
63+
5464
process.exit = originalExit
5565
console.log = originalLog
66+
console.info = originalInfo
67+
5668
Object.keys(originalEnvs).forEach(envKey => {
5769
process.env[envKey] = env[envKey]
5870
})
71+
5972
jest.resetModules()
6073
},
6174
{
@@ -67,6 +80,12 @@ cases(
6780
TRAVIS_PULL_REQUEST: 'false',
6881
},
6982
},
83+
'calls concurrently with both scripts when on github actions': {
84+
env: {
85+
GITHUB_REF: '/refs/heads/main',
86+
TRAVIS_PULL_REQUEST: 'false',
87+
},
88+
},
7089
'runs autorelease script on alternate release branch "next"': {
7190
env: {
7291
CI: 'true',

src/scripts/ci-after-success.js

+4-2
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
const path = require('path')
22
const spawn = require('cross-spawn')
33

4-
const {TRAVIS_BRANCH, CF_BRANCH} = process.env
4+
const {TRAVIS_BRANCH, CF_BRANCH, GITHUB_REF} = process.env
55

66
const {
77
resolveBin,
@@ -23,7 +23,7 @@ const releaseBranches = [
2323
'beta',
2424
'alpha',
2525
]
26-
const branch = CF_BRANCH || TRAVIS_BRANCH
26+
const branch = CF_BRANCH || TRAVIS_BRANCH || GITHUB_REF.replace(/\/refs\/.*\//)
2727
const isCI = parseEnv('TRAVIS', false) || parseEnv('CI', false)
2828

2929
const codecovCommand = `echo installing codecov && npx -p codecov@3 -c 'echo running codecov && codecov'`
@@ -41,6 +41,8 @@ const autorelease =
4141

4242
const reportCoverage = hasFile('coverage') && !parseEnv('SKIP_CODECOV', false)
4343

44+
console.info(`Running ci-after-success for: ${branch}`)
45+
4446
if (!autorelease && !reportCoverage) {
4547
console.log(
4648
'No need to autorelease or report coverage. Skipping ci-after-success script...',

0 commit comments

Comments
 (0)