-
-
Notifications
You must be signed in to change notification settings - Fork 11
try using another api for checking #53
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
base: main
Are you sure you want to change the base?
Changes from 6 commits
a1d99ad
6419896
2c8ad5e
61400ec
a0ab0a9
495069a
44f80ad
f0ef3cc
118cd77
b5949e1
f50c4cf
f29a36a
446a962
File filter
Filter by extension
Conversations
Jump to
Diff view
Diff view
There are no files selected for viewing
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,210 @@ | ||
| name: Setup Repository Labels | ||
|
|
||
| on: | ||
| workflow_dispatch: # Manual trigger | ||
| push: | ||
| branches: [main, master] | ||
| paths: | ||
| - '.github/workflows/setup-labels.yml' | ||
|
|
||
| permissions: | ||
| issues: write | ||
|
|
||
| jobs: | ||
| create-labels: | ||
| runs-on: ubuntu-latest | ||
| steps: | ||
| - name: Create all required labels | ||
| uses: actions/github-script@v7 | ||
| with: | ||
| github-token: ${{ secrets.GITHUB_TOKEN }} | ||
| script: | | ||
| // Define all labels with colors and descriptions | ||
| const requiredLabels = [ | ||
| // ==================== CONTRIBUTOR LABELS ==================== | ||
| { | ||
| name: 'Org-Member', | ||
kpj2006 marked this conversation as resolved.
Outdated
Show resolved
Hide resolved
|
||
| color: '0E8A16', | ||
| description: 'Member of the organization with admin/maintain permissions' | ||
| }, | ||
| { | ||
| name: 'first-time-contributor', | ||
| color: '7057FF', | ||
| description: 'First contribution to this repository' | ||
kpj2006 marked this conversation as resolved.
Outdated
Show resolved
Hide resolved
|
||
| }, | ||
| { | ||
| name: 'repeat-contributor', | ||
| color: '6F42C1', | ||
| description: 'External contributor with multiple contributions' | ||
kpj2006 marked this conversation as resolved.
Outdated
Show resolved
Hide resolved
|
||
| }, | ||
|
|
||
| // ==================== ISSUE TRACKING LABELS ==================== | ||
| { | ||
| name: 'no-issue-linked', | ||
| color: 'D73A4A', | ||
| description: 'PR is not linked to any issue' | ||
| }, | ||
|
|
||
| // ==================== FILE TYPE LABELS ==================== | ||
| { | ||
| name: 'documentation', | ||
| color: '0075CA', | ||
| description: 'Changes to documentation files' | ||
| }, | ||
| { | ||
| name: 'frontend', | ||
| color: 'FEF2C0', | ||
| description: 'Changes to frontend code' | ||
| }, | ||
| { | ||
| name: 'backend', | ||
| color: 'BFD4F2', | ||
| description: 'Changes to backend code' | ||
| }, | ||
| { | ||
| name: 'javascript', | ||
| color: 'F1E05A', | ||
| description: 'JavaScript/TypeScript code changes' | ||
| }, | ||
| { | ||
| name: 'python', | ||
|
Contributor
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. Not all repos contain Python code. Should we really have this label?
Contributor
Author
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. GitHub auto-creates a label when we request GitHub bot to apply a label (if we not create that label), but those labels have no descriptions and all use the same color #ededed , see:
This setup explicitly defines a small, clean label set with proper descriptions and colors which include common language js, py The main reason for introducing this workflow was the internal check pointing out the need for a contributor labels: Language labels can always be adjusted per repo if needed and also note that this is execute on workflow_dispatch means you need to manual trigger it for apply |
||
| color: '3572A5', | ||
| description: 'Python code changes' | ||
| }, | ||
| { | ||
| name: 'configuration', | ||
| color: 'EDEDED', | ||
| description: 'Configuration file changes' | ||
| }, | ||
| { | ||
| name: 'github-actions', | ||
| color: '2088FF', | ||
| description: 'GitHub Actions workflow changes' | ||
| }, | ||
| { | ||
| name: 'dependencies', | ||
| color: '0366D6', | ||
| description: 'Dependency file changes' | ||
| }, | ||
| { | ||
| name: 'tests', | ||
| color: 'C5DEF5', | ||
| description: 'Test file changes' | ||
| }, | ||
| { | ||
| name: 'docker', | ||
| color: '0DB7ED', | ||
| description: 'Docker-related changes' | ||
| }, | ||
| { | ||
| name: 'ci-cd', | ||
| color: '6E5494', | ||
| description: 'CI/CD pipeline changes' | ||
| }, | ||
|
|
||
| // ==================== SIZE LABELS ==================== | ||
| { | ||
| name: 'size/XS', | ||
| color: '00FF00', | ||
| description: 'Extra small PR (≤10 lines changed)' | ||
| }, | ||
| { | ||
| name: 'size/S', | ||
| color: '77FF00', | ||
| description: 'Small PR (11-50 lines changed)' | ||
| }, | ||
| { | ||
| name: 'size/M', | ||
| color: 'FFFF00', | ||
| description: 'Medium PR (51-200 lines changed)' | ||
| }, | ||
| { | ||
| name: 'size/L', | ||
| color: 'FF9900', | ||
| description: 'Large PR (201-500 lines changed)' | ||
| }, | ||
| { | ||
| name: 'size/XL', | ||
| color: 'FF0000', | ||
| description: 'Extra large PR (>500 lines changed)' | ||
| } | ||
| ]; | ||
|
|
||
| console.log('='.repeat(60)); | ||
| console.log('🏷️ REPOSITORY LABEL SETUP'); | ||
| console.log('='.repeat(60)); | ||
| console.log(`Total labels to create: ${requiredLabels.length}\n`); | ||
|
|
||
| // Get existing labels with pagination | ||
| const existingLabels = await github.paginate( | ||
| github.rest.issues.listLabelsForRepo, | ||
| { | ||
| owner: context.repo.owner, | ||
| repo: context.repo.repo, | ||
| per_page: 100 | ||
| } | ||
| ); | ||
|
|
||
| const existingLabelNames = existingLabels.map(label => label.name); | ||
|
|
||
| let created = 0; | ||
| let updated = 0; | ||
| let skipped = 0; | ||
| let failed = 0; | ||
|
|
||
| // Process each label | ||
| for (const label of requiredLabels) { | ||
| try { | ||
| if (!existingLabelNames.includes(label.name)) { | ||
| // Create new label | ||
| await github.rest.issues.createLabel({ | ||
| owner: context.repo.owner, | ||
| repo: context.repo.repo, | ||
| name: label.name, | ||
| color: label.color, | ||
| description: label.description | ||
| }); | ||
| console.log(`✅ Created: ${label.name} (#${label.color})`); | ||
| created++; | ||
| } else { | ||
| // Update existing label (in case color/description changed) | ||
| const existingLabel = existingLabels.find(l => l.name === label.name); | ||
| if (existingLabel.color !== label.color || existingLabel.description !== label.description) { | ||
| await github.rest.issues.updateLabel({ | ||
| owner: context.repo.owner, | ||
| repo: context.repo.repo, | ||
| name: label.name, | ||
| color: label.color, | ||
| description: label.description | ||
| }); | ||
| console.log(`🔄 Updated: ${label.name} (#${label.color})`); | ||
| updated++; | ||
| } else { | ||
| console.log(`⏭️ Skipped: ${label.name} (already exists)`); | ||
| skipped++; | ||
| } | ||
| } | ||
| } catch (error) { | ||
| console.log(`❌ Failed: ${label.name} - ${error.message}`); | ||
| failed++; | ||
| } | ||
| } | ||
|
|
||
| // Summary | ||
| console.log('\n' + '='.repeat(60)); | ||
| console.log('📊 SUMMARY'); | ||
| console.log('='.repeat(60)); | ||
| console.log(`✅ Created: ${created}`); | ||
| console.log(`🔄 Updated: ${updated}`); | ||
| console.log(`⏭️ Skipped: ${skipped}`); | ||
| console.log(`❌ Failed: ${failed}`); | ||
| console.log('='.repeat(60)); | ||
|
|
||
| // Fail the step if any labels failed to create/update | ||
| if (failed > 0) { | ||
| core.setFailed(`Label setup failed! ${failed} label(s) could not be created or updated.`); | ||
| } else if (created > 0 || updated > 0) { | ||
| console.log('\n🎉 Label setup complete! Your repository is ready.'); | ||
| } else { | ||
| console.log('\n✨ All labels are already up to date.'); | ||
| } | ||

Uh oh!
There was an error while loading. Please reload this page.