diff --git a/demo/src/main/groovy/4_Jobs.groovy b/demo/src/main/groovy/4_Jobs.groovy
index d0cc7e2..4dc05ba 100644
--- a/demo/src/main/groovy/4_Jobs.groovy
+++ b/demo/src/main/groovy/4_Jobs.groovy
@@ -1,4 +1,6 @@
//TODO: Migrate to JCasC once it supports disabling via system property
+
+import hudson.model.FreeStyleProject
import jenkins.model.Jenkins
import org.jenkinsci.plugins.workflow.cps.CpsFlowDefinition
import org.jenkinsci.plugins.workflow.job.WorkflowJob
@@ -11,8 +13,8 @@ if (!Boolean.getBoolean("io.jenkins.demo.external-task-logging-elk.enabled")) {
println("-- Creating Jobs")
//TODO: Classes do not work here, so some copy-paste for now
-if(Jenkins.instance.getItem("Demo_master") == null) {
- WorkflowJob project1 = Jenkins.instance.createProject(WorkflowJob.class, "Demo_master")
+if(Jenkins.instance.getItem("Pipeline_master") == null) {
+ WorkflowJob project1 = Jenkins.instance.createProject(WorkflowJob.class, "Pipeline_master")
project1.definition = new CpsFlowDefinition(
"node('master') {\n" +
" sh \"ping -c 20 google.com\"\n" +
@@ -22,8 +24,8 @@ if(Jenkins.instance.getItem("Demo_master") == null) {
project1.save()
}
-if(Jenkins.instance.getItem("Demo_agent") == null) {
- WorkflowJob project2 = Jenkins.instance.createProject(WorkflowJob.class, "Demo_agent")
+if(Jenkins.instance.getItem("Pipeline_agent") == null) {
+ WorkflowJob project2 = Jenkins.instance.createProject(WorkflowJob.class, "Pipeline_agent")
project2.definition = new CpsFlowDefinition(
"node('agent') {\n" +
" sh \"echo Hello, world!\"\n" +
@@ -35,8 +37,8 @@ if(Jenkins.instance.getItem("Demo_agent") == null) {
project2.save()
}
-if(Jenkins.instance.getItem("Demo_parallel") == null) {
- WorkflowJob project3 = Jenkins.instance.createProject(WorkflowJob.class, "Demo_parallel")
+if(Jenkins.instance.getItem("Pipeline_parallel") == null) {
+ WorkflowJob project3 = Jenkins.instance.createProject(WorkflowJob.class, "Pipeline_parallel")
project3.definition = new CpsFlowDefinition(
"parallel local: {\n" +
" node('master') {\n" +
diff --git a/pom.xml b/pom.xml
index e6617a5..2027570 100644
--- a/pom.xml
+++ b/pom.xml
@@ -20,7 +20,8 @@
1.0-alpha-1
-SNAPSHOT
- 2.131-SNAPSHOT
+ 2.137-20180807.141417-2
+ 2.137-20180807.141447-2
8
true
@@ -43,7 +44,7 @@
io.jenkins.plugins.external-logging
external-logging-api
- 1.0-alpha-1-SNAPSHOT
+ 1.0-alpha-1-20180807.155933-3
org.jenkins-ci.plugins
@@ -118,6 +119,10 @@
repo.jenkins-ci.org
https://repo.jenkins-ci.org/public/
+
+ incrementals
+ https://repo.jenkins-ci.org/incrementals/
+
diff --git a/src/main/java/io/jenkins/plugins/extlogging/elasticsearch/ElasticsearchEventWriter.java b/src/main/java/io/jenkins/plugins/extlogging/elasticsearch/ElasticsearchEventWriter.java
index 8ae7f18..aa83553 100644
--- a/src/main/java/io/jenkins/plugins/extlogging/elasticsearch/ElasticsearchEventWriter.java
+++ b/src/main/java/io/jenkins/plugins/extlogging/elasticsearch/ElasticsearchEventWriter.java
@@ -14,6 +14,7 @@
import javax.annotation.Nonnull;
import java.io.IOException;
import java.io.Serializable;
+import java.nio.charset.Charset;
import java.util.Calendar;
import java.util.Map;
import java.util.logging.Level;
@@ -32,7 +33,9 @@ public class ElasticsearchEventWriter extends ExternalLoggingEventWriter {
private boolean connectionBroken;
public ElasticsearchEventWriter(@CheckForNull String prefix,
- @Nonnull ElasticSearchDao dao) {
+ @Nonnull ElasticSearchDao dao,
+ @Nonnull Charset charset) {
+ super(charset);
this.prefix = prefix;
this.dao = dao;
}
diff --git a/src/main/java/io/jenkins/plugins/extlogging/elasticsearch/ElasticsearchLogBrowser.java b/src/main/java/io/jenkins/plugins/extlogging/elasticsearch/ElasticsearchLogBrowser.java
index ba3f0db..93992f9 100644
--- a/src/main/java/io/jenkins/plugins/extlogging/elasticsearch/ElasticsearchLogBrowser.java
+++ b/src/main/java/io/jenkins/plugins/extlogging/elasticsearch/ElasticsearchLogBrowser.java
@@ -1,20 +1,22 @@
package io.jenkins.plugins.extlogging.elasticsearch;
import hudson.console.AnnotatedLargeText;
+import io.jenkins.plugins.extlogging.api.ExternalLogBrowser;
import io.jenkins.plugins.extlogging.elasticsearch.util.ElasticSearchDao;
-import jenkins.model.logging.LogBrowser;
import jenkins.model.logging.Loggable;
import jenkins.model.logging.impl.BrokenAnnotatedLargeText;
import javax.annotation.CheckForNull;
+import java.io.IOException;
/**
* Log browser for Elasticsearch.
* @author Oleg Nenashev
* @since TODO
*/
-public class ElasticsearchLogBrowser extends LogBrowser {
+public class ElasticsearchLogBrowser extends ExternalLogBrowser {
+ //TODO(oleg-nenashev): jglick requests example of several implementations
public ElasticsearchLogBrowser(Loggable loggable) {
super(loggable);
}
@@ -43,4 +45,10 @@ public AnnotatedLargeText stepLog(@CheckForNull String stepId, boolean b) {
return new ElasticsearchLogLargeTextProvider(dao, getOwner(), stepId).getLogText();
}
+
+ @Override
+ public boolean deleteLog() {
+ // Not supported
+ return false;
+ }
}
diff --git a/src/main/java/io/jenkins/plugins/extlogging/elasticsearch/ElasticsearchLogBrowserFactory.java b/src/main/java/io/jenkins/plugins/extlogging/elasticsearch/ElasticsearchLogBrowserFactory.java
index bafe4b6..3567d2d 100644
--- a/src/main/java/io/jenkins/plugins/extlogging/elasticsearch/ElasticsearchLogBrowserFactory.java
+++ b/src/main/java/io/jenkins/plugins/extlogging/elasticsearch/ElasticsearchLogBrowserFactory.java
@@ -2,9 +2,9 @@
import hudson.Extension;
import hudson.model.Run;
+import io.jenkins.plugins.extlogging.api.ExternalLogBrowser;
import io.jenkins.plugins.extlogging.api.ExternalLogBrowserFactory;
import io.jenkins.plugins.extlogging.api.ExternalLogBrowserFactoryDescriptor;
-import jenkins.model.logging.LogBrowser;
import jenkins.model.logging.Loggable;
import org.jenkinsci.Symbol;
import org.kohsuke.stapler.DataBoundConstructor;
@@ -25,7 +25,7 @@ public ElasticsearchLogBrowserFactory() {
@CheckForNull
@Override
- public LogBrowser create(Loggable loggable) {
+ public ExternalLogBrowser create(Loggable loggable) {
if (loggable instanceof Run, ?>) {
return new ElasticsearchLogBrowser((Run, ?>) loggable);
}
@@ -33,7 +33,7 @@ public LogBrowser create(Loggable loggable) {
}
@Extension
- @Symbol("logstashElasticsearch")
+ @Symbol("elasticsearch")
public static class DescriptorImpl extends ExternalLogBrowserFactoryDescriptor {
}
diff --git a/src/main/java/io/jenkins/plugins/extlogging/elasticsearch/ElasticsearchLoggingMethod.java b/src/main/java/io/jenkins/plugins/extlogging/elasticsearch/ElasticsearchLoggingMethod.java
index 1f68665..d8b5dbb 100644
--- a/src/main/java/io/jenkins/plugins/extlogging/elasticsearch/ElasticsearchLoggingMethod.java
+++ b/src/main/java/io/jenkins/plugins/extlogging/elasticsearch/ElasticsearchLoggingMethod.java
@@ -5,12 +5,12 @@
import java.io.OutputStream;
import java.util.List;
+import io.jenkins.plugins.extlogging.api.ExternalLogBrowser;
import io.jenkins.plugins.extlogging.api.ExternalLoggingEventWriter;
import io.jenkins.plugins.extlogging.api.OutputStreamWrapper;
import io.jenkins.plugins.extlogging.api.ExternalLoggingMethod;
import io.jenkins.plugins.extlogging.api.impl.ExternalLoggingOutputStream;
import io.jenkins.plugins.extlogging.elasticsearch.util.ElasticSearchDao;
-import jenkins.model.logging.LogBrowser;
import jenkins.model.logging.Loggable;
import javax.annotation.CheckForNull;
@@ -31,14 +31,14 @@ public ElasticsearchLoggingMethod(Loggable loggable, @CheckForNull String prefix
}
@Override
- public LogBrowser getDefaultLogBrowser() {
+ public ExternalLogBrowser getDefaultLogBrowser() {
return new ElasticsearchLogBrowser(getOwner());
}
@Override
protected ExternalLoggingEventWriter _createWriter() throws IOException {
ElasticSearchDao dao = ElasticsearchGlobalConfiguration.getInstance().toDao();
- return new ElasticsearchEventWriter(prefix, dao);
+ return new ElasticsearchEventWriter(prefix, dao, getOwner().getCharset());
}
// @Override
diff --git a/src/main/java/io/jenkins/plugins/extlogging/elasticsearch/UncompressedAnnotatedLargeText.java b/src/main/java/io/jenkins/plugins/extlogging/elasticsearch/UncompressedAnnotatedLargeText.java
index 00b60f8..416fa8a 100644
--- a/src/main/java/io/jenkins/plugins/extlogging/elasticsearch/UncompressedAnnotatedLargeText.java
+++ b/src/main/java/io/jenkins/plugins/extlogging/elasticsearch/UncompressedAnnotatedLargeText.java
@@ -39,7 +39,7 @@ public UncompressedAnnotatedLargeText(ByteBuffer memory, Charset charset, boolea
public long writeHtmlTo(long start, Writer w) throws IOException {
ConsoleAnnotationOutputStream caw = new ConsoleAnnotationOutputStream(
w, createAnnotator(Stapler.getCurrentRequest()), context, charset);
- long r = super.writeLogTo(start, caw);
+ super.writeLogTo(start, caw);
caw.flush();
long initial = memory.length();
/*
diff --git a/src/main/java/io/jenkins/plugins/extlogging/elasticsearch/util/ElasticSearchDao.java b/src/main/java/io/jenkins/plugins/extlogging/elasticsearch/util/ElasticSearchDao.java
index ade34f1..bf33585 100644
--- a/src/main/java/io/jenkins/plugins/extlogging/elasticsearch/util/ElasticSearchDao.java
+++ b/src/main/java/io/jenkins/plugins/extlogging/elasticsearch/util/ElasticSearchDao.java
@@ -26,6 +26,7 @@
package io.jenkins.plugins.extlogging.elasticsearch.util;
import com.google.common.collect.Range;
+import edu.umd.cs.findbugs.annotations.SuppressFBWarnings;
import org.apache.commons.codec.binary.Base64;
import org.apache.commons.lang.StringUtils;
import org.apache.http.client.methods.CloseableHttpResponse;
@@ -54,6 +55,8 @@
* @author Liam Newman
* @author Oleg Nenashev
*/
+//TODO: fix before the release
+@SuppressFBWarnings(value = "SE_NO_SERIALVERSIONID", justification = "To be set before the release")
public class ElasticSearchDao implements Serializable {
private static final Range SUCCESS_CODES = closedOpen(200,300);
diff --git a/src/main/java/io/jenkins/plugins/extlogging/elasticsearch/util/RemoteLogstashOutputStream.java b/src/main/java/io/jenkins/plugins/extlogging/elasticsearch/util/RemoteLogstashOutputStream.java
index 5ae2ffa..b3e14ff 100644
--- a/src/main/java/io/jenkins/plugins/extlogging/elasticsearch/util/RemoteLogstashOutputStream.java
+++ b/src/main/java/io/jenkins/plugins/extlogging/elasticsearch/util/RemoteLogstashOutputStream.java
@@ -57,7 +57,7 @@ protected void eol(byte[] b, int len) throws IOException {
try {
this.flush();
if (!logstash.isConnectionBroken()) {
- String line = new String(b, 0, len).trim();
+ String line = new String(b, 0, len, logstash.getCharset()).trim();
line = ConsoleNote.removeNotes(line);
logstash.writeMessage(prefix + line);
}
diff --git a/src/test/java/io/jenkins/plugins/extlogging/elasticsearch/PipelineSmokeTest.java b/src/test/java/io/jenkins/plugins/extlogging/elasticsearch/PipelineSmokeTest.java
index c100e14..6aaebfa 100644
--- a/src/test/java/io/jenkins/plugins/extlogging/elasticsearch/PipelineSmokeTest.java
+++ b/src/test/java/io/jenkins/plugins/extlogging/elasticsearch/PipelineSmokeTest.java
@@ -11,6 +11,9 @@
import org.junit.Test;
import org.jvnet.hudson.test.JenkinsRule;
+import static org.junit.Assert.assertThat;
+import static org.hamcrest.Matchers.*;
+
/**
* @author Oleg Nenashev
* @since TODO
@@ -41,6 +44,7 @@ public void spotcheck_Default() throws Exception {
//to automate handling of such use-cases
Thread.sleep(10000);
j.assertLogContains("Hello", build);
+ assertThat(build.getLog(), not(containsString("[[")));
}
@Test