Skip to content

Commit fe82f96

Browse files
committed
workflow: bypass pnpm publish branch restrictions during release
1 parent 26399aa commit fe82f96

File tree

1 file changed

+29
-12
lines changed

1 file changed

+29
-12
lines changed

scripts/release.js

Lines changed: 29 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -270,8 +270,23 @@ async function main() {
270270

271271
// publish packages
272272
step('\nPublishing packages...')
273+
274+
const additionalPublishFlags = []
275+
if (isDryRun) {
276+
additionalPublishFlags.push('--dry-run')
277+
}
278+
if (skipGit) {
279+
additionalPublishFlags.push('--no-git-checks')
280+
}
281+
// bypass the pnpm --publish-branch restriction which isn't too useful to us
282+
// otherwise it leads to a prompt and blocks the release script
283+
const branch = await getBranch()
284+
if (branch !== 'main') {
285+
additionalPublishFlags.push('--publish-branch', branch)
286+
}
287+
273288
for (const pkg of packages) {
274-
await publishPackage(pkg, targetVersion)
289+
await publishPackage(pkg, targetVersion, additionalPublishFlags)
275290
}
276291

277292
// push to GitHub
@@ -300,7 +315,7 @@ async function main() {
300315

301316
async function getCIResult() {
302317
try {
303-
const { stdout: sha } = await execa('git', ['rev-parse', 'HEAD'])
318+
const sha = await getSha()
304319
const res = await fetch(
305320
`https://api.github.com/repos/vuejs/core/actions/runs?head_sha=${sha}` +
306321
`&status=success&exclude_pull_requests=true`
@@ -315,17 +330,12 @@ async function getCIResult() {
315330

316331
async function isInSyncWithRemote() {
317332
try {
318-
const { stdout: sha } = await execa('git', ['rev-parse', 'HEAD'])
319-
const { stdout: branch } = await execa('git', [
320-
'rev-parse',
321-
'--abbrev-ref',
322-
'HEAD'
323-
])
333+
const branch = await getBranch()
324334
const res = await fetch(
325335
`https://api.github.com/repos/vuejs/core/commits/${branch}?per_page=1`
326336
)
327337
const data = await res.json()
328-
return data.sha === sha
338+
return data.sha === (await getSha())
329339
} catch (e) {
330340
console.error(
331341
'Failed to check whether local HEAD is up-to-date with remote.'
@@ -334,6 +344,14 @@ async function isInSyncWithRemote() {
334344
}
335345
}
336346

347+
async function getSha() {
348+
return (await execa('git', ['rev-parse', 'HEAD'])).stdout
349+
}
350+
351+
async function getBranch() {
352+
return (await execa('git', ['rev-parse', '--abbrev-ref', 'HEAD'])).stdout
353+
}
354+
337355
function updateVersions(version, getNewPackageName = keepThePackageName) {
338356
// 1. update root package.json
339357
updatePackage(path.resolve(__dirname, '..'), version, getNewPackageName)
@@ -371,7 +389,7 @@ function updateDeps(pkg, depType, version, getNewPackageName) {
371389
})
372390
}
373391

374-
async function publishPackage(pkgName, version) {
392+
async function publishPackage(pkgName, version, additionalFlags) {
375393
if (skippedPackages.includes(pkgName)) {
376394
return
377395
}
@@ -402,8 +420,7 @@ async function publishPackage(pkgName, version) {
402420
...(releaseTag ? ['--tag', releaseTag] : []),
403421
'--access',
404422
'public',
405-
...(isDryRun ? ['--dry-run'] : []),
406-
...(skipGit ? ['--no-git-checks'] : [])
423+
...additionalFlags
407424
],
408425
{
409426
cwd: pkgRoot,

0 commit comments

Comments
 (0)