commit
4eea07ed96
|
@ -135,11 +135,11 @@ Gitee Jenkins Plugin 是码云基于 [GitLab Plugin](https://github.com/jenkinsc
|
|||
- `[ci-build] trigger build` :commit message 或者 PR 说明包含 `[ci-build]` 时,触发构建。
|
||||
3. `Ignore last commit has build` 该选项可以跳过已经构建过的 Commit 版本。
|
||||
4. `Cancel incomplete build on same Pull Requests` 该选项在 PR 触发构建时,会判断是否存在相同 PR 且未完成的构建,有则取消未完成构建,再进行当前构建。
|
||||
5. `Allowed branches` 可以配置允许构建的分支,目前支持分支名和正则表达式的方式进行过滤。
|
||||
6. `Secret Token for Gitee WebHook` 该选项可以配置 WebHook 的密码,该密码需要与码云 WebHook配置的密码一致方可触发构建。
|
||||
7. 注意:若 PR 状态为不可自动合并,则不触发构建。
|
||||
![触发器配置](https://images.gitee.com/uploads/images/2020/1231/093554_e4c48be9_2102225.png "屏幕截图.png")
|
||||
|
||||
5. `Ignore Pull Request conflicts` 该选项在 PR 触发构建时,会根据 PR 冲突情况选择是否进行构建。
|
||||
6. `Allowed branches` 可以配置允许构建的分支,目前支持分支名和正则表达式的方式进行过滤。
|
||||
7. `Secret Token for Gitee WebHook` 该选项可以配置 WebHook 的密码,该密码需要与码云 WebHook配置的密码一致方可触发构建。
|
||||
8. 注意:若 PR 状态为不可自动合并,则不触发构建。
|
||||
![触发器配置](https://images.gitee.com/uploads/images/2021/0107/171932_e25c8359_2102225.png "屏幕截图.png")
|
||||
### 构建后步骤配置
|
||||
|
||||
前往任务配置的构建后配置: Configure -> Post-build Actions 选项卡
|
||||
|
|
|
@ -95,6 +95,7 @@ public class GiteePushTrigger extends Trigger<Job<?, ?>> {
|
|||
private String pendingBuildName;
|
||||
private boolean cancelPendingBuildsOnUpdate;
|
||||
private boolean cancelIncompleteBuildOnSamePullRequest;
|
||||
private boolean ignorePullRequestConflicts;
|
||||
|
||||
private transient BranchFilter branchFilter;
|
||||
private transient PushHookTriggerHandler pushHookTriggerHandler;
|
||||
|
@ -123,7 +124,8 @@ public class GiteePushTrigger extends Trigger<Job<?, ?>> {
|
|||
String includeBranchesSpec, String excludeBranchesSpec, String targetBranchRegex,
|
||||
PullRequestLabelFilterConfig pullRequestLabelFilterConfig, String secretToken, boolean triggerOnPipelineEvent,
|
||||
boolean triggerOnApprovedPullRequest, String pendingBuildName, boolean cancelPendingBuildsOnUpdate,
|
||||
boolean cancelIncompleteBuildOnSamePullRequest) {
|
||||
boolean cancelIncompleteBuildOnSamePullRequest,
|
||||
boolean ignorePullRequestConflicts) {
|
||||
this.triggerOnPush = triggerOnPush;
|
||||
this.triggerOnCommitComment = triggerOnCommitComment;
|
||||
this.triggerOnOpenPullRequest = triggerOnOpenPullRequest;
|
||||
|
@ -151,6 +153,7 @@ public class GiteePushTrigger extends Trigger<Job<?, ?>> {
|
|||
this.pendingBuildName = pendingBuildName;
|
||||
this.cancelPendingBuildsOnUpdate = cancelPendingBuildsOnUpdate;
|
||||
this.cancelIncompleteBuildOnSamePullRequest = cancelIncompleteBuildOnSamePullRequest;
|
||||
this.ignorePullRequestConflicts = ignorePullRequestConflicts;
|
||||
|
||||
initializeTriggerHandler();
|
||||
initializeBranchFilter();
|
||||
|
@ -334,6 +337,10 @@ public class GiteePushTrigger extends Trigger<Job<?, ?>> {
|
|||
return cancelIncompleteBuildOnSamePullRequest;
|
||||
}
|
||||
|
||||
public boolean isIgnorePullRequestConflicts() {
|
||||
return ignorePullRequestConflicts;
|
||||
}
|
||||
|
||||
@DataBoundSetter
|
||||
public void setTriggerOnPush(boolean triggerOnPush) {
|
||||
this.triggerOnPush = triggerOnPush;
|
||||
|
@ -491,6 +498,11 @@ public class GiteePushTrigger extends Trigger<Job<?, ?>> {
|
|||
this.cancelIncompleteBuildOnSamePullRequest = cancelIncompleteBuildOnSamePullRequest;
|
||||
}
|
||||
|
||||
@DataBoundSetter
|
||||
public void setIgnorePullRequestConflicts(boolean ignorePullRequestConflicts) {
|
||||
this.ignorePullRequestConflicts = ignorePullRequestConflicts;
|
||||
}
|
||||
|
||||
// executes when the Trigger receives a push request
|
||||
public void onPost(final PushHook hook) {
|
||||
if (branchFilter == null) {
|
||||
|
@ -545,9 +557,10 @@ public class GiteePushTrigger extends Trigger<Job<?, ?>> {
|
|||
pullRequestHookTriggerHandler = newPullRequestHookTriggerHandler(triggerOnOpenPullRequest,
|
||||
triggerOnUpdatePullRequest, triggerOnAcceptedPullRequest, triggerOnClosedPullRequest,
|
||||
skipWorkInProgressPullRequest, triggerOnApprovedPullRequest, triggerOnTestedPullRequest, cancelPendingBuildsOnUpdate, ciSkipFroTestNotRequired,
|
||||
cancelIncompleteBuildOnSamePullRequest
|
||||
cancelIncompleteBuildOnSamePullRequest,
|
||||
ignorePullRequestConflicts
|
||||
);
|
||||
noteHookTriggerHandler = newNoteHookTriggerHandler(triggerOnCommitComment, triggerOnNoteRequest, noteRegex, ciSkipFroTestNotRequired, cancelIncompleteBuildOnSamePullRequest);
|
||||
noteHookTriggerHandler = newNoteHookTriggerHandler(triggerOnCommitComment, triggerOnNoteRequest, noteRegex, ciSkipFroTestNotRequired, cancelIncompleteBuildOnSamePullRequest, ignorePullRequestConflicts);
|
||||
pushHookTriggerHandler = newPushHookTriggerHandler(triggerOnPush, skipWorkInProgressPullRequest);
|
||||
pipelineTriggerHandler = newPipelineHookTriggerHandler(triggerOnPipelineEvent);
|
||||
}
|
||||
|
|
|
@ -7,9 +7,9 @@ public final class NoteHookTriggerHandlerFactory {
|
|||
|
||||
private NoteHookTriggerHandlerFactory() {}
|
||||
|
||||
public static NoteHookTriggerHandler newNoteHookTriggerHandler(boolean triggerOnCommitComment, boolean triggerOnNoteRequest, String noteRegex, boolean ciSkipFroTestNotRequired, boolean cancelIncompleteBuildOnSamePullRequest) {
|
||||
public static NoteHookTriggerHandler newNoteHookTriggerHandler(boolean triggerOnCommitComment, boolean triggerOnNoteRequest, String noteRegex, boolean ciSkipFroTestNotRequired, boolean cancelIncompleteBuildOnSamePullRequest, boolean ignorePullRequestConflicts) {
|
||||
if (triggerOnCommitComment || triggerOnNoteRequest) {
|
||||
return new NoteHookTriggerHandlerImpl(triggerOnCommitComment, triggerOnNoteRequest, noteRegex, ciSkipFroTestNotRequired, cancelIncompleteBuildOnSamePullRequest);
|
||||
return new NoteHookTriggerHandlerImpl(triggerOnCommitComment, triggerOnNoteRequest, noteRegex, ciSkipFroTestNotRequired, cancelIncompleteBuildOnSamePullRequest, ignorePullRequestConflicts);
|
||||
} else {
|
||||
return new NopNoteHookTriggerHandler();
|
||||
}
|
||||
|
|
|
@ -40,13 +40,15 @@ class NoteHookTriggerHandlerImpl extends AbstractWebHookTriggerHandler<NoteHook>
|
|||
private final String noteRegex;
|
||||
private final boolean ciSkipFroTestNotRequired;
|
||||
private final boolean cancelIncompleteBuildOnSamePullRequest;
|
||||
private boolean ignorePullRequestConflicts;
|
||||
|
||||
NoteHookTriggerHandlerImpl(boolean triggerOnCommitComment, boolean triggerOnNoteRequest, String noteRegex, boolean ciSkipFroTestNotRequired, boolean cancelIncompleteBuildOnSamePullRequest) {
|
||||
NoteHookTriggerHandlerImpl(boolean triggerOnCommitComment, boolean triggerOnNoteRequest, String noteRegex, boolean ciSkipFroTestNotRequired, boolean cancelIncompleteBuildOnSamePullRequest, boolean ignorePullRequestConflicts) {
|
||||
this.triggerOnCommitComment = triggerOnCommitComment;
|
||||
this.triggerOnNoteRequest = triggerOnNoteRequest;
|
||||
this.noteRegex = noteRegex;
|
||||
this.ciSkipFroTestNotRequired = ciSkipFroTestNotRequired;
|
||||
this.cancelIncompleteBuildOnSamePullRequest = cancelIncompleteBuildOnSamePullRequest;
|
||||
this.ignorePullRequestConflicts = ignorePullRequestConflicts;
|
||||
}
|
||||
|
||||
@Override
|
||||
|
@ -54,7 +56,7 @@ class NoteHookTriggerHandlerImpl extends AbstractWebHookTriggerHandler<NoteHook>
|
|||
if (isValidTrigger(hook)) {
|
||||
// 若pr不可自动合并则评论至pr
|
||||
PullRequestObjectAttributes objectAttributes = hook.getPullRequest();
|
||||
if (objectAttributes != null && !objectAttributes.isMergeable()) {
|
||||
if (!ignorePullRequestConflicts && objectAttributes != null && !objectAttributes.isMergeable()) {
|
||||
LOGGER.log(Level.INFO, "This pull request can not be merge");
|
||||
// fixme 无法获取 publisher
|
||||
// java.lang.ClassCastException: org.jenkinsci.plugins.workflow.job.WorkflowJob cannot be cast to hudson.model.AbstractProject
|
||||
|
|
|
@ -23,7 +23,8 @@ public final class PullRequestHookTriggerHandlerFactory {
|
|||
boolean triggerOnTestedPullRequest,
|
||||
boolean cancelPendingBuildsOnUpdate,
|
||||
boolean ciSkipFroTestNotRequired,
|
||||
boolean cancelIncompleteBuildOnSamePullRequest) {
|
||||
boolean cancelIncompleteBuildOnSamePullRequest,
|
||||
boolean ignorePullRequestConflicts) {
|
||||
if (triggerOnOpenPullRequest
|
||||
|| !("0".equals(triggerOnUpdatePullRequest) || "false".equals(triggerOnUpdatePullRequest))
|
||||
|| triggerOnAcceptedPullRequest
|
||||
|
@ -48,7 +49,8 @@ public final class PullRequestHookTriggerHandlerFactory {
|
|||
skipWorkInProgressPullRequest,
|
||||
cancelPendingBuildsOnUpdate,
|
||||
ciSkipFroTestNotRequired,
|
||||
cancelIncompleteBuildOnSamePullRequest);
|
||||
cancelIncompleteBuildOnSamePullRequest,
|
||||
ignorePullRequestConflicts);
|
||||
} else {
|
||||
return new NopPullRequestHookTriggerHandler();
|
||||
}
|
||||
|
|
|
@ -48,12 +48,13 @@ class PullRequestHookTriggerHandlerImpl extends AbstractWebHookTriggerHandler<Pu
|
|||
private final Collection<ActionDesc> allowedActionDesces;
|
||||
private final boolean cancelPendingBuildsOnUpdate;
|
||||
private final boolean cancelIncompleteBuildOnSamePullRequest;
|
||||
private boolean ignorePullRequestConflicts;
|
||||
|
||||
PullRequestHookTriggerHandlerImpl(Collection<State> allowedStates, boolean skipWorkInProgressPullRequest, boolean cancelPendingBuildsOnUpdate, boolean ciSkipFroTestNotRequired, boolean cancelIncompleteBuildOnSamePullRequest) {
|
||||
this(allowedStates, EnumSet.allOf(Action.class), EnumSet.allOf(ActionDesc.class), skipWorkInProgressPullRequest, cancelPendingBuildsOnUpdate, ciSkipFroTestNotRequired, cancelIncompleteBuildOnSamePullRequest);
|
||||
PullRequestHookTriggerHandlerImpl(Collection<State> allowedStates, boolean skipWorkInProgressPullRequest, boolean cancelPendingBuildsOnUpdate, boolean ciSkipFroTestNotRequired, boolean cancelIncompleteBuildOnSamePullRequest, boolean ignorePullRequestConflicts) {
|
||||
this(allowedStates, EnumSet.allOf(Action.class), EnumSet.allOf(ActionDesc.class), skipWorkInProgressPullRequest, cancelPendingBuildsOnUpdate, ciSkipFroTestNotRequired, cancelIncompleteBuildOnSamePullRequest, ignorePullRequestConflicts);
|
||||
}
|
||||
|
||||
PullRequestHookTriggerHandlerImpl(Collection<State> allowedStates, Collection<Action> allowedActions, Collection<ActionDesc> allowedActionDesces, boolean skipWorkInProgressPullRequest, boolean cancelPendingBuildsOnUpdate, boolean ciSkipFroTestNotRequired, boolean cancelIncompleteBuildOnSamePullRequest) {
|
||||
PullRequestHookTriggerHandlerImpl(Collection<State> allowedStates, Collection<Action> allowedActions, Collection<ActionDesc> allowedActionDesces, boolean skipWorkInProgressPullRequest, boolean cancelPendingBuildsOnUpdate, boolean ciSkipFroTestNotRequired, boolean cancelIncompleteBuildOnSamePullRequest, boolean ignorePullRequestConflicts) {
|
||||
this.allowedStates = allowedStates;
|
||||
this.allowedActions = allowedActions;
|
||||
this.allowedActionDesces = allowedActionDesces;
|
||||
|
@ -61,6 +62,7 @@ class PullRequestHookTriggerHandlerImpl extends AbstractWebHookTriggerHandler<Pu
|
|||
this.cancelPendingBuildsOnUpdate = cancelPendingBuildsOnUpdate;
|
||||
this.ciSkipFroTestNotRequired = ciSkipFroTestNotRequired;
|
||||
this.cancelIncompleteBuildOnSamePullRequest = cancelIncompleteBuildOnSamePullRequest;
|
||||
this.ignorePullRequestConflicts = ignorePullRequestConflicts;
|
||||
}
|
||||
|
||||
@Override
|
||||
|
@ -79,7 +81,7 @@ class PullRequestHookTriggerHandlerImpl extends AbstractWebHookTriggerHandler<Pu
|
|||
}
|
||||
|
||||
// 若pr不可自动合并则评论至pr
|
||||
if (!objectAttributes.isMergeable()) {
|
||||
if (!ignorePullRequestConflicts && !objectAttributes.isMergeable()) {
|
||||
LOGGER.log(Level.INFO, "This pull request can not be merge");
|
||||
GiteeMessagePublisher publisher = GiteeMessagePublisher.getFromJob(job);
|
||||
GiteeClient client = getClient(job);
|
||||
|
|
|
@ -80,6 +80,10 @@
|
|||
<f:checkbox default="false"/>
|
||||
</f:entry>
|
||||
|
||||
<f:entry title="${%Ignore.Pull.Request.Conflicts}" field="ignorePullRequestConflicts" help="/plugin/gitee/help/help-ignore-pull-request-conflicts.html">
|
||||
<f:checkbox default="false"/>
|
||||
</f:entry>
|
||||
|
||||
<f:entry title="${%Allowed.branches}">
|
||||
<table>
|
||||
<!--<f:section title="">-->
|
||||
|
|
|
@ -39,6 +39,7 @@ Exclude=Exclude
|
|||
Include=Include
|
||||
Ignore.Last.Commit.Has.Build=Ignore last commit has been build
|
||||
Cancel.Same.Pull.Request.Incomplete.Build=Cancel incomplete build on same Pull Requests
|
||||
Ignore.Pull.Request.Conflicts=Ignore Pull Request conflicts
|
||||
Comments=Comment Pull Requests
|
||||
Comment.Regex=Comment (regex) for triggering a build
|
||||
Retry.Text=Jenkins please retry a build
|
||||
|
|
|
@ -39,6 +39,7 @@ Exclude=\u6392\u9664
|
|||
Include=\u5305\u62EC
|
||||
Ignore.Last.Commit.Has.Build=\u8FC7\u6EE4\u5DF2\u7ECF\u6784\u5EFA\u7684 Commit \u7248\u672C
|
||||
Cancel.Same.Pull.Request.Incomplete.Build=\u53D6\u6D88\u76F8\u540C Pull Requests \u672A\u5B8C\u6210\u6784\u5EFA
|
||||
Ignore.Pull.Request.Conflicts=\u5FFD\u7565 Pull Request \u51B2\u7A81
|
||||
Comments=\u8BC4\u8BBA Pull Requests
|
||||
Comment.Regex=\u8BC4\u8BBA\u5185\u5BB9\u7684\u6B63\u5219\u8868\u8FBE\u5F0F
|
||||
Retry.Text=Jenkins please retry a build
|
||||
|
|
|
@ -0,0 +1,5 @@
|
|||
<div>
|
||||
If this option is selected,
|
||||
the build will be triggered regardless of whether the Pull Request conflicts or not,
|
||||
otherwise the Pull Request conflict will not trigger the build.
|
||||
</div>
|
|
@ -0,0 +1,3 @@
|
|||
<div>
|
||||
若勾选此选项,则无论 Pull Request 是否冲突都将触发构建,否则 Pull Request 冲突即不触发构建
|
||||
</div>
|
Loading…
Reference in New Issue