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
15 changes: 14 additions & 1 deletion .github/scripts/write_release_notes.py
Original file line number Diff line number Diff line change
Expand Up @@ -15,7 +15,18 @@ def gh(*args: str) -> str:


def latest_tag() -> str:
return gh("release", "list", "-L", "1", "--json", "tagName", "-q", ".[0].tagName")
return gh(
"release",
"list",
"--repo",
os.environ["GITHUB_REPOSITORY"],
"-L",
"1",
"--json",
"tagName",
"-q",
".[0].tagName",
)


def merged_prs() -> list[dict]:
Expand All @@ -25,6 +36,8 @@ def merged_prs() -> list[dict]:
prs = gh(
"pr",
"list",
"--repo",
repo,
"--state",
"merged",
"--base",
Expand Down
12 changes: 7 additions & 5 deletions .github/workflows/release.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -55,25 +55,26 @@ jobs:
steps:
- name: Wait for checks
id: wait
env:
GH_TOKEN: ${{ secrets.GITHUB_TOKEN }}
REPO: ${{ github.repository }}
run: |
set -euo pipefail
sha="${{ github.sha }}"
release=false
# Wait for all other workflow runs on this SHA to complete.
other_runs="$(gh run list --branch main --limit 50 --json databaseId,headSha --jq ".[] | select(.headSha == \"${sha}\") | .databaseId")"
other_runs="$(gh run list --repo "$REPO" --branch main --limit 50 --json databaseId,headSha --jq ".[] | select(.headSha == \"${sha}\") | .databaseId")"
other_runs="$(echo "$other_runs" | grep -v "${{ github.run_id }}" || true)"
all_passed=true
for run in $other_runs; do
if ! gh run watch "$run" --exit-status >/dev/null 2>&1; then
if ! gh run watch "$run" --repo "$REPO" --exit-status >/dev/null 2>&1; then
all_passed=false
fi
done
if [[ "$all_passed" == "true" ]]; then
release=true
fi
echo "release=$release" >> "$GITHUB_OUTPUT"
env:
GH_TOKEN: ${{ secrets.GITHUB_TOKEN }}

create-draft:
runs-on: ubuntu-latest
Expand All @@ -88,7 +89,8 @@ jobs:
env:
VERSION: ${{ needs.check-version.outputs.version }}
GH_TOKEN: ${{ secrets.GITHUB_TOKEN }}
REPO: ${{ github.repository }}
run: |
set -euo pipefail
notes="$(uv run --script .github/scripts/write_release_notes.py "$VERSION")"
gh release create "$VERSION" --draft --target main --notes "$notes"
gh release create "$VERSION" --repo "$REPO" --draft --target main --notes "$notes"
Loading