支持pr审查通过,测试通过触发构建

This commit is contained in:
yashin 2018-07-05 11:24:18 +08:00
parent c2a0d84136
commit 190c634f6c
6 changed files with 110 additions and 59 deletions

View File

@ -4,5 +4,5 @@ package com.gitee.jenkins.gitee.hook.model;
* @author Robin Müller
*/
public enum Action {
open, update, approved, close, merge
open, update, approved, close, merge, tested
}

View File

@ -76,6 +76,7 @@ public class GiteePushTrigger extends Trigger<Job<?, ?>> {
private boolean triggerOnUpdateMergeRequest = false;
private boolean triggerOnClosedMergeRequest = false;
private boolean triggerOnApprovedMergeRequest = false;
private boolean triggerOnTestedMergeRequest = false;
private boolean triggerOnNoteRequest = true;
private String noteRegex = "";
private boolean ciSkip = true;
@ -201,6 +202,10 @@ public class GiteePushTrigger extends Trigger<Job<?, ?>> {
return triggerOnOpenMergeRequest;
}
public boolean getTriggerOnTestedMergeRequest() {
return triggerOnTestedMergeRequest;
}
public boolean getTriggerOnUpdateMergeRequest() {
return triggerOnUpdateMergeRequest;
}
@ -281,6 +286,11 @@ public class GiteePushTrigger extends Trigger<Job<?, ?>> {
this.triggerOnApprovedMergeRequest = triggerOnApprovedMergeRequest;
}
@DataBoundSetter
public void setTriggerOnTestedMergeRequest(boolean triggerOnTestedMergeRequest) {
this.triggerOnTestedMergeRequest = triggerOnTestedMergeRequest;
}
@DataBoundSetter
public void setTriggerOnOpenMergeRequest(boolean triggerOnOpenMergeRequest) {
this.triggerOnOpenMergeRequest = triggerOnOpenMergeRequest;
@ -448,7 +458,7 @@ public class GiteePushTrigger extends Trigger<Job<?, ?>> {
private void initializeTriggerHandler() {
mergeRequestHookTriggerHandler = newMergeRequestHookTriggerHandler(triggerOnOpenMergeRequest,
triggerOnUpdateMergeRequest, triggerOnAcceptedMergeRequest, triggerOnClosedMergeRequest,
skipWorkInProgressMergeRequest, triggerOnApprovedMergeRequest, cancelPendingBuildsOnUpdate);
skipWorkInProgressMergeRequest, triggerOnApprovedMergeRequest, triggerOnTestedMergeRequest, cancelPendingBuildsOnUpdate);
noteHookTriggerHandler = newNoteHookTriggerHandler(triggerOnNoteRequest, noteRegex);
pushHookTriggerHandler = newPushHookTriggerHandler(triggerOnPush, skipWorkInProgressMergeRequest);
pipelineTriggerHandler = newPipelineHookTriggerHandler(triggerOnPipelineEvent);

View File

@ -21,20 +21,41 @@ public final class MergeRequestHookTriggerHandlerFactory {
boolean triggerOnClosedMergeRequest,
boolean skipWorkInProgressMergeRequest,
boolean triggerOnApprovedMergeRequest,
boolean triggerOnTestedMergeRequest,
boolean cancelPendingBuildsOnUpdate) {
if (triggerOnOpenMergeRequest || triggerOnUpdateMergeRequest || triggerOnAcceptedMergeRequest || triggerOnClosedMergeRequest || triggerOnApprovedMergeRequest) {
return new MergeRequestHookTriggerHandlerImpl(retrieveAllowedStates(triggerOnOpenMergeRequest, triggerOnUpdateMergeRequest, triggerOnAcceptedMergeRequest, triggerOnClosedMergeRequest),
retrieveAllowedActions(triggerOnOpenMergeRequest, triggerOnUpdateMergeRequest, triggerOnAcceptedMergeRequest, triggerOnClosedMergeRequest),
skipWorkInProgressMergeRequest, cancelPendingBuildsOnUpdate);
if (triggerOnOpenMergeRequest
|| triggerOnUpdateMergeRequest
|| triggerOnAcceptedMergeRequest
|| triggerOnClosedMergeRequest
|| triggerOnApprovedMergeRequest
|| triggerOnTestedMergeRequest) {
return new MergeRequestHookTriggerHandlerImpl(
retrieveAllowedStates(triggerOnOpenMergeRequest,
triggerOnUpdateMergeRequest,
triggerOnAcceptedMergeRequest,
triggerOnClosedMergeRequest,
triggerOnApprovedMergeRequest,
triggerOnTestedMergeRequest),
retrieveAllowedActions(triggerOnOpenMergeRequest,
triggerOnUpdateMergeRequest,
triggerOnAcceptedMergeRequest,
triggerOnClosedMergeRequest,
triggerOnApprovedMergeRequest,
triggerOnTestedMergeRequest),
skipWorkInProgressMergeRequest,
cancelPendingBuildsOnUpdate);
} else {
return new NopMergeRequestHookTriggerHandler();
}
}
private static List<Action> retrieveAllowedActions(boolean triggerOnOpenMergeRequest,
boolean triggerOnUpdateMergeRequest,
boolean triggerOnAcceptedMergeRequest,
boolean triggerOnClosedMergeRequest) {
boolean triggerOnUpdateMergeRequest,
boolean triggerOnAcceptedMergeRequest,
boolean triggerOnClosedMergeRequest,
boolean triggerOnApprovedMergeRequest,
boolean triggerOnTestedMergeRequest) {
List<Action> allowedActions =new ArrayList<>();
if (triggerOnOpenMergeRequest) {
@ -53,15 +74,29 @@ public final class MergeRequestHookTriggerHandlerFactory {
allowedActions.add(Action.close);
}
if (triggerOnApprovedMergeRequest) {
allowedActions.add(Action.approved);
}
if (triggerOnTestedMergeRequest) {
allowedActions.add(Action.tested);
}
return allowedActions;
}
private static List<State> retrieveAllowedStates(boolean triggerOnOpenMergeRequest,
boolean triggerOnUpdateMergeRequest,
boolean triggerOnAcceptedMergeRequest,
boolean triggerOnClosedMergeRequest) {
boolean triggerOnUpdateMergeRequest,
boolean triggerOnAcceptedMergeRequest,
boolean triggerOnClosedMergeRequest,
boolean triggerOnApprovedMergeRequest,
boolean triggerOnTestedMergeRequest) {
List<State> result = new ArrayList<>();
if (triggerOnOpenMergeRequest || triggerOnUpdateMergeRequest) {
if (triggerOnOpenMergeRequest
|| triggerOnUpdateMergeRequest
|| triggerOnApprovedMergeRequest
|| triggerOnTestedMergeRequest) {
result.add(State.opened);
result.add(State.open);
result.add(State.reopened);

View File

@ -18,50 +18,54 @@
<f:entry title="${%Closed.Pull.Request}" field="triggerOnClosedMergeRequest">
<f:checkbox default="false"/>
</f:entry>
<f:entry title="${%Approved.Pull.Request}" field="triggerOnApprovedMergeRequest">
<f:checkbox default="false"/>
</f:entry>
<f:entry title="${%Tested.Pull.Request}" field="triggerOnTestedMergeRequest">
<f:checkbox default="false"/>
</f:entry>
</table>
</f:entry>
<f:advanced>
<f:entry title="${%Enable.CI.Skip}" field="ciSkip">
<f:checkbox default="true"/>
</f:entry>
<f:entry title="${%Ignore.WIP.Merge.Requests}" field="skipWorkInProgressMergeRequest">
<f:checkbox default="true"/>
</f:entry>
<f:entry title="${%Set.Build.Desctiption}" field="setBuildDescription">
<f:checkbox default="true"/>
</f:entry>
<f:entry title="${%Allowed.branches}">
<table>
<!--<f:section title="">-->
<f:radioBlock name="branchFilterType" value="All" title="${%Allow.all.branches}"
checked="${instance.branchFilterType == null || instance.branchFilterType == 'All'}"
inline="true" help="/plugin/gitee-plugin/help/help-noBranchFiltering.html"/>
<f:radioBlock name="branchFilterType" value="NameBasedFilter" title="${%Filter.branches.by.name}"
checked="${instance.branchFilterType == 'NameBasedFilter'}" inline="true"
help="/plugin/gitee-plugin/help/help-allowedBranches.html">
<f:entry title="${%Include}">
<f:textbox name="includeBranchesSpec" field="includeBranchesSpec" autoCompleteDelimChar=","/>
</f:entry>
<f:entry title="${%Exclude}">
<f:textbox name="excludeBranchesSpec" field="excludeBranchesSpec" autoCompleteDelimChar=","/>
</f:entry>
</f:radioBlock>
<f:entry title="${%Enable.CI.Skip}" field="ciSkip">
<f:checkbox default="true"/>
</f:entry>
<f:entry title="${%Ignore.WIP.Merge.Requests}" field="skipWorkInProgressMergeRequest">
<f:checkbox default="true"/>
</f:entry>
<f:entry title="${%Set.Build.Desctiption}" field="setBuildDescription">
<f:checkbox default="true"/>
</f:entry>
<f:entry title="${%Allowed.branches}">
<table>
<!--<f:section title="">-->
<f:radioBlock name="branchFilterType" value="All" title="${%Allow.all.branches}"
checked="${instance.branchFilterType == null || instance.branchFilterType == 'All'}"
inline="true" help="/plugin/gitee-plugin/help/help-noBranchFiltering.html"/>
<f:radioBlock name="branchFilterType" value="NameBasedFilter" title="${%Filter.branches.by.name}"
checked="${instance.branchFilterType == 'NameBasedFilter'}" inline="true"
help="/plugin/gitee-plugin/help/help-allowedBranches.html">
<f:entry title="${%Include}">
<f:textbox name="includeBranchesSpec" field="includeBranchesSpec" autoCompleteDelimChar=","/>
</f:entry>
<f:entry title="${%Exclude}">
<f:textbox name="excludeBranchesSpec" field="excludeBranchesSpec" autoCompleteDelimChar=","/>
</f:entry>
</f:radioBlock>
<f:radioBlock name="branchFilterType" value="RegexBasedFilter" title="${%Filter.branches.by.regex}"
checked="${instance.branchFilterType == 'RegexBasedFilter'}" inline="true"
help="/plugin/gitee-plugin/help/help-filterBranchesByRegex.html">
<f:entry title="${%Target.Branch.Regex}">
<f:textbox name="targetBranchRegex" field="targetBranchRegex"/>
</f:entry>
</f:radioBlock>
</table>
</f:entry>
<f:entry title="${%Secret.Token}" help="/plugin/gitee-plugin/help/help-secretToken.html">
<table>
<f:readOnlyTextbox field="secretToken" id="secretToken"/>
<f:validateButton title="${%Generate}" method="generateSecretToken"/>
<f:validateButton title="${%Clear}" method="clearSecretToken"/>
</table>
</f:entry>
</f:advanced>
<f:radioBlock name="branchFilterType" value="RegexBasedFilter" title="${%Filter.branches.by.regex}"
checked="${instance.branchFilterType == 'RegexBasedFilter'}" inline="true"
help="/plugin/gitee-plugin/help/help-filterBranchesByRegex.html">
<f:entry title="${%Target.Branch.Regex}">
<f:textbox name="targetBranchRegex" field="targetBranchRegex"/>
</f:entry>
</f:radioBlock>
</table>
</f:entry>
<f:entry title="${%Secret.Token}" help="/plugin/gitee-plugin/help/help-secretToken.html">
<table>
<f:readOnlyTextbox field="secretToken" id="secretToken"/>
<f:validateButton title="${%Generate}" method="generateSecretToken"/>
<f:validateButton title="${%Clear}" method="clearSecretToken"/>
</table>
</f:entry>
</j:jelly>

View File

@ -4,7 +4,8 @@ Clear=Clear
Push=Push Events
Enable.CI.Skip=Enable [ci-skip]
Enabled.Gitee.Triggers=Enabled Gitee triggers
Approved.Pull.Requests=Approved Pull Requests
Approved.Pull.Request=Approved Pull Requests
Tested.Pull.Request=Tested Pull Requests
Closed.Pull.Request=Closed Merge Request Events
Accepted.Pull.Request=Accepted Merge Request Events
Opened.Pull.Request=Opened Merge Request Events

View File

@ -2,9 +2,10 @@ Secret.Token=Gitee WebHook \u5BC6\u7801
Generate=\u751F\u6210
Clear=\u6E05\u9664
Push=\u63A8\u9001\u4EE3\u7801
Enable.CI.Skip=\u5F00\u542F [ci-skip]
Enable.CI.Skip=\u652F\u6301 [ci-skip] \u6307\u4EE4
Enabled.Gitee.Triggers=Gitee \u89E6\u53D1\u6784\u5EFA\u7B56\u7565
Approved.Pull.Requests=Pull Requests \u5BA1\u67E5\u901A\u8FC7
Approved.Pull.Request=Pull Requests \u5BA1\u67E5\u901A\u8FC7
Tested.Pull.Request=Pull Requests \u6D4B\u8BD5\u901A\u8FC7
Closed.Pull.Request=\u5173\u95ED Pull Request
Accepted.Pull.Request=\u63A5\u53D7 Pull Request
Opened.Pull.Request=\u65B0\u5EFA Pull Request