This is an automated email from the ASF dual-hosted git repository.
lidavidm pushed a commit to branch main
in repository https://gitbox.apache.org/repos/asf/arrow-adbc.git
The following commit(s) were added to refs/heads/main by this push:
new 34b0866e ci: set milestone on issues linked to PRs (#1543)
34b0866e is described below
commit 34b0866ea7df9a0326cd019a124fae09e6e700cb
Author: David Li <[email protected]>
AuthorDate: Tue Feb 13 11:16:40 2024 -0500
ci: set milestone on issues linked to PRs (#1543)
Fixes #602.
---
.github/workflows/dev_pr.yml | 1 +
.github/workflows/dev_pr/milestone.sh | 49 +++++++++++++++++++++++++----------
2 files changed, 36 insertions(+), 14 deletions(-)
diff --git a/.github/workflows/dev_pr.yml b/.github/workflows/dev_pr.yml
index b79307a1..cc9491e1 100644
--- a/.github/workflows/dev_pr.yml
+++ b/.github/workflows/dev_pr.yml
@@ -26,6 +26,7 @@ on:
permissions:
contents: read
+ issues: write
pull-requests: write
jobs:
diff --git a/.github/workflows/dev_pr/milestone.sh
b/.github/workflows/dev_pr/milestone.sh
index 7d50bc4c..a58826ad 100755
--- a/.github/workflows/dev_pr/milestone.sh
+++ b/.github/workflows/dev_pr/milestone.sh
@@ -32,24 +32,45 @@ main() {
if [[ -n "${existing_milestone}" ]]; then
echo "PR has milestone: ${existing_milestone}"
- return 0
- fi
+ local -r milestone="${existing_milestone}"
+ else
+ local -r latest_version=$(git ls-remote --heads origin |
+ grep -o '[0-9.]*$' |
+ sort --version-sort |
+ tail -n1)
- local -r latest_version=$(git ls-remote --heads origin |
- grep -o '[0-9.]*$' |
- sort --version-sort |
- tail -n1)
+ local -r milestone=$(gh api "/repos/${repo}/milestones" |
+ jq -r '.[] | .title' |
+ grep -E '^ADBC Libraries' |
+ grep -v "${latest_version}" |
+ head -n1)
- local -r milestone=$(gh api "/repos/${repo}/milestones" |
- jq -r '.[] | .title' |
- grep -E '^ADBC Libraries' |
- grep -v "${latest_version}" |
- head -n1)
+ echo "Latest tagged version: ${latest_version}"
+ echo "Assigning milestone: ${milestone}"
- echo "Latest tagged version: ${latest_version}"
- echo "Assigning milestone: ${milestone}"
+ gh pr edit "${pr_number}" -m "${milestone}"
+ fi
- gh pr edit "${pr_number}" -m "${milestone}"
+ local -r repo_owner=$(echo "${repo}" | cut -d'/' -f1)
+ local -r repo_name=$(echo "${repo}" | cut -d'/' -f2)
+ local -r graphql_query="{
+ repository(owner: \"${repo_owner}\", name: \"${repo_name}\") {
+ pullRequest(number: ${pr_number}) {
+ closingIssuesReferences(first: 5) {
+ edges {
+ node {
+ number
+ }
+ }
+ }
+ }
+ }
+ }"
+ local -r linked_issues=$(gh api graphql -f query="${graphql_query}" | jq
-r '.data.repository.pullRequest.closingIssuesReferences.edges |
.[].node.number')
+ for issue in ${linked_issues}; do
+ echo "Linked issue: ${issue}"
+ gh issue edit "${issue}" --milestone "${milestone}"
+ done
}
main "$@"