Search in sources :

Example 6 with Action

use of hudson.model.Action in project blueocean-plugin by jenkinsci.

the class PipelineNodeGraphVisitor method parallelStart.

@Override
public void parallelStart(@Nonnull FlowNode parallelStartNode, @Nonnull FlowNode branchNode, @Nonnull ForkScanner scanner) {
    if (isNodeVisitorDumpEnabled) {
        dump(String.format("parallelStart=> id: %s, name: %s, function: %s", parallelStartNode.getId(), parallelStartNode.getDisplayName(), parallelStartNode.getDisplayFunctionName()));
        dump(String.format("\tbranch=> id: %s, name: %s, function: %s", branchNode.getId(), branchNode.getDisplayName(), branchNode.getDisplayFunctionName()));
    }
    if (nestedbranches.size() != parallelBranchEndNodes.size()) {
        logger.error(String.format("nestedBranches size: %s not equal to parallelBranchEndNodes: %s", nestedbranches.size(), parallelBranchEndNodes.size()));
        return;
    }
    while (!nestedbranches.empty() && !parallelBranchEndNodes.empty()) {
        FlowNode branchStartNode = nestedbranches.pop();
        FlowNode endNode = parallelBranchEndNodes.pop();
        TimingInfo times;
        NodeRunStatus status;
        if (endNode != null) {
            // Branch has completed
            times = StatusAndTiming.computeChunkTiming(run, chunk.getPauseTimeMillis(), branchStartNode, endNode, chunk.getNodeAfter());
            if (endNode instanceof StepAtomNode) {
                if (PipelineNodeUtil.isPausedForInputStep((StepAtomNode) endNode, inputAction)) {
                    status = new NodeRunStatus(BlueRun.BlueRunResult.UNKNOWN, BlueRun.BlueRunState.PAUSED);
                } else {
                    status = new NodeRunStatus(endNode);
                }
            } else {
                GenericStatus genericStatus = StatusAndTiming.computeChunkStatus2(run, parallelStartNode, branchStartNode, endNode, parallelEnd);
                status = new NodeRunStatus(genericStatus);
            }
        } else {
            // Branch still running / paused
            long startTime = System.currentTimeMillis();
            if (branchStartNode.getAction(TimingAction.class) != null) {
                startTime = TimingAction.getStartTime(branchStartNode);
            }
            times = new TimingInfo(System.currentTimeMillis() - startTime, chunk.getPauseTimeMillis(), startTime);
            status = new NodeRunStatus(BlueRun.BlueRunResult.UNKNOWN, BlueRun.BlueRunState.RUNNING);
        }
        // keep FB happy
        assert times != null;
        FlowNodeWrapper branch = new FlowNodeWrapper(branchStartNode, status, times, run);
        // Collect any pending actions (required for most-recently-handled branch)
        ArrayList<Action> branchActions = new ArrayList<>(drainPipelineActions());
        // Add actions for this branch, which are collected when changing branches
        if (pendingActionsForBranches.containsKey(branchStartNode)) {
            branchActions.addAll(pendingActionsForBranches.get(branchStartNode));
            pendingActionsForBranches.remove(branchStartNode);
        }
        branch.setPipelineActions(branchActions);
        if (nextStage != null) {
            branch.addEdge(nextStage);
        }
        parallelBranches.push(branch);
    }
    FlowNodeWrapper[] sortedBranches = parallelBranches.toArray(new FlowNodeWrapper[parallelBranches.size()]);
    Arrays.sort(sortedBranches, new Comparator<FlowNodeWrapper>() {

        @Override
        public int compare(FlowNodeWrapper o1, FlowNodeWrapper o2) {
            return o1.getDisplayName().compareTo(o2.getDisplayName());
        }
    });
    parallelBranches.clear();
    for (int i = 0; i < sortedBranches.length; i++) {
        parallelBranches.push(sortedBranches[i]);
    }
    for (FlowNodeWrapper p : parallelBranches) {
        nodes.push(p);
        nodeMap.put(p.getId(), p);
    }
    // reset parallelEnd node for next parallel block
    this.parallelEnd = null;
}
Also used : TimingAction(org.jenkinsci.plugins.workflow.actions.TimingAction) InputAction(org.jenkinsci.plugins.workflow.support.steps.input.InputAction) LabelAction(org.jenkinsci.plugins.workflow.actions.LabelAction) Action(hudson.model.Action) NotExecutedNodeAction(org.jenkinsci.plugins.workflow.actions.NotExecutedNodeAction) PauseAction(org.jenkinsci.plugins.workflow.support.actions.PauseAction) TimingInfo(org.jenkinsci.plugins.workflow.pipelinegraphanalysis.TimingInfo) TimingAction(org.jenkinsci.plugins.workflow.actions.TimingAction) ArrayList(java.util.ArrayList) StepAtomNode(org.jenkinsci.plugins.workflow.cps.nodes.StepAtomNode) GenericStatus(org.jenkinsci.plugins.workflow.pipelinegraphanalysis.GenericStatus) FlowNode(org.jenkinsci.plugins.workflow.graph.FlowNode)

Example 7 with Action

use of hudson.model.Action in project blueocean-plugin by jenkinsci.

the class PipelineNodeUtil method isSkippedStage.

public static boolean isSkippedStage(@Nullable FlowNode node) {
    if (node == null) {
        return false;
    }
    for (Action action : node.getActions()) {
        if (action instanceof TagsAction && ((TagsAction) action).getTagValue(StageStatus.TAG_NAME) != null) {
            TagsAction tagsAction = (TagsAction) action;
            String value = tagsAction.getTagValue(StageStatus.TAG_NAME);
            return value != null && value.equals(StageStatus.getSkippedForConditional());
        }
    }
    return false;
}
Also used : ErrorAction(org.jenkinsci.plugins.workflow.actions.ErrorAction) InputAction(org.jenkinsci.plugins.workflow.support.steps.input.InputAction) LabelAction(org.jenkinsci.plugins.workflow.actions.LabelAction) ThreadNameAction(org.jenkinsci.plugins.workflow.actions.ThreadNameAction) QueueItemAction(org.jenkinsci.plugins.workflow.actions.QueueItemAction) LogAction(org.jenkinsci.plugins.workflow.actions.LogAction) StageAction(org.jenkinsci.plugins.workflow.actions.StageAction) Action(hudson.model.Action) PauseAction(org.jenkinsci.plugins.workflow.support.actions.PauseAction) TagsAction(org.jenkinsci.plugins.workflow.actions.TagsAction) TagsAction(org.jenkinsci.plugins.workflow.actions.TagsAction)

Example 8 with Action

use of hudson.model.Action in project blueocean-plugin by jenkinsci.

the class TryBlueOceanMenu method exists.

private boolean exists(Actionable actionable, BlueOceanUrlAction blueOceanUrlAction) {
    for (Action a : actionable.getActions()) {
        // JENKINS-44926 only call getURLName on these actions if action is BLueOceanUrlAction
        if (a instanceof BlueOceanUrlAction) {
            String blueUrl = blueOceanUrlAction.getUrlName();
            String thisUrl = a.getUrlName();
            if (thisUrl != null && thisUrl.equals(blueUrl)) {
                return true;
            }
        }
    }
    return false;
}
Also used : Action(hudson.model.Action)

Example 9 with Action

use of hudson.model.Action in project gitlab-branch-source-plugin by Argelbargel.

the class SourceActions method retrieve.

@Nonnull
private List<Action> retrieve(@Nonnull SCMRevisionImpl revision, @CheckForNull SCMHeadEvent event, @Nonnull TaskListener listener) throws IOException, InterruptedException {
    List<Action> actions = new ArrayList<>();
    String hash = revision.getHash();
    Action linkAction = GitLabLinkAction.toCommit(source.getProject(), hash);
    actions.add(linkAction);
    SCMHead head = revision.getHead();
    if (head instanceof GitLabSCMMergeRequestHead) {
        actions.add(createHeadMetadataAction(head.getName(), ((GitLabSCMMergeRequestHead) head).getSource(), hash, linkAction.getUrlName()));
    } else if (head instanceof GitLabSCMHead) {
        actions.add(createHeadMetadataAction(head.getName(), (GitLabSCMHead) head, hash, linkAction.getUrlName()));
    }
    if (event instanceof GitLabSCMEvent) {
        actions.add(new GitLabSCMCauseAction(((GitLabSCMEvent) event).getCause()));
    }
    return actions;
}
Also used : GitLabSCMPublishAction(argelbargel.jenkins.plugins.gitlab_branch_source.actions.GitLabSCMPublishAction) GitLabSCMCauseAction(argelbargel.jenkins.plugins.gitlab_branch_source.actions.GitLabSCMCauseAction) ObjectMetadataAction(jenkins.scm.api.metadata.ObjectMetadataAction) GitLabSCMAcceptMergeRequestAction(argelbargel.jenkins.plugins.gitlab_branch_source.actions.GitLabSCMAcceptMergeRequestAction) Action(hudson.model.Action) GitLabProjectAvatarMetadataAction(argelbargel.jenkins.plugins.gitlab_branch_source.actions.GitLabProjectAvatarMetadataAction) PrimaryInstanceMetadataAction(jenkins.scm.api.metadata.PrimaryInstanceMetadataAction) GitLabSCMHeadMetadataAction(argelbargel.jenkins.plugins.gitlab_branch_source.actions.GitLabSCMHeadMetadataAction) GitLabLinkAction(argelbargel.jenkins.plugins.gitlab_branch_source.actions.GitLabLinkAction) TagSCMHead(jenkins.scm.api.mixin.TagSCMHead) SCMHead(jenkins.scm.api.SCMHead) ChangeRequestSCMHead(jenkins.scm.api.mixin.ChangeRequestSCMHead) GitLabSCMHead(argelbargel.jenkins.plugins.gitlab_branch_source.heads.GitLabSCMHead) GitLabSCMCauseAction(argelbargel.jenkins.plugins.gitlab_branch_source.actions.GitLabSCMCauseAction) ArrayList(java.util.ArrayList) GitLabSCMMergeRequestHead(argelbargel.jenkins.plugins.gitlab_branch_source.heads.GitLabSCMMergeRequestHead) GitLabSCMHead(argelbargel.jenkins.plugins.gitlab_branch_source.heads.GitLabSCMHead) GitLabSCMEvent(argelbargel.jenkins.plugins.gitlab_branch_source.events.GitLabSCMEvent) Nonnull(javax.annotation.Nonnull)

Aggregations

Action (hudson.model.Action)9 ArrayList (java.util.ArrayList)4 GitLabLinkAction (argelbargel.jenkins.plugins.gitlab_branch_source.actions.GitLabLinkAction)2 GitLabProjectAvatarMetadataAction (argelbargel.jenkins.plugins.gitlab_branch_source.actions.GitLabProjectAvatarMetadataAction)2 GitLabSCMAcceptMergeRequestAction (argelbargel.jenkins.plugins.gitlab_branch_source.actions.GitLabSCMAcceptMergeRequestAction)2 GitLabSCMCauseAction (argelbargel.jenkins.plugins.gitlab_branch_source.actions.GitLabSCMCauseAction)2 GitLabSCMHeadMetadataAction (argelbargel.jenkins.plugins.gitlab_branch_source.actions.GitLabSCMHeadMetadataAction)2 GitLabSCMPublishAction (argelbargel.jenkins.plugins.gitlab_branch_source.actions.GitLabSCMPublishAction)2 EnvVars (hudson.EnvVars)2 FreeStyleBuild (hudson.model.FreeStyleBuild)2 FreeStyleProject (hudson.model.FreeStyleProject)2 ParameterValue (hudson.model.ParameterValue)2 User (hudson.model.User)2 ManualCondition (hudson.plugins.promoted_builds.conditions.ManualCondition)2 Nonnull (javax.annotation.Nonnull)2 ObjectMetadataAction (jenkins.scm.api.metadata.ObjectMetadataAction)2 PrimaryInstanceMetadataAction (jenkins.scm.api.metadata.PrimaryInstanceMetadataAction)2 ChangeRequestSCMHead (jenkins.scm.api.mixin.ChangeRequestSCMHead)2 TagSCMHead (jenkins.scm.api.mixin.TagSCMHead)2 LabelAction (org.jenkinsci.plugins.workflow.actions.LabelAction)2