You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
76 lines
2.9 KiB
76 lines
2.9 KiB
name: Defer Issues |
|
|
|
on: |
|
workflow_dispatch: |
|
|
|
permissions: |
|
contents: read |
|
|
|
jobs: |
|
defer-issues: |
|
name: Defer Issues |
|
runs-on: ubuntu-latest |
|
if: github.repository_owner == 'spring-projects' |
|
permissions: |
|
issues: write |
|
steps: |
|
- name: Checkout |
|
uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2 |
|
- name: Compute Version |
|
id: compute-version |
|
uses: spring-io/spring-release-actions/compute-version@0.0.3 |
|
- name: Get Today's Release Version |
|
id: todays-release |
|
uses: spring-io/spring-release-actions/get-todays-release-version@0.0.3 |
|
with: |
|
snapshot-version: ${{ steps.compute-version.outputs.version }} |
|
milestone-repository: ${{ github.repository }} |
|
milestone-token: ${{ secrets.GITHUB_TOKEN }} |
|
- name: Compute Next Version |
|
id: next-version |
|
uses: spring-io/spring-release-actions/compute-next-version@0.0.3 |
|
with: |
|
version: ${{ steps.todays-release.outputs.release-version }} |
|
- name: Schedule Next Milestone |
|
uses: spring-io/spring-release-actions/schedule-milestone@0.0.3 |
|
with: |
|
version: ${{ steps.next-version.outputs.version }} |
|
version-date: ${{ steps.next-version.outputs.version-date }} |
|
repository: ${{ github.repository }} |
|
token: ${{ secrets.GITHUB_TOKEN }} |
|
- name: Move Open Issues to Next Milestone |
|
env: |
|
GH_TOKEN: ${{ secrets.GITHUB_TOKEN }} |
|
CURRENT_MILESTONE: ${{ steps.todays-release.outputs.release-version }} |
|
NEXT_MILESTONE: ${{ steps.next-version.outputs.version }} |
|
run: | |
|
current_milestone_number=$(gh api repos/${{ github.repository }}/milestones \ |
|
--jq ".[] | select(.title == \"$CURRENT_MILESTONE\") | .number") |
|
if [ -z "$current_milestone_number" ]; then |
|
echo "No milestone found for $CURRENT_MILESTONE" |
|
exit 0 |
|
fi |
|
next_milestone_number=$(gh api repos/${{ github.repository }}/milestones \ |
|
--jq ".[] | select(.title == \"$NEXT_MILESTONE\") | .number") |
|
if [ -z "$next_milestone_number" ]; then |
|
echo "No milestone found for $NEXT_MILESTONE" |
|
exit 1 |
|
fi |
|
echo "Moving open issues from milestone '$CURRENT_MILESTONE' (#$current_milestone_number) to '$NEXT_MILESTONE' (#$next_milestone_number)" |
|
page=1 |
|
while true; do |
|
issues=$(gh api "repos/${{ github.repository }}/issues?milestone=$current_milestone_number&state=open&per_page=100&page=$page" \ |
|
--jq '.[].number') |
|
if [ -z "$issues" ]; then |
|
break |
|
fi |
|
for issue in $issues; do |
|
echo "Moving issue/PR #$issue to milestone $NEXT_MILESTONE" |
|
gh api repos/${{ github.repository }}/issues/$issue \ |
|
--method PATCH \ |
|
--field milestone=$next_milestone_number \ |
|
--silent |
|
done |
|
page=$((page + 1)) |
|
done |
|
echo "Done."
|
|
|