zmq-event-publisher/src/main/java/org/jenkinsci/plugins/ZMQEventPublisher/RunListenerImpl.java

72 lines
2.0 KiB
Java

package org.jenkinsci.plugins.ZMQEventPublisher;
import hudson.Extension;
import hudson.EnvVars;
import hudson.model.AbstractBuild;
import hudson.model.TaskListener;
import hudson.model.listeners.RunListener;
import org.zeromq.ZMQ;
import java.io.IOException;
import java.lang.InterruptedException;
/*
* Listener to publish Jenkins build events through ZMQ
*
* @author Clark Boylan
*/
@Extension
public class RunListenerImpl extends RunListener<AbstractBuild> {
private final int port;
private ZMQ.Context context;
private ZMQ.Socket publisher;
private final String bind_addr;
public RunListenerImpl() {
super(AbstractBuild.class);
this.port = 8888;
this.context = ZMQ.context(1);
this.publisher = context.socket(ZMQ.PUB);
bind_addr = String.format("tcp://*:%d", this.port);
this.publisher.bind(bind_addr);
}
@Override
public void onCompleted(AbstractBuild build, TaskListener listener) {
String update = String.format("onCompleted");
try {
EnvVars env = build.getEnvironment(listener);
update = update + " " + env.toString();
} catch (IOException e) {
} catch (InterruptedException e) {
}
this.publisher.send(update.getBytes(), 0);
}
@Override
public void onDeleted(AbstractBuild build) {
String update = String.format("onDeleted");
this.publisher.send(update.getBytes(), 0);
}
@Override
public void onFinalized(AbstractBuild build) {
String update = String.format("onFinalized");
this.publisher.send(update.getBytes(), 0);
}
@Override
public void onStarted(AbstractBuild build, TaskListener listener) {
String update = String.format("onStarted");
try {
EnvVars env = build.getEnvironment(listener);
update = update + " " + env.toString();
} catch (IOException e) {
} catch (InterruptedException e) {
}
this.publisher.send(update.getBytes(), 0);
}
}