Mehrere Arbeitselemente werden einem Commit in zugeordnet DevOps

  • Freigeben Version: Yokohama
  • Aktualisiert 30. Januar 2025
  • 2 Minuten Lesedauer
  • Mehrere Arbeitselemente für einen Commit werden in DevOps für Azure DevOps, Bitbucket, GitHubund GitLabunterstützt.

    Die Syntax von Arbeitselementen in der Commit-Nachricht kann mithilfe der Skripteinbindung DevOpsCommitMessageParserSNC im Modul Systemdefinition > Skripteinbindungen an die Prozesse in Ihrer Organisation angepasst werden.

    Um die Commits mit Arbeitselementen zu verknüpfen, wird die native ID des Arbeitselements aus der Commit-Nachricht extrahiert. Im Basissystem von DevOps werden die folgenden Commit-Nachrichtenformate unterstützt:
    /**
         * Supported patterns
         * Colon pattern 
             * Sample supported formats: 
                 *   1. STRY1,STRY2: Additional bug fixes
                 *   2. STRY1 , STRY2 : Additional bug fixes
                 *   3. STRY1, STRY2 : Additional bug fixes
         * Hash pattern 
             * Sample supported formats: 
                 *   1. Fixes for #STRY1, #STRY2, #STRY3
                 *   2. Fixes @$#3 and #1 work item
                 *   3. Fixes for #STRY1 #STRY2 #STRY3
                 *   4. Fixes for AB#123
         * Jira pattern
             * Sample supported formats: 
                 *   1. JRA-123 fixed
                 *   2. JRA-123 JRA-234 JRA-345 resolved
         */
    Wenn Sie Unterstützung für zusätzliche Nachrichtenformate hinzufügen möchten, um die Prozesse in Ihrer Organisation zu erfüllen, können Sie eine anwenderdefinierte Logik in der Skripteinbindung DevOpsCommitMessageParser hinzufügen, indem Sie zum Modul Systemdefinition > Skripteinbindungen navigieren. Die SkripteinbindungDevOpsCommitMessageParser ist eine Erweiterung von DevOpsCommitMessageParserSNC. Für DevOpsCommitMessageParserSNC sind drei reguläre Ausdrücke definiert, um native Arbeitselement-IDs für unterstützte Nachrichtenformate im Basissystem zu identifizieren. Im folgenden Beispiel erfahren Sie, wie Sie ein neues anwenderdefiniertes Nachrichtenformat einbinden, bei dem native Arbeitselement-IDs in eckigen Klammern angegeben sind.
    var DevopsCommitMessageParser = Class.create();
    DevopsCommitMessageParser.prototype = Object.extendsObject(DevopsCommitMessageParserSNC, {
        initialize: function() {
            DevopsCommitMessageParserSNC.prototype.initialize.call(this);
            this._customPattern = /\[(.*?)\]/g; // The regex pattern to match the words written inside square brackets.
            // Example commits message to match this custom pattern is : "[STRY1], [STRY2] Additional bug fixes"
        },
        getWorkitemsFromCommitMessage: function(message, branchName) {
            var workitems = [];
            // We first call the getWorkitemsFromCommitMessage method from the parent class to get the matching workitems ids for OOB formats
            var defaultWI = DevopsCommitMessageParserSNC.prototype.getWorkitemsFromCommitMessage.call(this, message, branchName);
            if (!gs.nil(defaultWI) && defaultWI.length > 0) {
                workitems = workitems.concat(defaultWI);
            }
            // Now call your custom method that returns an array of workitem native IDs matching custom pattern
            var customWI = this.getWIFromCustomPattern(message);
            if (!gs.nil(customWI) && customWI.length > 0) {
                workitems = workitems.concat(customWI);
            }
            // getUniqueWorkItems method from parent class removes duplicates from the workitems array
            workitems = this.getUniqueWorkItems(workitems);
            // return the final list
            return workitems;
        },
        getWIFromCustomPattern: function(message) {
            var wi = [];
            var l;
            var match;
            var matches = message.match(this._customPattern);
            if (gs.nil(matches))
                return wi;
            for (var i = 0; i < matches.length; i++) {
                l = matches[i].length;
                match = matches[i].substring(1, l - 1); // trim the brackets
                wi.push(match);
            }
            return wi;
        },
        type: 'DevopsCommitMessageParser'
    });

    Das Verknüpfen von Arbeitselementen mit einem Commit über die Azure DevOps-Anwenderoberfläche wird auch in DevOps unterstützt. Verknüpfen Sie das Arbeitselement mit einem Commit in Azure DevOps

    Sie können die Liste der zugeordneten Arbeitselemente im DevOps-Commit-Datensatz und in der Pipeline-UI anzeigen.