Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
1 change: 1 addition & 0 deletions .github/workflows/release.yml
Original file line number Diff line number Diff line change
Expand Up @@ -52,6 +52,7 @@ jobs:

permissions:
contents: write
pull-requests: write

steps:
- name: Git checkout
Expand Down
17 changes: 15 additions & 2 deletions scripts/release-stable.mjs
Original file line number Diff line number Diff line change
Expand Up @@ -31,7 +31,7 @@ function outputOptional(command) {
run("git fetch origin prod dev");
run('git config user.name "github-actions[bot]"');
run('git config user.email "github-actions[bot]@users.noreply.github.com"');
run("git checkout -B prod origin/prod");
run("git checkout -B changeset-release/prod origin/prod");

const preStatePath = path.join(changesetDir, "pre.json");

Expand All @@ -56,7 +56,20 @@ try {
// There are changes to commit.
run("git add -A");
run('git commit -m "chore: version packages (stable) [skip ci]"');
run("git push origin HEAD:prod");
run("git push origin HEAD:changeset-release/prod --force");

let pullNumber = outputOptional("gh pr list --state open --head changeset-release/prod --base prod --json number --jq '.[0].number'");

if (!pullNumber) {
pullNumber = output('gh pr create --title "Version Packages (Stable)" --body "Automatically promotes the current beta release line on prod to a stable release." --base prod --head changeset-release/prod --json number --jq \'.number\'');
}

const mergeState = outputOptional(`gh pr view ${pullNumber} --json state,mergedAt --jq '.state + \"|\" + (.mergedAt // \"\")'`);

if (!mergeState.startsWith("MERGED|")) {
run(`gh pr merge ${pullNumber} --merge --delete-branch`);
}

run("git fetch origin prod");
run("git checkout -B prod origin/prod");
}
Expand Down
Loading