Skip to content

Commit

Permalink
Browse files Browse the repository at this point in the history
[JENKINS-32504] JiraEnvironmentVariableBuilder and pipeline plugin
  • Loading branch information
jan-zajic committed Jan 25, 2016
1 parent 5715400 commit 1ada0f3
Show file tree
Hide file tree
Showing 3 changed files with 114 additions and 3 deletions.
27 changes: 25 additions & 2 deletions COMPATIBILITY.md
Expand Up @@ -13,7 +13,7 @@ node {
def gitScm = git url: 'git@github.com:jenkinsci/jira-plugin.git', branch: 'master'
sh 'make something'
step([$class: 'hudson.plugins.jira.JiraIssueUpdater',
issueSelector: [$class: 'hudson.plugins.jira.DefaultUpdaterIssueSelector'],
issueSelector: [$class: 'hudson.plugins.jira.selector.DefaultIssueSelector'],
scm: gitScm])
gitScm = null
}
Expand All @@ -24,7 +24,7 @@ Note that a pointer to scm class should be better cleared to not serialize scm o
You can add some labels to issue in jira:
```groovy
step([$class: 'hudson.plugins.jira.JiraIssueUpdater',
issueSelector: [$class: 'hudson.plugins.jira.DefaultUpdaterIssueSelector'],
issueSelector: [$class: 'hudson.plugins.jira.selector.DefaultIssueSelector'],
scm: gitScm,
labels: [ "$version", "jenkins" ]])
```
Expand All @@ -49,6 +49,28 @@ node {
}
```

##JiraEnvironmentVariableBuilder
Is not supported in Pipeline. You can get current jira url (if you are not using the Groovy sandbox):

```groovy
import hudson.plugins.jira.JiraSite;
node {
String jiraUrl = JiraSite.get(currentBuild.rawBuild).name
env.JIRA_URL = jiraUrl
}
```

To replace JIRA_ISSUES env variable, you can use pipeline step jiraIssueSelector:
```groovy
List<String> issueKeys = jiraIssueSelector()
```

or if you use custom issue selector:
```groovy
List<String> issueKeys = jiraIssueSelector(new CustomIssueSelector())
```

## Other features

Some features are currently not supported in pipeline.
Expand All @@ -75,3 +97,4 @@ Other builders will be supported in future (not supported yet).
- [ ] `JiraReleaseVersionUpdater` never supported
- [ ] `JiraReleaseVersionUpdaterBuilder` not supported yet
- [ ] `JiraVersionCreator` never supported
- [ ] `JiraEnvironmentVariableBuilder` not supported
87 changes: 87 additions & 0 deletions src/main/java/hudson/plugins/jira/pipeline/IssueSelectorStep.java
@@ -0,0 +1,87 @@
package hudson.plugins.jira.pipeline;

import java.util.Set;

import org.jenkinsci.plugins.workflow.steps.AbstractStepDescriptorImpl;
import org.jenkinsci.plugins.workflow.steps.AbstractStepImpl;
import org.jenkinsci.plugins.workflow.steps.AbstractSynchronousNonBlockingStepExecution;
import org.jenkinsci.plugins.workflow.steps.StepContextParameter;
import org.kohsuke.stapler.DataBoundConstructor;
import org.kohsuke.stapler.DataBoundSetter;

import com.google.inject.Inject;

import hudson.Extension;
import hudson.model.Run;
import hudson.model.TaskListener;
import hudson.plugins.jira.JiraSite;
import hudson.plugins.jira.Messages;
import hudson.plugins.jira.selector.AbstractIssueSelector;

/**
* Step that run selected issue selector.
*
* @author jan zajic
* @see hudson.plugins.jira.selector.AbstractIssueSelector
*/
public class IssueSelectorStep extends AbstractStepImpl {

private AbstractIssueSelector issueSelector;

@DataBoundConstructor
public IssueSelectorStep() {
}

@DataBoundSetter
public void setIssueSelector(AbstractIssueSelector issueSelector) {
this.issueSelector = issueSelector;
}

public AbstractIssueSelector getIssueSelector() {
return issueSelector;
}

@Extension(optional = true)
public static final class DescriptorImpl extends AbstractStepDescriptorImpl {

public DescriptorImpl() {
super(IssueSelectorStepExecution.class);
}

@Override
public String getFunctionName() {
return "jiraIssueSelector";
}

@Override
public String getDisplayName() {
return Messages.IssueSelectorStep_Descriptor_DisplayName();
}
}

/**
* @author jan zajic
*/
public static class IssueSelectorStepExecution extends AbstractSynchronousNonBlockingStepExecution<Set<String>> {

private static final long serialVersionUID = 1L;

@Inject
private transient IssueSelectorStep step;

@StepContextParameter
private transient TaskListener listener;

@StepContextParameter
private transient Run run;

@Override
protected Set<String> run() throws Exception {
JiraSite site = JiraSite.get(run.getParent());
Set<String> ids = step.getIssueSelector().findIssueIds(run, site, listener);
return ids;
}

}

}
3 changes: 2 additions & 1 deletion src/main/resources/hudson/plugins/jira/Messages.properties
Expand Up @@ -30,4 +30,5 @@ JiraEnvironmentVariableBuilder.DisplayName=JIRA: Add related environment variabl
JiraEnvironmentVariableBuilder.NoJiraSite=[JIRA] No JIRA site is configured for this project. This must be a project configuration error
JiraEnvironmentVariableBuilder.Updating=[JIRA] Setting {0} to {1}.
CommentStep.Descriptor.DisplayName=JIRA: Add comment to the issue
SearchIssuesStep.Descriptor.DisplayName=JIRA: Search issues
SearchIssuesStep.Descriptor.DisplayName=JIRA: Search issues
IssueSelectorStep.Descriptor.DisplayName=JIRA: Issue selector

0 comments on commit 1ada0f3

Please sign in to comment.