Skip to content

Commit bbcedb0

Browse files
committed
Implement a test release script.
1 parent a8fd68f commit bbcedb0

File tree

2 files changed

+30
-9
lines changed

2 files changed

+30
-9
lines changed

bin/release.js

Lines changed: 29 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -8,14 +8,16 @@ const MASTER_BRANCH_NAME = 'master'
88
const RELEASE_MAJOR = 'major'
99
const RELEASE_MINOR = 'minor'
1010
const RELEASE_PATCH = 'patch'
11+
const RELEASE_TEST = 'test'
1112

1213
const releaseLevel = process.argv[2]
1314
if (
1415
releaseLevel !== RELEASE_MAJOR &&
1516
releaseLevel !== RELEASE_MINOR &&
16-
releaseLevel !== RELEASE_PATCH
17+
releaseLevel !== RELEASE_PATCH &&
18+
releaseLevel !== RELEASE_TEST
1719
) {
18-
shell.echo(`Error: The provided release level is incorrect: ${releaseLevel}. Allowed: ${RELEASE_MAJOR}, ${RELEASE_MINOR}, ${RELEASE_PATCH}`)
20+
shell.echo(`Error: The provided release level is incorrect: ${releaseLevel}. Allowed: ${RELEASE_MAJOR}, ${RELEASE_MINOR}, ${RELEASE_PATCH}, ${RELEASE_TEST}`)
1921
shell.exit(1)
2022
}
2123

@@ -130,16 +132,29 @@ if (commitChanges.code === 0) {
130132
shell.exit(1)
131133
}
132134

133-
// tag the release
134-
const releaseTagging = shell.exec(`npm version ${releaseLevel}`)
135-
if (releaseTagging.code === 0) {
136-
shell.echo('Tag the release.')
135+
if (releaseLevel === RELEASE_TEST) {
136+
// snapshot the release in "test" branch
137+
const releaseSnapshotting = shell.exec(`git branch ${RELEASE_TEST}`)
138+
if (releaseSnapshotting.code === 0) {
139+
shell.echo('Snapshot the release.')
140+
} else {
141+
shell.echo('Error: Could not snapshot the release.')
142+
console.log(releaseSnapshotting.stderr)
143+
shell.exit(1)
144+
}
137145
} else {
138-
shell.echo('Error: Could not tag the release.')
139-
console.log(releaseTagging.stderr)
140-
shell.exit(1)
146+
// tag the release
147+
const releaseTagging = shell.exec(`npm version ${releaseLevel}`)
148+
if (releaseTagging.code === 0) {
149+
shell.echo('Tag the release.')
150+
} else {
151+
shell.echo('Error: Could not tag the release.')
152+
console.log(releaseTagging.stderr)
153+
shell.exit(1)
154+
}
141155
}
142156

157+
143158
// checkout the master branch
144159
const masterCheckout = shell.exec(`git checkout ${MASTER_BRANCH_NAME}`, silent)
145160
if (masterCheckout.code === 0) {
@@ -170,6 +185,11 @@ if (vendorInstallAll.code === 0) {
170185
shell.exit(1)
171186
}
172187

188+
// if it was a test release then do nothing on master branch
189+
if (releaseLevel === RELEASE_TEST) {
190+
return
191+
}
192+
173193
// increment version in package.json file
174194
// for master branch, since changes in release
175195
// branch do not affect master branch, the package

package.json

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -14,6 +14,7 @@
1414
"release-patch": "bin-release patch",
1515
"release-minor": "bin-release minor",
1616
"release-major": "bin-release major",
17+
"release-test": "bin-release test",
1718
"postinstall": "composer install"
1819
},
1920
"repository": {

0 commit comments

Comments
 (0)