Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
7 changes: 7 additions & 0 deletions js/git-events/README.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,7 @@
/*
NB: README.md in workflow packages will be supported soon.

This workflow demonstrates VCS & PullRequests related events,
described in detail in this blog post:
https://www.jetbrains.com/youtrack/whatsnew/2020-3/
*/
35 changes: 35 additions & 0 deletions js/git-events/all-old-pr-actions.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,35 @@
// https://habr.com/ru/company/JetBrains/blog/512880/
var entities = require('@jetbrains/youtrack-scripting-api/entities');

exports.rule = entities.Issue.onChange({
title: 'Existing PR changes ticket state',
guard: function(ctx) {
return ctx.issue.pullRequests.isNotEmpty() && // ensure there is PRs
!ctx.issue.fields.isChanged(ctx.State) && // allow users to change State manually, otherwise this will be blocked
ctx.issue.pullRequests.last().previousState &&
ctx.issue.pullRequests.last().state.name !== ctx.issue.pullRequests.last().previousState.name;
},
action: function(ctx) {
if ( ctx.issue.pullRequests.last().state.name === "OPEN" ) {
ctx.issue.fields.State = ctx.State.Review;
} else if ( ctx.issue.pullRequests.last().state.name === "DECLINED" ) {
ctx.issue.fields.State = ctx.State.InProgress;
} else if ( ctx.issue.pullRequests.last().state.name === "MERGED" ) {
ctx.issue.fields.State = ctx.State.Resolved;
}
},
requirements: {
State: {
type: entities.State.fieldType,
InProgress: {
name: "In Progress"
},
Review: {
name: "MR for Review"
},
Resolved: {
name: "Resolved"
}
},
}
});
21 changes: 21 additions & 0 deletions js/git-events/git-push-ticket-in-progress.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,21 @@
var entities = require('@jetbrains/youtrack-scripting-api/entities');

exports.rule = entities.Issue.onChange({
title: 'in-progress on Git push',
guard: function(ctx) {
return ctx.issue.vcsChanges.added.isNotEmpty() && ctx.issue.fields.is(ctx.State, ctx.State.Open) && !ctx.issue.pullRequests.isNotEmpty();
},
action: function(ctx) {
ctx.issue.fields.State = ctx.State.InProgress;
},

requirements: {
State: {
type: entities.State.fieldType,
Open: {},
InProgress: {
name: 'In Progress'
}
}
}
});
22 changes: 22 additions & 0 deletions js/git-events/new-pr-ticket-ready-for-review.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,22 @@
var entities = require('@jetbrains/youtrack-scripting-api/entities');

exports.rule = entities.Issue.onChange({
title: 'Set_to_Ready_for_Review_when_pull_request_is_opened',
guard: function(ctx) {
return ctx.issue.pullRequests.isNotEmpty() &&
!ctx.issue.fields.isChanged(ctx.State) &&
!ctx.issue.pullRequests.last().previousState &&
ctx.issue.pullRequests.last().state.name === "OPEN";
},
action: function(ctx) {
ctx.issue.fields.State = ctx.State.Review;
},
requirements: {
State: {
type: entities.State.fieldType,
Review: {
name: "MR for Review"
}
},
}
});
12 changes: 12 additions & 0 deletions js/git-events/package.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,12 @@
{
"name": "git-events",
"title": "GIT Events",
"description": null,
"dependencies" : {
"@jetbrains/youtrack-scripting-api" : "^2020.3.6638"
},
"youtrack": {
"autoAttached": false,
"readOnly": false
}
}