From 19d0babaa4c280cbe8845d38abad20e745237a18 Mon Sep 17 00:00:00 2001 From: David Li Date: Wed, 15 Nov 2023 16:28:44 -0500 Subject: [PATCH] ci: auto-assign milestones to pull requests Fixes #1296. --- .github/workflows/dev_pr.yml | 8 +++++ .github/workflows/dev_pr/milestone.sh | 46 +++++++++++++++++++++++++++ 2 files changed, 54 insertions(+) create mode 100755 .github/workflows/dev_pr/milestone.sh diff --git a/.github/workflows/dev_pr.yml b/.github/workflows/dev_pr.yml index 3d6cb8527c..65fdb7cf99 100644 --- a/.github/workflows/dev_pr.yml +++ b/.github/workflows/dev_pr.yml @@ -38,6 +38,7 @@ jobs: persist-credentials: false - name: Check title for Conventional Commits format + continue-on-error: true if: | github.event_name == 'pull_request_target' && (github.event.action == 'opened' || @@ -48,3 +49,10 @@ jobs: script: | const script = require(`${process.env.GITHUB_WORKSPACE}/.github/workflows/dev_pr/title_check.js`); await script({github, context}); + + - name: Assign milestone + continue-on-error: true + env: + github-token: ${{ secrets.GITHUB_TOKEN }} + run: | + ./.github/workflows/dev_pr/milestone.sh "${GITHUB_REPOSITORY}" ${{github.event.number}} diff --git a/.github/workflows/dev_pr/milestone.sh b/.github/workflows/dev_pr/milestone.sh new file mode 100755 index 0000000000..92ef8fddae --- /dev/null +++ b/.github/workflows/dev_pr/milestone.sh @@ -0,0 +1,46 @@ +#!/usr/bin/env bash +# Licensed to the Apache Software Foundation (ASF) under one +# or more contributor license agreements. See the NOTICE file +# distributed with this work for additional information +# regarding copyright ownership. The ASF licenses this file +# to you under the Apache License, Version 2.0 (the +# "License"); you may not use this file except in compliance +# with the License. You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, +# software distributed under the License is distributed on an +# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY +# KIND, either express or implied. See the License for the +# specific language governing permissions and limitations +# under the License. + +# Assign a milestone to the given PR based on the open milestones and known +# releases. + +set -euo pipefail + +main() { + local -r repo="${1}" + local -r pr_number="${2}" + echo "On ${repo} pull ${pr_number}" + + local -r latest_version=$(git ls-remote --heads origin | + grep maint- | + sed -E 's/^.*maint-(.*)$/\1/' | + 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) + + echo "Latest tagged version: ${latest_version}" + echo "Assigning milestone: ${milestone}" + + gh pr edit "${pr_number}" -m "${milestone}" +} + +main "$@"