Skip to content

Commit b7e2402

Browse files
committed
create latest tag/release for variant (e.g., prod-latest) when releasing bundle
1 parent 80a45eb commit b7e2402

File tree

1 file changed

+27
-17
lines changed

1 file changed

+27
-17
lines changed

gulp.d/tasks/release.js

Lines changed: 27 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -81,6 +81,7 @@ module.exports = (dest, bundleName, owner, repo, ref, token, updateBranch) => as
8181
if (variant === 'main') variant = 'prod'
8282
ref = ref.replace(/^refs\//, '')
8383
const tagName = `${variant}-${await getNextReleaseNumber({ octokit, owner, repo, variant })}`
84+
const latestTagName = `${variant}-latest`
8485
const message = `Release ${tagName}`
8586
const bundleFileBasename = `${bundleName}-bundle.zip`
8687
const bundleFile = await versionBundle(path.join(dest, bundleFileBasename), tagName)
@@ -104,22 +105,31 @@ module.exports = (dest, bundleName, owner, repo, ref, token, updateBranch) => as
104105
.createCommit({ owner, repo, message, tree, parents: [commit] })
105106
.then((result) => result.data.sha)
106107
if (updateBranch) await octokit.git.updateRef({ owner, repo, ref, sha: commit })
107-
const uploadUrl = await octokit.repos
108-
.createRelease({
109-
owner,
110-
repo,
111-
tag_name: tagName,
112-
target_commitish: commit,
113-
name: tagName,
108+
await octokit.repos.getReleaseByTag({ owner, repo, tag: latestTagName }).then(
109+
(result) =>
110+
octokit.repos
111+
.deleteRelease({ owner, repo, release_id: result.data.id })
112+
.then(() => octokit.git.deleteRef({ owner, repo, ref: `tags/${result.data.tag_name}` }).catch(() => undefined)),
113+
() => undefined
114+
)
115+
for (const tag of [tagName, latestTagName]) {
116+
const uploadUrl = await octokit.repos
117+
.createRelease({
118+
owner,
119+
repo,
120+
tag_name: tag,
121+
target_commitish: commit,
122+
name: tag,
123+
})
124+
.then((result) => result.data.upload_url)
125+
await octokit.repos.uploadReleaseAsset({
126+
url: uploadUrl,
127+
data: fs.createReadStream(bundleFile),
128+
name: bundleFileBasename,
129+
headers: {
130+
'content-length': (await fsp.stat(bundleFile)).size,
131+
'content-type': 'application/zip',
132+
},
114133
})
115-
.then((result) => result.data.upload_url)
116-
await octokit.repos.uploadReleaseAsset({
117-
url: uploadUrl,
118-
data: fs.createReadStream(bundleFile),
119-
name: bundleFileBasename,
120-
headers: {
121-
'content-length': (await fsp.stat(bundleFile)).size,
122-
'content-type': 'application/zip',
123-
},
124-
})
134+
}
125135
}

0 commit comments

Comments
 (0)