@@ -236,30 +236,79 @@ jobs:
236
236
- Look for Backup-related fixes that might affect the module
237
237
238
238
### Step 5: Issue Creation
239
- For each significant finding:
239
+ **CRITICAL: You MUST create actual GitHub issues when dry_run is false.**
240
240
241
- **If NOT in dry run mode ( ${{ inputs.dry_run }} == false): **
241
+ **Current Configuration: dry_run = ${{ inputs.dry_run || ' false' }} **
242
242
243
- Create GitHub issues using templates:
243
+ **If NOT in dry run mode (${{ inputs.dry_run }} == 'false' or inputs.dry_run is empty):**
244
244
245
+ For EACH new feature discovered, you MUST execute these commands:
246
+
247
+ **For new AWS Backup resources (aws_backup_*):**
248
+ ```bash
249
+ gh issue create --title "feat: Add support for [EXACT_RESOURCE_NAME]" \
250
+ --body "## Feature Request
251
+
252
+ ### AWS Resource
253
+ **Resource:** \`[EXACT_RESOURCE_NAME]\`
254
+ **Provider Version:** ${{ inputs.provider_version || 'latest' }}
255
+ **Discovery Date:** $(date -u '+%Y-%m-%d')
256
+
257
+ ### Description
258
+ [RESOURCE_DESCRIPTION_FROM_DOCS]
259
+
260
+ ### Arguments/Attributes
261
+ [LIST_OF_ARGUMENTS]
262
+
263
+ ### Implementation Priority
264
+ [HIGH/MEDIUM/LOW based on security_impact]
265
+
266
+ ### Security Impact
267
+ [SECURITY_IMPLICATIONS]
268
+
269
+ ### References
270
+ - AWS Provider Documentation: [DOC_LINK]
271
+ - Terraform Registry: https://registry.terraform.io/providers/hashicorp/aws/latest/docs/resources/[resource_name]
272
+
273
+ ### Auto-Discovery Metadata
274
+ - Discovered by: AWS Backup Feature Discovery Bot
275
+ - Scan ID: $(date +%s)
276
+ - Provider Doc ID: [PROVIDER_DOC_ID]" \
277
+ --label "enhancement,aws-provider-update,auto-discovered,needs-implementation" \
278
+ --assignee "lgallard"
279
+ ```
280
+
281
+ **For new arguments on existing resources:**
282
+ ```bash
283
+ gh issue create --title "feat: Add [ARGUMENT_NAME] support to [RESOURCE_NAME]" \
284
+ --body "## Enhancement Request
285
+
286
+ ### Resource Enhancement
287
+ **Resource:** \`[RESOURCE_NAME]\`
288
+ **New Argument:** \`[ARGUMENT_NAME]\`
289
+ **Provider Version:** ${{ inputs.provider_version || 'latest' }}
290
+
291
+ ### Argument Details
292
+ [ARGUMENT_DESCRIPTION]
293
+
294
+ ### Implementation Impact
295
+ [IMPACT_ON_EXISTING_MODULE]
296
+
297
+ ### Auto-Discovery Metadata
298
+ - Discovered by: AWS Backup Feature Discovery Bot
299
+ - Priority: [PRIORITY_LEVEL]" \
300
+ --label "enhancement,aws-provider-update,auto-discovered,argument-addition" \
301
+ --assignee "lgallard"
302
+ ```
303
+
304
+ **VERIFICATION STEP: After creating each issue, capture the issue number and update the tracker:**
245
305
```bash
246
- # For new features
247
- gh issue create --template .github/ISSUE_TEMPLATE/new-backup-feature.md \
248
- --title "feat: Add support for [feature_name]" \
249
- --label "enhancement,aws-provider-update,auto-discovered" \
250
- --assignee "@me"
251
-
252
- # For deprecations
253
- gh issue create --template .github/ISSUE_TEMPLATE/backup-deprecation.md \
254
- --title "chore: Handle deprecation of [feature_name]" \
255
- --label "deprecation,breaking-change,auto-discovered" \
256
- --assignee "@me"
257
-
258
- # For bug fixes
259
- gh issue create --template .github/ISSUE_TEMPLATE/backup-bug-fix.md \
260
- --title "fix: Address [bug_description]" \
261
- --label "bug,aws-provider-update,auto-discovered" \
262
- --assignee "@me"
306
+ # Get the issue number from the previous command
307
+ ISSUE_NUMBER=$(gh issue list --limit 1 --json number --jq '.[0].number')
308
+ echo "Created issue #$ISSUE_NUMBER for [FEATURE_NAME]"
309
+
310
+ # You MUST update the feature tracker to mark the issue as created (not pending_creation)
311
+ # This will be handled in the tracker update step
263
312
```
264
313
265
314
### Step 6: Update Feature Tracker
@@ -289,6 +338,100 @@ jobs:
289
338
## Expected Output
290
339
Provide a detailed report of your analysis and actions taken.
291
340
341
+ - name : Post-process pending issue creation
342
+ id : create-pending-issues
343
+ if : steps.claude-discovery.conclusion == 'success' && inputs.dry_run != true
344
+ run : |
345
+ set -euo pipefail
346
+
347
+ echo "🔍 Checking for features with pending_creation status..."
348
+
349
+ TRACKER_FILE=".github/feature-tracker/backup-features.json"
350
+ ISSUES_CREATED=0
351
+
352
+ if [ ! -f "$TRACKER_FILE" ]; then
353
+ echo "Feature tracker file not found, skipping post-processing"
354
+ exit 0
355
+ fi
356
+
357
+ # Extract pending creation features using jq
358
+ PENDING_FEATURES=$(jq -r '.issues_created[] | select(.status == "pending_creation") | @base64' "$TRACKER_FILE" 2>/dev/null || echo "")
359
+
360
+ if [ -z "$PENDING_FEATURES" ]; then
361
+ echo "✅ No features with pending_creation status found"
362
+ exit 0
363
+ fi
364
+
365
+ echo "📝 Found features requiring issue creation:"
366
+
367
+ # Process each pending feature
368
+ while IFS= read -r feature_data; do
369
+ if [ -n "$feature_data" ]; then
370
+ # Decode base64 and extract fields
371
+ FEATURE_JSON=$(echo "$feature_data" | base64 --decode)
372
+ RESOURCE=$(echo "$FEATURE_JSON" | jq -r '.resource')
373
+ TITLE=$(echo "$FEATURE_JSON" | jq -r '.title')
374
+ ISSUE_TYPE=$(echo "$FEATURE_JSON" | jq -r '.issue_type')
375
+
376
+ echo "Creating issue for: $RESOURCE"
377
+
378
+ # Create the issue based on type
379
+ if [ "$ISSUE_TYPE" = "new-feature" ]; then
380
+ ISSUE_URL=$(gh issue create \
381
+ --title "$TITLE" \
382
+ --body "## AWS Backup Feature Request
383
+
384
+ ### Resource
385
+ **AWS Resource:** \`$RESOURCE\`
386
+ **Provider Version:** ${{ inputs.provider_version || 'latest' }}
387
+ **Discovery Date:** $(date -u '+%Y-%m-%d')
388
+
389
+ ### Auto-Discovery Details
390
+ This feature was automatically discovered by the AWS Backup Feature Discovery workflow.
391
+
392
+ **Discovery Metadata:**
393
+ - Scan Date: $(date -u '+%Y-%m-%d %H:%M:%S UTC')
394
+ - Workflow Run: ${{ github.run_id }}
395
+ - Repository: ${{ github.repository }}
396
+
397
+ ### Next Steps
398
+ 1. Review AWS provider documentation for this resource
399
+ 2. Analyze integration requirements with existing module
400
+ 3. Design implementation approach
401
+ 4. Add comprehensive tests
402
+ 5. Update documentation and examples
403
+
404
+ ### Implementation Priority
405
+ This feature requires evaluation for:
406
+ - Security and compliance impact
407
+ - Backward compatibility
408
+ - Module architecture integration
409
+
410
+ ---
411
+ *Auto-generated by AWS Backup Feature Discovery Bot*" \
412
+ --label "enhancement,aws-provider-update,auto-discovered,needs-triage" \
413
+ --assignee "lgallard")
414
+
415
+ # Extract issue number from URL
416
+ ISSUE_NUMBER=$(echo "$ISSUE_URL" | grep -o '[0-9]*$')
417
+ echo "✅ Created issue #$ISSUE_NUMBER for $RESOURCE"
418
+ ISSUES_CREATED=$((ISSUES_CREATED + 1))
419
+
420
+ # Update the tracker file to mark as created (using temporary approach)
421
+ jq --arg resource "$RESOURCE" --arg issue_num "$ISSUE_NUMBER" --arg issue_url "$ISSUE_URL" '
422
+ (.issues_created[] | select(.resource == $resource)) |= (
423
+ .status = "created" |
424
+ .issue_number = ($issue_num | tonumber) |
425
+ .issue_url = $issue_url |
426
+ .actual_creation_date = now | strftime("%Y-%m-%dT%H:%M:%SZ")
427
+ )' "$TRACKER_FILE" > "${TRACKER_FILE}.tmp" && mv "${TRACKER_FILE}.tmp" "$TRACKER_FILE"
428
+ fi
429
+ fi
430
+ done <<< "$PENDING_FEATURES"
431
+
432
+ echo "🎯 Post-processing complete: Created $ISSUES_CREATED issues"
433
+ echo "issues_created=$ISSUES_CREATED" >> $GITHUB_OUTPUT
434
+
292
435
- name : Commit feature tracker updates
293
436
if : steps.claude-discovery.conclusion == 'success'
294
437
run : |
@@ -371,6 +514,22 @@ jobs:
371
514
else
372
515
echo "- ❌ **Feature Discovery**: Failed" >> $GITHUB_STEP_SUMMARY
373
516
fi
517
+
518
+ # Issue Creation Status
519
+ if [ "${{ inputs.dry_run }}" = "true" ]; then
520
+ echo "- 🧪 **Issue Creation**: Skipped (dry run mode)" >> $GITHUB_STEP_SUMMARY
521
+ elif [ "${{ steps.create-pending-issues.conclusion }}" = "success" ]; then
522
+ ISSUES_COUNT="${{ steps.create-pending-issues.outputs.issues_created || '0' }}"
523
+ if [ "$ISSUES_COUNT" -gt 0 ]; then
524
+ echo "- ✅ **Issue Creation**: Created $ISSUES_COUNT new issues" >> $GITHUB_STEP_SUMMARY
525
+ else
526
+ echo "- ✅ **Issue Creation**: No new issues needed" >> $GITHUB_STEP_SUMMARY
527
+ fi
528
+ elif [ "${{ steps.create-pending-issues.conclusion }}" = "skipped" ]; then
529
+ echo "- ⏭️ **Issue Creation**: Skipped (no feature discovery or dry run)" >> $GITHUB_STEP_SUMMARY
530
+ else
531
+ echo "- ❌ **Issue Creation**: Failed or incomplete" >> $GITHUB_STEP_SUMMARY
532
+ fi
374
533
echo "" >> $GITHUB_STEP_SUMMARY
375
534
376
535
# Available Commands
0 commit comments