11name : Test Auto-label PR with next release date
22
3+ permissions :
4+ pull-requests : write
5+
36on :
7+ workflow_dispatch :
8+ inputs :
9+ test_date :
10+ description : ' Override today\' s date for testing (YYYY-MM-DD)'
11+ required : false
12+ type : string
13+ pr_number :
14+ description : ' PR number to label (for testing)'
15+ required : true
16+ type : number
417 pull_request :
518 types : [opened]
619 branches :
720 - develop # Test on develop branch first
821
922jobs :
1023 add-release-label :
24+ name : Add Release Label
1125 runs-on : ubuntu-latest
1226 steps :
1327 - name : Calculate next release date
3246 FREEZE_START_2="2025-12-30"
3347 FREEZE_END_2="2026-01-06"
3448
35- TODAY=$(date +%Y-%m-%d)
49+ TODAY="${{ github.event.inputs.test_date }}"
50+ if [ -z "$TODAY" ]; then
51+ TODAY=$(date +%Y-%m-%d)
52+ fi
3653
3754 # DEBUG: Output initial values
3855 echo "DEBUG: Today: $TODAY"
6077 MAX_ITERATIONS=3 # Safety guard - worst case is 2 freeze periods
6178 ITERATION=0
6279 while [ $ITERATION -lt $MAX_ITERATIONS ]; do
63- if [[ "$NEXT_RELEASE_DATE" >= "$FREEZE_START_1" && "$NEXT_RELEASE_DATE" <= "$FREEZE_END_1" ]]; then
80+ RELEASE_TIMESTAMP=$(date -d "$NEXT_RELEASE_DATE" +%s)
81+ FREEZE1_START_TS=$(date -d "$FREEZE_START_1" +%s)
82+ FREEZE1_END_TS=$(date -d "$FREEZE_END_1" +%s)
83+ FREEZE2_START_TS=$(date -d "$FREEZE_START_2" +%s)
84+ FREEZE2_END_TS=$(date -d "$FREEZE_END_2" +%s)
85+
86+ if [ $RELEASE_TIMESTAMP -ge $FREEZE1_START_TS ] && [ $RELEASE_TIMESTAMP -le $FREEZE1_END_TS ]; then
6487 echo "DEBUG: Date falls in freeze period 1, adjusting..."
6588 NEXT_RELEASE_DATE=$(date -d "$FREEZE_END_1 + 1 day" +%Y-%m-%d)
6689 NEXT_RELEASE_DATE=$(adjust_to_tuesday "$NEXT_RELEASE_DATE")
6992 continue
7093 fi
7194
72- if [[ "$NEXT_RELEASE_DATE" >= "$FREEZE_START_2" && "$NEXT_RELEASE_DATE" <= "$FREEZE_END_2" ] ]; then
95+ if [ $RELEASE_TIMESTAMP -ge $FREEZE2_START_TS ] && [ $RELEASE_TIMESTAMP -le $FREEZE2_END_TS ]; then
7396 echo "DEBUG: Date falls in freeze period 2, adjusting..."
7497 NEXT_RELEASE_DATE=$(date -d "$FREEZE_END_2 + 1 day" +%Y-%m-%d)
7598 NEXT_RELEASE_DATE=$(adjust_to_tuesday "$NEXT_RELEASE_DATE")
97120 echo "date=$NEXT_RELEASE_DATE" >> $GITHUB_OUTPUT
98121
99122 - name : Add test release label to PR
100- uses : actions/github-script@v6
123+ uses : actions/github-script@v4
101124 with :
102125 script : |
103126 const nextReleaseDate = "${{ steps.calculate_date.outputs.date }}";
@@ -107,19 +130,22 @@ jobs:
107130 throw new Error('Invalid date format received');
108131 }
109132
110- console.log(`Adding test label: test-release:${nextReleaseDate}`);
133+ # Get PR number from input or event
134+ const prNumber = "${{ github.event.inputs.pr_number }}" || context.payload.pull_request.number;
135+
136+ console.log(`Adding test label: test-release:${nextReleaseDate} to PR #${prNumber}`);
111137
112138 await github.rest.issues.addLabels({
113139 owner: context.repo.owner,
114140 repo: context.repo.repo,
115- issue_number: context.payload.pull_request.number ,
141+ issue_number: prNumber ,
116142 labels: [`test-release:${nextReleaseDate}`]
117143 });
118144
119145 // Also add a comment for easier verification
120146 await github.rest.issues.createComment({
121147 owner: context.repo.owner,
122148 repo: context.repo.repo,
123- issue_number: context.payload.pull_request.number ,
149+ issue_number: prNumber ,
124150 body: `🧪 **Test Release Labeling**: This PR would be included in release \`${nextReleaseDate}\``
125151 });
0 commit comments