package jenkinsci.plugins.telegrambot; import hudson.Extension; import hudson.FilePath; import hudson.Launcher; import hudson.model.AbstractProject; import hudson.model.Result; import hudson.model.Run; import hudson.model.TaskListener; import hudson.tasks.BuildStepDescriptor; import hudson.tasks.BuildStepMonitor; import hudson.tasks.Notifier; import hudson.tasks.Publisher; import jenkins.tasks.SimpleBuildStep; import jenkinsci.plugins.telegrambot.telegram.TelegramBotRunner; import org.kohsuke.stapler.DataBoundConstructor; import javax.annotation.Nonnull; import java.io.IOException; public class TelegramBotPublisher extends Notifier implements SimpleBuildStep { /** * The message that will be expanded and sent to users */ private final String message; private final boolean whenSuccess; private final boolean whenUnstable; private final boolean whenFailed; private final boolean whenAborted; @DataBoundConstructor public TelegramBotPublisher( String message, boolean whenSuccess, boolean whenUnstable, boolean whenFailed, boolean whenAborted) { this.message = message; this.whenSuccess = whenSuccess; this.whenUnstable = whenUnstable; this.whenFailed = whenFailed; this.whenAborted = whenAborted; } @Extension public static class Descriptor extends BuildStepDescriptor<Publisher> { @Override public boolean isApplicable(Class<? extends AbstractProject> jobType) { return true; } @Nonnull @Override public String getDisplayName() { return TelegramBotGlobalConfiguration.PLUGIN_DISPLAY_NAME; } } @Override public BuildStepMonitor getRequiredMonitorService() { return BuildStepMonitor.NONE; } @Override public void perform( @Nonnull Run<?, ?> run, @Nonnull FilePath filePath, @Nonnull Launcher launcher, @Nonnull TaskListener taskListener) throws InterruptedException, IOException { Result result = run.getResult(); boolean success = result == Result.SUCCESS && whenSuccess; boolean unstable = result == Result.UNSTABLE && whenUnstable; boolean failed = result == Result.FAILURE && whenFailed; boolean aborted = result == Result.ABORTED && whenAborted; boolean neededToSend = success || unstable || failed || aborted; if (neededToSend) { TelegramBotRunner.getInstance().getBot() .sendMessage(getMessage(), run, filePath, taskListener); } } public String getMessage() { return message; } public boolean isWhenSuccess() { return whenSuccess; } public boolean isWhenUnstable() { return whenUnstable; } public boolean isWhenFailed() { return whenFailed; } public boolean isWhenAborted() { return whenAborted; } }