GitHubBeitragen in GitHub: Online bearbeiten

Beispiel: StatusÀnderung in Targetprocess, wenn Merge/Pull-Anfrage aktualisiert wird

📘 Wie man Raw JSON aus Beispielen anwendet

Diese Regel reagiert auf eine Reihe von Aktualisierungen von Merge/Pull-Requests und löst eine ZustandsÀnderung eines Targetprocess-Elements aus, die sich auf einen aktualisierten Zweig oder Merge/Pull-Request bezieht

  • WIP wird aus dem Namen der ZusammenfĂŒhrungsanforderung entfernt;
  • ZusammenfĂŒhrungs-/Ziehungsantrag erhĂ€lt alle erforderlichen Genehmigungen;
  • Merge/Pull Request wird zusammengefĂŒhrt;
  • Der Zweig wird ohne CodeĂ€nderungen geschlossen;

neue Regel erstellen

const utils = require('utils')
const devOps = require('devOps')

var stateTo = ''
var cmds = []

if (args.ResourceType != 'MergeRequest') return []


var isWIPRemoved = devOps.mergeRequestDraftRemoved(args)
var ifApproved = devOps.mergeRequestApproved(args)
var ifMerged = devOps.mergeRequestMerged(args)
var ifClosed = devOps.mergeRequestClosed(args)

console.log(`isWIPRemoved: ${isWIPRemoved}`)
console.log(`ifApproved: ${ifApproved}`)
console.log(`ifMerged: ${ifMerged}`)
console.log(`ifClosed: ${ifClosed}`)

if (isWIPRemoved) {
  stateTo = 'Code Review'
}

if (ifApproved) {
  stateTo = 'To Test'
}

if (ifMerged) {
  stateTo = 'Integrated'
}

if (ifClosed) {
  stateTo = 'Open'
}

// Change state if needed
if (stateTo != '') {
  var entityIds = args.TargetprocessEntityIds;
  const entities = await api.queryAsync("Assignable", {
    select: "{id,entityType: entitytype.name}",
    where: `id in ${JSON.stringify(entityIds)}`
  });
  entities.map(value => cmds.push(
    utils.moveToStateByName(value.entityType, value.id, stateTo)
  ));
}

console.log(`State To: ${stateTo}`)


return cmds;

Die ZustÀnde der EntitÀten in Targetprocess werden durch Namen angegeben. Setzen Sie einfach die richtigen Namen in die DANN-Klausel der Regel anstelle der fettgedruckten Namen:

🚧 Setzen Sie die Namen Ihrer BundeslĂ€nder in DANN der Regel fĂŒr jedes Ereignis ein:

if ( isWIPRemoved ) {
stateTo = 'Code Review '
}

if ( ifApproved ) {
stateTo = 'To Test '
}

if ( ifMerged ) {
stateTo = 'Integrated '
}

if ( ifClosed ) {
stateTo = 'Open '
}

{
    "type": "source:devOps:EntityChanged",
    "entityTypes": [
      "MergeRequest"
    ],
    "modifications": {
      "created": false,
      "deleted": false,
      "updated": [
        "repository",
        "id",
        "sourceId",
        "title",
        "isDraft",
        "url",
        "state",
        "mergeStatus",
        "reviewStatus",
        "branch"
      ]
    }
  }