ci: fix silently-broken issue labeling and add PR labeling (#6470)

This commit is contained in:
Kartik
2026-07-21 18:47:39 +05:30
committed by GitHub
parent 2af3a72f73
commit 70ab76a053
7 changed files with 118 additions and 33 deletions
+2 -2
View File
@@ -9,9 +9,9 @@ body:
label: Component
description: Which part of mem0 is affected?
options:
- Core / Python SDK
- Python SDK
- TypeScript SDK
- Vector Store (Qdrant, PGVector, Redis, Chroma, etc.)
- Vector Store
- OpenClaw
- REST API
- Other
+2 -2
View File
@@ -9,9 +9,9 @@ body:
label: Component
description: Which part of mem0 does this relate to?
options:
- Core / Python SDK
- Python SDK
- TypeScript SDK
- Vector Store (Qdrant, PGVector, Redis, Chroma, etc.)
- Vector Store
- OpenClaw
- REST API
- Other
+15 -14
View File
@@ -1,14 +1,15 @@
# Maps dropdown selections to GitHub labels
# Used by the advanced-issue-labeler GitHub Action
component:
- label: "sdk-python"
matcher: "Core / Python SDK"
- label: "sdk-typescript"
matcher: "TypeScript SDK"
- label: "vector-store"
matcher: "Vector Store"
- label: "openclaw"
matcher: "OpenClaw"
- label: "rest-api"
matcher: "REST API"
policy:
- section:
- id: ['component']
block-list: ['Other']
label:
- name: 'sdk-python'
keys: ['Python SDK']
- name: 'sdk-typescript'
keys: ['TypeScript SDK']
- name: 'vector-store'
keys: ['Vector Store']
- name: 'openclaw'
keys: ['OpenClaw']
- name: 'rest-api'
keys: ['REST API']
+39
View File
@@ -0,0 +1,39 @@
vector-store:
- changed-files:
- any-glob-to-any-file: 'mem0/vector_stores/**'
sdk-python:
- changed-files:
- any-glob-to-any-file: ['mem0/**', 'tests/**']
sdk-typescript:
- changed-files:
- any-glob-to-any-file: 'mem0-ts/**'
rest-api:
- changed-files:
- any-glob-to-any-file: 'server/**'
openmemory:
- changed-files:
- any-glob-to-any-file: 'openmemory/**'
openclaw:
- changed-files:
- any-glob-to-any-file: 'integrations/openclaw/**'
integrations:
- changed-files:
- any-glob-to-any-file: 'integrations/**'
cli:
- changed-files:
- any-glob-to-any-file: 'cli/**'
documentation:
- changed-files:
- any-glob-to-any-file: 'docs/**'
ci:
- changed-files:
- any-glob-to-any-file: '.github/**'
+2 -15
View File
@@ -12,6 +12,8 @@ jobs:
label:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- uses: stefanbuck/github-issue-parser@v3
id: issue-parser
with:
@@ -20,20 +22,5 @@ jobs:
- uses: redhat-plumbers-in-action/advanced-issue-labeler@v3
with:
issue-form: ${{ steps.issue-parser.outputs.jsonString }}
section: component
token: ${{ secrets.GITHUB_TOKEN }}
config-path: .github/advanced-issue-labeler.yml
- uses: stefanbuck/github-issue-parser@v3
id: feature-parser
if: contains(github.event.issue.labels.*.name, 'enhancement')
with:
template-path: .github/ISSUE_TEMPLATE/feature_request.yml
- uses: redhat-plumbers-in-action/advanced-issue-labeler@v3
if: contains(github.event.issue.labels.*.name, 'enhancement')
with:
issue-form: ${{ steps.feature-parser.outputs.jsonString }}
section: component
token: ${{ secrets.GITHUB_TOKEN }}
config-path: .github/advanced-issue-labeler.yml
+57
View File
@@ -0,0 +1,57 @@
name: PR Labeler
on:
pull_request_target:
types: [opened, synchronize, reopened, edited]
permissions:
contents: read
pull-requests: write
issues: read
jobs:
label:
runs-on: ubuntu-latest
steps:
- uses: actions/labeler@v5
with:
repo-token: ${{ secrets.GITHUB_TOKEN }}
- name: Propagate labels from linked issues
uses: actions/github-script@v7
with:
script: |
const allowed = new Set([
'sdk-python', 'sdk-typescript', 'vector-store', 'openclaw',
'rest-api', 'openmemory', 'documentation', 'ci', 'cli', 'integrations',
]);
const body = context.payload.pull_request.body || '';
const matches = [...body.matchAll(/\b(?:close[sd]?|fix(?:e[sd])?|resolve[sd]?)\s*:?\s*(?:#|https:\/\/github\.com\/mem0ai\/mem0\/issues\/)(\d+)/gi)];
const numbers = [...new Set(matches.map((m) => Number(m[1])))];
const labels = new Set();
for (const issue_number of numbers) {
let issue;
try {
({ data: issue } = await github.rest.issues.get({
owner: context.repo.owner,
repo: context.repo.repo,
issue_number,
}));
} catch {
continue;
}
if (issue.pull_request) continue;
for (const label of issue.labels) {
if (allowed.has(label.name)) labels.add(label.name);
}
}
if (labels.size > 0) {
await github.rest.issues.addLabels({
owner: context.repo.owner,
repo: context.repo.repo,
issue_number: context.issue.number,
labels: [...labels],
});
}