🛣️
Pull Requestに自動でmilestone設定するやつをつくった
現在時刻が due_on より古く一番若いnumberのマイルストーンを ref のブランチ名が hoge/ で始まるならばつけるという機構
マイルストーンがなかったり、現在時刻が due_on より古いマイルストーンがなければ何もしない。また、既にPRにマイルストーンが付いていたら上書きして付けない。
name: auto-attach-milestone
on:
pull_request:
types: [opened]
jobs:
auto-attach-milestone:
runs-on: ubuntu-latest
timeout-minutes: 5
if: startsWith(github.head_ref, 'hoge/')
env:
GH_TOKEN: ${{ secrets.GITHUB_TOKEN }}
steps:
- name: get target milestone
id: get_target_milestone
run: |
MILESTONE=$(gh api -X GET repos/${{ github.repository }}/milestones -f state=open -f sort=due_on | jq '.[] | select(.due_on > "'$(date -u +"%Y-%m-%dT%H:%M:%SZ")'")')
MS_NUM=$(echo $MILESTONE | jq '.number')
echo "ms_number=$MS_NUM" >> $GITHUB_OUTPUT
if [ -z $MS_NUM ]; then
echo "due on is past"
echo "suspend=true" >> $GITHUB_OUTPUT
fi
- name: Get associated pull request
if: steps.get_target_milestone.outputs.suspend != 'true'
id: get_pull_request
run: |
PR=$(gh api repos/${{ github.repository }}/commits/${{ github.event.pull_request.head.sha }}/pulls | jq '.[0]')
PR_NUM=$(echo $PR | jq '.number')
MILESTONE_NUMBER=$(echo $PR | jq '.milestone.number')
echo "pr_number=$PR_NUM" >> $GITHUB_OUTPUT
echo "ms_number=$MILESTONE_NUMBER" >> $GITHUB_OUTPUT
- name: attatch milestone
if: steps.get_pull_request.outputs.ms_number == 'null'
run: |
gh api /repos/${{ github.repository }}/issues/${{ steps.get_pull_request.outputs.pr_number }} -F milestone=${{ steps.get_target_milestone.outputs.ms_number }}
Discussion