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 "$@"

Reply via email to