ci: implement workflow to publish dev versions (#11120)

* ci: implement workflow to publish dev versions

* ci: refactor into the other dev job

* fix: use dev tag

* chore: clarify

* fix: always use actions from main

* fix: conditionally

* chore: don't ask for meaningless perm
This commit is contained in:
Denis-Adrian Cristea
2025-10-08 14:08:39 +03:00
committed by GitHub
parent fcf7f27fd7
commit 0c2975e3fd
5 changed files with 93 additions and 21 deletions

View File

@@ -41,7 +41,7 @@ async function gitTagAndRelease(release: ReleaseEntry, dry: boolean) {
}
}
export async function releasePackage(release: ReleaseEntry, dev: boolean, dry: boolean, doGitRelease = !dev) {
export async function releasePackage(release: ReleaseEntry, dry: boolean, devTag?: string, doGitRelease = !devTag) {
// Sanity check against the registry first
if (await checkRegistry(release)) {
info(`${release.name}@${release.version} already published, skipping.`);
@@ -51,11 +51,11 @@ export async function releasePackage(release: ReleaseEntry, dev: boolean, dry: b
if (dry) {
info(`[DRY] Releasing ${release.name}@${release.version}`);
} else {
await $`pnpm --filter=${release.name} publish --provenance --no-git-checks ${dev ? '--tag=dev' : ''}`;
await $`pnpm --filter=${release.name} publish --provenance --no-git-checks ${devTag ? `--tag=${devTag}` : ''}`;
}
// && !dev just to be sure
if (doGitRelease && !dev) await gitTagAndRelease(release, dry);
// && !devTag just to be sure
if (doGitRelease && !devTag) await gitTagAndRelease(release, dry);
if (dry) return;
@@ -77,9 +77,9 @@ export async function releasePackage(release: ReleaseEntry, dev: boolean, dry: b
}, 15_000);
});
if (dev) {
if (devTag) {
// Send and forget, deprecations are less important than releasing other dev versions and can be done manually
void $`pnpm exec npm-deprecate --name "*dev*" --message "This version is deprecated. Please use a newer version." --package ${release.name}`
void $`pnpm exec npm-deprecate --name "*${devTag}*" --message "This version is deprecated. Please use a newer version." --package ${release.name}`
.nothrow()
// eslint-disable-next-line promise/prefer-await-to-then
.then(() => {});
@@ -90,6 +90,6 @@ export async function releasePackage(release: ReleaseEntry, dev: boolean, dry: b
await $`pnpm --filter=create-discord-bot run rename-to-app`;
// eslint-disable-next-line require-atomic-updates
release.name = 'create-discord-app';
await releasePackage(release, dev, dry, false);
await releasePackage(release, dry, devTag, false);
}
}