diff --git a/.github/autolabeler-config.json b/.github/autolabeler-config.json index 43c272f87..5406bdaa4 100644 --- a/.github/autolabeler-config.json +++ b/.github/autolabeler-config.json @@ -1,17 +1,5 @@ { - "breaking change": [ - { - "fileStatus": "renamed", - "includeGlobs": ["ct/**", "install/**", "misc/**", "turnkey/**", "vm/**"], - "excludeGlobs": [] - }, - { - "fileStatus": "removed", - "includeGlobs": ["ct/**", "install/**", "misc/**", "turnkey/**", "vm/**"], - "excludeGlobs": [] - } - ], "new script": [ { "fileStatus": "added", @@ -33,10 +21,17 @@ "excludeGlobs": [] } ], - "rename script": [ + "maintenance": [ { - "fileStatus": "renamed", - "includeGlobs": ["ct/**", "install/**", "misc/**", "turnkey/**", "vm/**"], + "fileStatus": null, + "includeGlobs": ["*.md", ".github/**", "misc/*.func", "ct/create_lxc.sh", "api/**"], + "excludeGlobs": [] + } + ], + "core": [ + { + "fileStatus": null, + "includeGlobs": ["misc/*.func", "ct/create_lxc.sh"], "excludeGlobs": [] } ], @@ -47,25 +42,35 @@ "excludeGlobs": [] } ], - "maintenance": [ - { - "fileStatus": null, - "includeGlobs": ["*.md", ".github/**", "misc/*.func", "ct/create_lxc.sh"], - "excludeGlobs": ["misc/api.func"] - } - ], - "api": [ + "api": [ { "fileStatus": null, "includeGlobs": ["api/**", "misc/api.func"], "excludeGlobs": [] } ], + "github": [ + { + "fileStatus": null, + "includeGlobs": [".github/**"], + "excludeGlobs": [] + } + ], + "json": [ + { + "fileStatus": "modified", + "includeGlobs": ["json/**"], + "excludeGlobs": [] + } + ], + "high risk": [ { "fileStatus": null, "includeGlobs": ["misc/build.func", "misc/install.func", "ct/create_lxc.sh"], "excludeGlobs": [] } - ] -} + ] + + +} \ No newline at end of file diff --git a/.github/changelog-pr-config.json b/.github/changelog-pr-config.json index 558f32fe1..2c62aa3f0 100644 --- a/.github/changelog-pr-config.json +++ b/.github/changelog-pr-config.json @@ -1,16 +1,8 @@ [ - { - "title": "💥 Breaking Changes", - "labels": ["breaking change"] - }, { "title": "🆕 New Scripts", "labels": ["new script"] }, - { - "title": "✨ New Features", - "labels": ["feature"] - }, { "title": "🚀 Updated Scripts", "labels": ["update script"], @@ -21,27 +13,85 @@ "notes" : [] }, { - "title": "General Updates", - "labels": ["general"], + "title": "✨ New Features", + "labels": ["feature"], + "notes" : [] + }, + { + "title": "💥 Breaking Changes", + "labels": ["breaking change"], "notes" : [] } ] }, - - { - "title": "🌐 Website", - "labels": ["website"] - }, - { - "title": "📡 API", - "labels": ["api"] - }, { "title": "🧰 Maintenance", - "labels": ["maintenance"] + "labels": ["maintenance"], + "subCategories": [ + { + "title": "🐞 Bug Fixes", + "labels": ["bugfix"], + "notes" : [] + }, + { + "title": "✨ New Features", + "labels": ["feature"], + "notes" : [] + }, + { + "title": "💥 Breaking Changes", + "labels": ["breaking change"], + "notes" : [] + }, + { + "title": "📡 API", + "labels": ["api"], + "notes" : [] + }, + { + "title": "💾 Core", + "labels": ["core"], + "notes" : [] + }, + { + "title": "📂 Github", + "labels": ["github"], + "notes" : [] + } + ] + }, + { + "title": "🌐 Website", + "labels": ["website"], + "subCategories": [ + { + "title": "🐞 Bug Fixes", + "labels": ["bugfix"], + "notes" : [] + }, + { + "title": "✨ New Features", + "labels": ["feature"], + "notes" : [] + }, + { + "title": "💥 Breaking Changes", + "labels": ["breaking change"], + "notes" : [] + }, + { + "title": "📝 Script Information", + "labels": ["json"], + "notes" : [] + } + ] }, { "title": "❔ Unlabelled", "labels": [] + }, + { + "title": "💥 Breaking Changes", + "labels": ["breaking change"] } ] diff --git a/.github/pull_request_template.md b/.github/pull_request_template.md index 11a90a774..d669ec78a 100644 --- a/.github/pull_request_template.md +++ b/.github/pull_request_template.md @@ -1,25 +1,25 @@ ## ✍️ Description - ## 🔗 Related PR / Discussion / Issue + Link: # - - ## ✅ Prerequisites + Before this PR can be reviewed, the following must be completed: + - [] **Self-review performed** – Code follows established patterns and conventions. - [] **Testing performed** – Changes have been thoroughly tested and verified. - ## 🛠️ Type of Change -Select all that apply: -- [] 🐞 **Bug fix** – Resolves an issue without breaking functionality. -- [] ✨ **New feature** – Adds new, non-breaking functionality. -- [] 💥 **Breaking change** – Alters existing functionality in a way that may require updates. -- [] 🆕 **New script** – A fully functional and tested script or script set. +Select all that apply: + +- [] 🆕 **New script** – A fully functional and tested script or script set. +- [] 🐞 **Bug fix** – Resolves an issue without breaking functionality. +- [] ✨ **New feature** – Adds new, non-breaking functionality. +- [] 💥 **Breaking change** – Alters existing functionality in a way that may require updates. ## 📋 Additional Information (optional) diff --git a/.github/workflows/autolabeler.yml b/.github/workflows/autolabeler.yml index 0051d787d..dfe1303e5 100644 --- a/.github/workflows/autolabeler.yml +++ b/.github/workflows/autolabeler.yml @@ -11,7 +11,7 @@ jobs: permissions: pull-requests: write env: - CONFIG_PATH: .github/autolabeler-config.json + CONFIG_PATH: .github/autolabeler-config_new.json steps: - name: Checkout repository uses: actions/checkout@v4 @@ -43,26 +43,8 @@ jobs: }); const prFiles = prListFilesResponse.data; - const templateLabelMappings = { - "🐞 **bug fix**": "bugfix", - "✨ **new feature**": "feature", - "💥 **breaking change**": "breaking change", - "🆕 **new script**": "new script" - }; - - for (const [checkbox, label] of Object.entries(templateLabelMappings)) { - const escapedCheckbox = checkbox.replace(/([.*+?^=!:${}()|\[\]\/\\])/g, "\\$1"); - const regex = new RegExp(`- \\[(x|X)\\]\\s*.*${escapedCheckbox}`, "i"); - const match = prBody.match(regex); - if (match) { - console.log(`Match: ${match}`); - labelsToAdd.add(label); - } - } - if (labelsToAdd.size === 0) { - labelsToAdd.add("general"); - } + // Apply labels based on file changes for (const [label, rules] of Object.entries(autolabelerConfig)) { const shouldAddLabel = prFiles.some((prFile) => { @@ -79,6 +61,21 @@ jobs: labelsToAdd.add(label); } } + const templateLabelMappings = { + "🐞 **Bug fix**": "bugfix", + "✨ **New feature**": "feature", + "💥 **Breaking change**": "breaking change", + }; + + for (const [checkbox, label] of Object.entries(templateLabelMappings)) { + const escapedCheckbox = checkbox.replace(/([.*+?^=!:${}()|\[\]\/\\])/g, "\\$1"); + const regex = new RegExp(`- \\[(x|X)\\]\\s*.*${escapedCheckbox}`, "i"); + const match = prBody.match(regex); + if (match) { + console.log(`Match: ${match}`); + labelsToAdd.add(label); + } + } console.log(`Labels to add: ${Array.from(labelsToAdd).join(", ")}`); @@ -90,4 +87,4 @@ jobs: issue_number: prNumber, labels: Array.from(labelsToAdd), }); - } + } \ No newline at end of file diff --git a/.github/workflows/changelog-pr.yml b/.github/workflows/changelog-pr.yml index 5ca3b9bd7..dc5bcd3d3 100644 --- a/.github/workflows/changelog-pr.yml +++ b/.github/workflows/changelog-pr.yml @@ -58,10 +58,26 @@ jobs: const categorizedPRs = changelogConfig.map(obj => ({ ...obj, notes: [], - subCategories: obj.subCategories ?? (obj.labels.includes("update script") ? [ - { title: "🐞 Bug Fixes", labels: ["bugfix"] }, - { title: "✨ Feature Updates", labels: ["feature"] } - ] : []) + subCategories: obj.subCategories ?? ( + obj.labels.includes("update script") ? [ + { title: "🐞 Bug Fixes", labels: ["bugfix"], notes: [] }, + { title: "✨ New Features", labels: ["feature"], notes: [] }, + { title: "💥 Breaking Changes", labels: ["breaking change"], notes: [] } + ] : + obj.labels.includes("maintenance") ? [ + { title: "🐞 Bug Fixes", labels: ["bugfix"], notes: [] }, + { title: "✨ New Features", labels: ["feature"], notes: [] }, + { title: "💥 Breaking Changes", labels: ["breaking change"], notes: [] }, + { title: "📡 API", labels: ["api"], notes: [] }, + { title: "Github", labels: ["github"], notes: [] } + ] : + obj.labels.includes("website") ? [ + { title: "🐞 Bug Fixes", labels: ["bugfix"], notes: [] }, + { title: "✨ New Features", labels: ["feature"], notes: [] }, + { title: "💥 Breaking Changes", labels: ["breaking change"], notes: [] }, + { title: "Script Information", labels: ["json"], notes: [] } + ] : [] + ) })); const latestDateInChangelog = new Date(process.env.LATEST_DATE); @@ -110,6 +126,7 @@ jobs: return categorizedPRs; + - name: Update CHANGELOG.md uses: actions/github-script@v7 with: @@ -124,7 +141,8 @@ jobs: console.log(JSON.stringify(categorizedPRs, null, 2)); - let newReleaseNotes = `## ${today}\n\n### Changes\n\n`; + + let newReleaseNotes = `## ${today}\n\n`; for (const { title, notes, subCategories } of categorizedPRs) { const hasSubcategories = subCategories && subCategories.length > 0; const hasMainNotes = notes.length > 0; @@ -133,17 +151,16 @@ jobs: if (hasMainNotes || hasSubNotes) { newReleaseNotes += `### ${title}\n\n`; - } + } if (hasMainNotes) { - newReleaseNotes += `${notes.join("\n")}\n\n`; - } - + newReleaseNotes += ` ${notes.join("\n")}\n\n`; + } if (hasSubcategories) { for (const { title: subTitle, notes: subNotes } of subCategories) { if (subNotes && subNotes.length > 0) { - newReleaseNotes += ` #### ${subTitle}\n\n`; - newReleaseNotes += ` ${subNotes.join("\n ")}\n\n`; + newReleaseNotes += ` - #### ${subTitle}\n\n`; + newReleaseNotes += ` ${subNotes.join("\n ")}\n\n`; } } } @@ -206,4 +223,4 @@ jobs: PR_NUMBER=$(gh pr list --head "${BRANCH_NAME}" --json number --jq '.[].number') if [ -n "$PR_NUMBER" ]; then gh pr review $PR_NUMBER --approve - fi + fi \ No newline at end of file