From 15c0205d9898fc51cef5bd611222af5b00d8baa0 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?J=C3=B6rg=20Thalheim?= Date: Sun, 18 May 2025 23:52:10 +0200 Subject: [PATCH] make release script compatible with merge queues. --- bin/create-release.sh | 38 +++++++++++++++++++++++++++++++++----- 1 file changed, 33 insertions(+), 5 deletions(-) diff --git a/bin/create-release.sh b/bin/create-release.sh index 8f9f3a6a..9c0c17cb 100755 --- a/bin/create-release.sh +++ b/bin/create-release.sh @@ -1,11 +1,11 @@ #!/usr/bin/env bash -set -eu -o pipefail +set -euo pipefail SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" >/dev/null && pwd)" cd "$SCRIPT_DIR/.." -version=${1:-} +version="${1:-}" if [[ -z $version ]]; then echo "USAGE: $0 version" >&2 exit 1 @@ -16,6 +16,17 @@ if [[ "$(git symbolic-ref --short HEAD)" != "master" ]]; then exit 1 fi +waitForPr() { + local pr=$1 + while true; do + if gh pr view "$pr" | grep -q 'MERGED'; then + break + fi + echo "Waiting for PR to be merged..." + sleep 5 + done +} + # ensure we are up-to-date uncommitted_changes=$(git diff --compact-summary) if [[ -n $uncommitted_changes ]]; then @@ -28,10 +39,27 @@ if [[ $unpushed_commits != "" ]]; then echo -e "\nThere are unpushed changes, exiting:\n$unpushed_commits" >&2 exit 1 fi +# make sure tag does not exist +if git tag -l | grep -q "^${version}\$"; then + echo "Tag ${version} already exists, exiting" >&2 + exit 1 +fi sed -i -e "s!^version = \".*\"\$!version = \"${version}\"!" pyproject.toml git add pyproject.toml -nix flake check -vL +git branch -D "release-${version}" || true +git checkout -b "release-${version}" git commit -m "bump version ${version}" -git tag "${version}" +git push origin "release-${version}" +gh pr create \ + --base master \ + --head "release-${version}" \ + --title "Release ${version}" \ + --body "Release ${version} of nix-direnv" -echo "now run 'git push --tags origin master'" +gh pr merge --auto "release-${version}" + +waitForPr "release-${version}" +git checkout master +git pull git@github.com:Mic92/nixpkgs-review master +git tag "${version}" +git push origin "${version}"