This is an automated email from the ASF dual-hosted git repository.

sjaranowski pushed a commit to branch v4
in repository https://gitbox.apache.org/repos/asf/maven-gh-actions-shared.git


The following commit(s) were added to refs/heads/v4 by this push:
     new f5ed123  Milestones management on next development
f5ed123 is described below

commit f5ed123d6c8723df6215cb0cc4f8ae3266150e51
Author: Slawomir Jaranowski <[email protected]>
AuthorDate: Sun Nov 23 19:39:51 2025 +0100

    Milestones management on next development
    
    on next development version, we will do actions:
    - create new next milestone
    - close old one
---
 .github/workflows/release-drafter.yml | 96 +++++++++++++++++++++++++++++++++--
 1 file changed, 92 insertions(+), 4 deletions(-)

diff --git a/.github/workflows/release-drafter.yml 
b/.github/workflows/release-drafter.yml
index 279d585..9cf48a4 100644
--- a/.github/workflows/release-drafter.yml
+++ b/.github/workflows/release-drafter.yml
@@ -39,14 +39,13 @@ concurrency:
   group: ${{ github.workflow }}-${{ github.ref }}
   cancel-in-progress: false
 
+# clare all permissions for GITHUB_TOKEN
+permissions: {}
+
 jobs:
   detect-version:
-    # skip release drafter on releases commits
-    if: (!startsWith(github.event.head_commit.message , 
'[maven-release-plugin] prepare for next development iteration'))
-
     name: Detect version
     runs-on: ubuntu-latest
-    permissions: {}
     outputs:
       version: ${{ steps.version.outputs.version }}
 
@@ -84,6 +83,11 @@ jobs:
       # write permission is required to create a github release
       contents: write
     runs-on: ubuntu-latest
+    # skip release drafter on next development commits
+    if: >
+      needs.detect-version.outputs.version != '' &&
+      !startsWith(github.event.head_commit.message , '[maven-release-plugin] 
prepare for next development iteration')
+
     steps:
       - uses: apache/maven-gh-actions-shared@release-drafter # temporary copy 
of the release-drafter action
         id: release-drafter
@@ -98,3 +102,87 @@ jobs:
       - name: Verify release drafter status
         if: steps.release-drafter.outputs.id == ''
         run: exit 1
+
+  milestones-managment:
+    name: Milestones Management
+    needs: detect-version
+    permissions:
+      # write permission is required to manage milestones
+      issues: write
+    runs-on: ubuntu-latest
+    # execute only on next development commits
+    if: >
+      needs.detect-version.outputs.version != '' &&
+      startsWith(github.event.head_commit.message , '[maven-release-plugin] 
prepare for next development iteration')
+
+    steps:
+      - uses: actions/github-script@ed597411d8f924073f98dfc5c65a23a2325f34cd # 
v8.0.0
+        env:
+          CURRENT_VERSION: ${{ needs.detect-version.outputs.version }}
+        with:
+          script: |
+            const branch = context.ref.replace('refs/heads/', '');
+            const version = process.env.CURRENT_VERSION;
+            
+            console.log('branch: ' + branch);
+            console.log('version: ' + version);
+            
+            const milestones = await github.rest.issues.listMilestones({
+              owner: context.repo.owner,
+              repo: context.repo.repo,
+              state: 'open'
+            });
+            
+            console.log('All open milestones: ');
+            console.log(milestones.data);
+            
+            var milestone;
+            if (milestones.data.length > 1) {
+              milestone = milestones.data.find(({description}) => 
description?.includes('branch: ' + branch));
+            } else if (milestones.data.length == 1) {
+              milestone = milestones.data[0];
+            }
+            
+            console.log('Current milestone: ');
+            console.log(milestone);
+            
+            core.summary.addHeading('Milestone management');
+            
+            // in first step just create new milestone - closing the old one 
will be in the next step
+            // if something fails here - we don't want to close the existing 
milestone
+            const resultNew = await github.rest.issues.createMilestone({
+                owner: context.repo.owner,
+                repo: context.repo.repo,
+                title: version,
+                description: 'branch: ' + branch
+            });
+            
+            console.log('Created new milestone: ');
+            console.log(resultNew.data);
+            
+            core.summary.addRaw('New milestone: ');
+            core.summary.addLink(resultNew.data.title, 
resultNew.data.html_url);
+            core.summary.addBreak();
+            
+            // now close the existing milestone
+            if (milestone) {
+              const resultOld = await github.rest.issues.updateMilestone({
+                owner: context.repo.owner,
+                repo: context.repo.repo,
+                milestone_number: milestone.number,
+                state: 'closed'
+              });
+            
+              console.log('Closed old milestone: ');
+              console.log(resultOld.data);
+            
+              core.summary.addRaw('Closed milestone: ');
+              core.summary.addLink(milestone.title, milestone.html_url);
+              core.summary.addBreak();
+            } else {
+              console.log('No existing milestone to close');
+              core.summary.addRaw('No existing milestone to close - please 
verify');
+              core.summary.addBreak();
+            }
+            
+            core.summary.write();

Reply via email to