summaryrefslogtreecommitdiff
path: root/.github/workflows
diff options
context:
space:
mode:
author5an7y-Microsoft <[email protected]>2025-08-11 12:05:15 -0700
committerGitHub <[email protected]>2025-08-11 12:05:15 -0700
commitb45d3d65404ac64e3f831c56ed558754d3465e47 (patch)
tree6ffc368a386da82453e2eacf8d60cb13e3ee47c1 /.github/workflows
parent4f30b7f23e3c0c2a547a3a5cf27087f6bd95c9ad (diff)
parenta0d6b25283bcde2dd8be1ccf40ccec9040d79676 (diff)
Merge pull request #1319 from 5an7y/main
PR to test changes from original branch. No harm done since this is done to my users branch
Diffstat (limited to '.github/workflows')
-rw-r--r--.github/workflows/generate-sample-issue-template.yml37
-rw-r--r--.github/workflows/tag-codeowner-on-issue.yml79
2 files changed, 116 insertions, 0 deletions
diff --git a/.github/workflows/generate-sample-issue-template.yml b/.github/workflows/generate-sample-issue-template.yml
new file mode 100644
index 00000000..e0a60173
--- /dev/null
+++ b/.github/workflows/generate-sample-issue-template.yml
@@ -0,0 +1,37 @@
+name: Generate Sample Issue Template
+
+on:
+ push:
+ paths:
+ - '.github/CODEOWNERS'
+ pull_request:
+ paths:
+ - '.github/CODEOWNERS'
+
+
+jobs:
+ generate-template:
+ runs-on: ubuntu-latest
+
+ steps:
+ - name: Checkout repository
+ uses: actions/checkout@v4
+
+ - name: Set up Python
+ uses: actions/setup-python@v5
+ with:
+ python-version: '3.x'
+
+ - name: Install dependencies
+ run: pip install pyyaml
+
+ - name: Run the generator script
+ run: python .github/ISSUE_TEMPLATE/sample_issue_generator.py
+
+ - name: Commit and push changes
+ run: |
+ git config user.name "github-actions[bot]"
+ git config user.email "github-actions[bot]@users.noreply.github.com"
+ git add .github/ISSUE_TEMPLATE/sample_issue.yml
+ git commit -m "Auto-generate sample issue template from CODEOWNERS" || echo "No changes to commit"
+ git push origin HEAD:${{ github.head_ref }}
diff --git a/.github/workflows/tag-codeowner-on-issue.yml b/.github/workflows/tag-codeowner-on-issue.yml
new file mode 100644
index 00000000..ec7524ac
--- /dev/null
+++ b/.github/workflows/tag-codeowner-on-issue.yml
@@ -0,0 +1,79 @@
+name: Tag Codeowner on Sample Issue
+
+on:
+ issues:
+ types: [opened]
+
+jobs:
+ tag-codeowner:
+ runs-on: ubuntu-latest
+
+ steps:
+ - name: Checkout repository
+ uses: actions/checkout@v4
+
+ - name: Set up Python
+ uses: actions/setup-python@v5
+ with:
+ python-version: '3.x'
+
+ - name: Install dependencies
+ run: pip install pyyaml requests
+
+ - name: Extract selected path and tag codeowner
+ env:
+ GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
+ run: |
+ python3 - <<EOF
+ import os
+ import re
+ import requests
+
+ issue_body = """${{ github.event.issue.body }}"""
+ selected_path = None
+
+ # Try to extract the selected path from the issue body
+ match = re.search(r'### Which is the area where the sample lives\?\s*\n(.+)', issue_body, re.MULTILINE)
+ if match:
+ selected_path = match.group(1).strip()
+
+ if not selected_path:
+ print("No sample path found in issue body.")
+ exit(0)
+
+ # Read CODEOWNERS
+ with open(".github/CODEOWNERS", "r") as f:
+ lines = f.readlines()
+
+ codeowner = None
+ sample_section = False
+ for line in lines:
+ line = line.strip()
+ if line.startswith("# Samples"):
+ sample_section = True
+ continue
+ if sample_section:
+ if line.startswith("#") or not line:
+ continue
+ path, owner = line.split()
+ if path == selected_path:
+ codeowner = owner
+ break
+
+ if codeowner is None:
+ print(f"No codeowner found for path: {selected_path}")
+ exit(0)
+
+ # Post a comment tagging the owner
+ comment = f"{codeowner} can you please take a look at this issue related to {selected_path}?"
+ repo = os.environ['GITHUB_REPOSITORY']
+ token = os.environ['GITHUB_TOKEN']
+
+ url = f"https://api.github.com/repos/{repo}/issues/${{ github.event.issue.number }}/comments"
+ headers = {
+ "Authorization": f"Bearer {token}",
+ "Accept": "application/vnd.github.v3+json"
+ }
+ response = requests.post(url, headers=headers, json={"body": comment})
+ print("Comment posted:", response.status_code, response.text)
+ EOF