From 1f7487814c9594478a14ff538de545b0f88530f2 Mon Sep 17 00:00:00 2001 From: Tomas Sebestik Date: Mon, 20 Mar 2023 14:01:14 +0100 Subject: [PATCH] add(ci:danger) Check MR area labels --- .gitlab/dangerjs/dangerfile.js | 5 ++++- .gitlab/dangerjs/mrAreaLabels.js | 20 ++++++++++++++++++++ 2 files changed, 24 insertions(+), 1 deletion(-) create mode 100644 .gitlab/dangerjs/mrAreaLabels.js diff --git a/.gitlab/dangerjs/dangerfile.js b/.gitlab/dangerjs/dangerfile.js index 67fff7a80c..dae0a1bc5a 100644 --- a/.gitlab/dangerjs/dangerfile.js +++ b/.gitlab/dangerjs/dangerfile.js @@ -9,7 +9,7 @@ async function runChecks() { // Checks for merge request description require("./mrDescriptionLongEnough.js")(); require("./mrDescriptionHasReleaseNotes.js")(); - await require('./mrDescriptionJiraLinks.js')(); + await require("./mrDescriptionJiraLinks.js")(); // Checks for documentation require("./mrDocsTranslation.js")(); @@ -21,6 +21,9 @@ async function runChecks() { // Checks for MR code require("./mrSizeTooLarge.js")(); + // Checks for MR area labels + await require("./mrAreaLabels.js")(); + // Add success log if no issues if ( results.fails.length === 0 && diff --git a/.gitlab/dangerjs/mrAreaLabels.js b/.gitlab/dangerjs/mrAreaLabels.js new file mode 100644 index 0000000000..6ee5796879 --- /dev/null +++ b/.gitlab/dangerjs/mrAreaLabels.js @@ -0,0 +1,20 @@ +/** + * Check if MR has area labels (light blue labels) + * + * @dangerjs WARN + */ +module.exports = async function () { + const projectId = 103; // ESP-IDF + const areaLabelColor = "#d2eBFA"; + const projectLabels = await danger.gitlab.api.Labels.all(projectId); // Get all project labels + const areaLabels = projectLabels + .filter((label) => label.color === areaLabelColor) + .map((label) => label.name); // Filter only area labels + const mrLabels = danger.gitlab.mr.labels; // Get MR labels + + if (!mrLabels.some((label) => areaLabels.includes(label))) { + warn( + `Please add some [area labels](${process.env.DANGER_GITLAB_HOST}/espressif/esp-idf/-/labels) to this MR.` + ); + } +};