From 7b1f892468c23d207db44561413f7148abcb618e Mon Sep 17 00:00:00 2001 From: Nicolae Pascu Date: Fri, 30 Jun 2017 17:55:41 +1000 Subject: [PATCH 01/10] add stage and duration to step heading, remove duration title from graph --- .../src/main/js/components/PipelineRunGraph.jsx | 2 +- .../components/karaoke/components/LogToolbar.jsx | 13 +++++++++++-- .../js/components/karaoke/components/Pipeline.jsx | 14 ++++++++++---- 3 files changed, 22 insertions(+), 7 deletions(-) diff --git a/blueocean-dashboard/src/main/js/components/PipelineRunGraph.jsx b/blueocean-dashboard/src/main/js/components/PipelineRunGraph.jsx index 9e0f415e3ef..ccacfc1d785 100644 --- a/blueocean-dashboard/src/main/js/components/PipelineRunGraph.jsx +++ b/blueocean-dashboard/src/main/js/components/PipelineRunGraph.jsx @@ -68,7 +68,7 @@ function convertJenkinsNodeDetails(jenkinsNode, isCompleted, skewMillis = 0) { } const i18nDuration = timeManager.format(harmonized.durationInMillis, translate('common.date.duration.hint.format', { defaultValue: 'M [month], d [days], h[h], m[m], s[s]' })); - const title = translate(`common.state.${state}`, { 0: i18nDuration }); + const title = state != 'running' ? translate(`common.state.${state}`, { 0: i18nDuration }) : ''; const converted = { name: jenkinsNode.displayName, diff --git a/blueocean-dashboard/src/main/js/components/karaoke/components/LogToolbar.jsx b/blueocean-dashboard/src/main/js/components/karaoke/components/LogToolbar.jsx index 3ed6e99ab94..f8755d421fb 100644 --- a/blueocean-dashboard/src/main/js/components/karaoke/components/LogToolbar.jsx +++ b/blueocean-dashboard/src/main/js/components/karaoke/components/LogToolbar.jsx @@ -2,20 +2,28 @@ import React, { Component, PropTypes } from 'react'; import { Icon } from '@jenkins-cd/react-material-icons'; import { fetchAllSuffix as suffix } from '../../../util/UrlUtils'; +import moment from 'moment'; +require('moment-duration-format'); +// needs to be loaded since the moment lib will use require which in run time will fail +import 'moment/min/locales.min'; + const { string } = PropTypes; export default class LogToolbar extends Component { render() { - const { url, title } = this.props; + const { url, title, duration } = this.props; + const displayFormat = 'd[d] h[h] m[m] s[s]'; + const computedTitle = duration ? title + ' - ' + (moment.duration(duration).format(displayFormat)) : title; // early out if (!url) { return null; } const logUrl = url.includes(suffix) ? url : `${url}${suffix}`; const style = { fill: '#4a4a4a' }; + return (
- {title} + {computedTitle}
item.id === this.pager.currentNode.parent)[0] : ''; + stepName = stepName && this.pager.currentNode.isParallel ? stepName.displayName : ''; + + let title = this.pager.nodes !== undefined ? this.pager.currentNode.displayName : ''; + + title = stepName ? `${stepName}/${title}` : title; + // JENKINS-40526 node can provide logs only related to that node const logUrl = this.pager.nodes !== undefined ? augmenter.getNodesLogUrl(this.pager.currentNode) : augmenter.generalLogUrl; const logFileName = this.pager.nodes !== undefined ? augmenter.getNodesLogFileName(this.pager.currentNode) : augmenter.generalLogFileName; logger.debug('displayName', this.pager.currentNode.displayName, 'logging info', logUrl, logFileName); + return (
{ } { this.pager.nodes !== undefined && @@ -255,6 +260,7 @@ export default class Pipeline extends Component { fileName={logFileName} url={logUrl} title={title} + duration={!this.pager.currentNode.isRunning ? this.pager.currentNode.durationInMillis : ''} /> } { this.pager.steps && !noResultsToDisplay && From d63d8cf1fd5f7bf59f80034f0d76c55237bd2480 Mon Sep 17 00:00:00 2001 From: Nicolae Pascu Date: Wed, 4 Oct 2017 20:37:22 +1100 Subject: [PATCH 02/10] fix icon import --- .../src/main/js/components/karaoke/components/LogToolbar.jsx | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/blueocean-dashboard/src/main/js/components/karaoke/components/LogToolbar.jsx b/blueocean-dashboard/src/main/js/components/karaoke/components/LogToolbar.jsx index f8755d421fb..2155c1c385d 100644 --- a/blueocean-dashboard/src/main/js/components/karaoke/components/LogToolbar.jsx +++ b/blueocean-dashboard/src/main/js/components/karaoke/components/LogToolbar.jsx @@ -1,5 +1,5 @@ import React, { Component, PropTypes } from 'react'; -import { Icon } from '@jenkins-cd/react-material-icons'; +import { Icon } from '@jenkins-cd/design-language'; import { fetchAllSuffix as suffix } from '../../../util/UrlUtils'; import moment from 'moment'; From a2ffa7f8b74630f5024ef677d0b02f530294d1fd Mon Sep 17 00:00:00 2001 From: Nicolae Pascu Date: Thu, 5 Oct 2017 11:57:44 +1100 Subject: [PATCH 03/10] remove obsolete inline style --- .../src/main/js/components/karaoke/components/LogToolbar.jsx | 1 - 1 file changed, 1 deletion(-) diff --git a/blueocean-dashboard/src/main/js/components/karaoke/components/LogToolbar.jsx b/blueocean-dashboard/src/main/js/components/karaoke/components/LogToolbar.jsx index 2155c1c385d..fad7750f0b1 100644 --- a/blueocean-dashboard/src/main/js/components/karaoke/components/LogToolbar.jsx +++ b/blueocean-dashboard/src/main/js/components/karaoke/components/LogToolbar.jsx @@ -19,7 +19,6 @@ export default class LogToolbar extends Component { return null; } const logUrl = url.includes(suffix) ? url : `${url}${suffix}`; - const style = { fill: '#4a4a4a' }; return (
From 8c32f31651723b7daab9a5e33096f5d380f0dfbd Mon Sep 17 00:00:00 2001 From: Nicolae Pascu Date: Tue, 17 Oct 2017 17:56:06 +1100 Subject: [PATCH 04/10] fix lint and icons --- .../src/main/js/components/PipelineRunGraph.jsx | 2 +- .../src/main/js/components/karaoke/components/LogToolbar.jsx | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/blueocean-dashboard/src/main/js/components/PipelineRunGraph.jsx b/blueocean-dashboard/src/main/js/components/PipelineRunGraph.jsx index 55f758d66c7..324614d22a6 100644 --- a/blueocean-dashboard/src/main/js/components/PipelineRunGraph.jsx +++ b/blueocean-dashboard/src/main/js/components/PipelineRunGraph.jsx @@ -73,7 +73,7 @@ function convertJenkinsNodeDetails(jenkinsNode, isCompleted, skewMillis = 0) { } const i18nDuration = timeManager.format(harmonized.durationInMillis, translate('common.date.duration.hint.format', { defaultValue: 'M [month], d [days], h[h], m[m], s[s]' })); - const title = state != 'running' ? translate(`common.state.${state}`, { 0: i18nDuration }) : ''; + const title = state !== 'running' ? translate(`common.state.${state}`, { 0: i18nDuration }) : ''; const converted = { name: jenkinsNode.displayName, diff --git a/blueocean-dashboard/src/main/js/components/karaoke/components/LogToolbar.jsx b/blueocean-dashboard/src/main/js/components/karaoke/components/LogToolbar.jsx index fad7750f0b1..641f97ba5e3 100644 --- a/blueocean-dashboard/src/main/js/components/karaoke/components/LogToolbar.jsx +++ b/blueocean-dashboard/src/main/js/components/karaoke/components/LogToolbar.jsx @@ -31,7 +31,7 @@ export default class LogToolbar extends Component { href: logUrl, }} > - + - +
); From 8a3e6d144c230264bf0670085f63585f0e392e64 Mon Sep 17 00:00:00 2001 From: Nicolae Pascu Date: Wed, 18 Oct 2017 15:27:18 +1100 Subject: [PATCH 05/10] fix live duration next to the step title --- .../karaoke/components/LogToolbar.jsx | 29 ++++++++++++------- .../karaoke/components/Pipeline.jsx | 4 ++- 2 files changed, 22 insertions(+), 11 deletions(-) diff --git a/blueocean-dashboard/src/main/js/components/karaoke/components/LogToolbar.jsx b/blueocean-dashboard/src/main/js/components/karaoke/components/LogToolbar.jsx index 641f97ba5e3..e395d753949 100644 --- a/blueocean-dashboard/src/main/js/components/karaoke/components/LogToolbar.jsx +++ b/blueocean-dashboard/src/main/js/components/karaoke/components/LogToolbar.jsx @@ -1,19 +1,13 @@ import React, { Component, PropTypes } from 'react'; -import { Icon } from '@jenkins-cd/design-language'; +import { Icon, TimeDuration } from '@jenkins-cd/design-language'; import { fetchAllSuffix as suffix } from '../../../util/UrlUtils'; -import moment from 'moment'; -require('moment-duration-format'); -// needs to be loaded since the moment lib will use require which in run time will fail -import 'moment/min/locales.min'; - const { string } = PropTypes; export default class LogToolbar extends Component { render() { - const { url, title, duration } = this.props; - const displayFormat = 'd[d] h[h] m[m] s[s]'; - const computedTitle = duration ? title + ' - ' + (moment.duration(duration).format(displayFormat)) : title; + const { url, title, duration, t, running } = this.props; + // early out if (!url) { return null; @@ -22,7 +16,20 @@ export default class LogToolbar extends Component { return (
- {computedTitle} + + {title} + + {duration && + +  -  + + + }
} { this.pager.steps && !noResultsToDisplay && From 1317f7334815931f332e3b2d30bea1834331905f Mon Sep 17 00:00:00 2001 From: Nicolae Pascu Date: Thu, 19 Oct 2017 11:39:39 +1100 Subject: [PATCH 06/10] fix ATH tests --- .../src/main/java/io/jenkins/blueocean/BOJUnitTest.java | 8 +++----- .../ath/offline/multibranch/ParallelNavigationTest.java | 8 ++++---- 2 files changed, 7 insertions(+), 9 deletions(-) diff --git a/acceptance-tests/runner/runtime/src/main/java/io/jenkins/blueocean/BOJUnitTest.java b/acceptance-tests/runner/runtime/src/main/java/io/jenkins/blueocean/BOJUnitTest.java index 61456b767ff..87fdc5a996e 100644 --- a/acceptance-tests/runner/runtime/src/main/java/io/jenkins/blueocean/BOJUnitTest.java +++ b/acceptance-tests/runner/runtime/src/main/java/io/jenkins/blueocean/BOJUnitTest.java @@ -54,14 +54,12 @@ protected String getJenkinsUrl() { jenkinsUrl = jenkinsUrl.replace("127.0.0.1", host); jenkinsUrl = jenkinsUrl.replace("localhost", host); } else { - try { - String ip = InetAddress.getLocalHost().getHostAddress(); + + String ip = "172.17.0.1"; jenkinsUrl = jenkinsUrl.replace("127.0.0.1", ip); jenkinsUrl = jenkinsUrl.replace("localhost", ip); - } catch (UnknownHostException e) { - - } + } return jenkinsUrl; diff --git a/acceptance-tests/src/test/java/io/blueocean/ath/offline/multibranch/ParallelNavigationTest.java b/acceptance-tests/src/test/java/io/blueocean/ath/offline/multibranch/ParallelNavigationTest.java index 92c24551d31..eee279faa95 100644 --- a/acceptance-tests/src/test/java/io/blueocean/ath/offline/multibranch/ParallelNavigationTest.java +++ b/acceptance-tests/src/test/java/io/blueocean/ath/offline/multibranch/ParallelNavigationTest.java @@ -57,11 +57,11 @@ public void parallelNavigationTest () throws IOException, GitAPIException, Inter pipeline.getRunDetailsPipelinePage().open(1); // at first we see branch one - wait.until(By.xpath("//*[text()=\"Steps firstBranch\"]")); + wait.until(By.xpath("//*[text()=\"firstBranch\"]")); // and clicking on the unselected node will yield us the second branch wait.until(By.xpath("//*[contains(@class, 'pipeline-node')][3]")).click(); - wait.until(By.xpath("//*[text()=\"Steps secondBranch\"]")); + wait.until(By.xpath("//*[text()=\"secondBranch\"]")); pipeline.stopAllRuns(); } @@ -85,12 +85,12 @@ public void parallelNavigationTestInput () throws IOException, GitAPIException, pipeline.getRunDetailsPipelinePage().open(1); // at first we see branch one - wait.until(By.xpath("//*[text()=\"Steps firstBranch\"]")); + wait.until(By.xpath("//*[text()=\"firstBranch\"]")); wait.until(By.cssSelector(".btn.inputStepSubmit")).click(); // and clicking on the unselected node will yield us the second branch wait.until(By.xpath("//*[contains(@class, 'pipeline-node')][3]")).click(); - wait.until(By.xpath("//*[text()=\"Steps secondBranch\"]")); + wait.until(By.xpath("//*[text()=\"secondBranch\"]")); wait.until(By.cssSelector(".btn.inputStepSubmit")).click(); } From 73ab934b4547cc5d24fc4a4d688fc5bfe1cce6c6 Mon Sep 17 00:00:00 2001 From: Nicolae Pascu Date: Thu, 19 Oct 2017 11:57:00 +1100 Subject: [PATCH 07/10] revert test changes that were commited by mistake --- .../main/java/io/jenkins/blueocean/BOJUnitTest.java | 10 ++++++---- 1 file changed, 6 insertions(+), 4 deletions(-) diff --git a/acceptance-tests/runner/runtime/src/main/java/io/jenkins/blueocean/BOJUnitTest.java b/acceptance-tests/runner/runtime/src/main/java/io/jenkins/blueocean/BOJUnitTest.java index 87fdc5a996e..59188f7d258 100644 --- a/acceptance-tests/runner/runtime/src/main/java/io/jenkins/blueocean/BOJUnitTest.java +++ b/acceptance-tests/runner/runtime/src/main/java/io/jenkins/blueocean/BOJUnitTest.java @@ -54,14 +54,16 @@ protected String getJenkinsUrl() { jenkinsUrl = jenkinsUrl.replace("127.0.0.1", host); jenkinsUrl = jenkinsUrl.replace("localhost", host); } else { - - String ip = "172.17.0.1"; + try { + String ip = InetAddress.getLocalHost().getHostAddress(); jenkinsUrl = jenkinsUrl.replace("127.0.0.1", ip); jenkinsUrl = jenkinsUrl.replace("localhost", ip); - + } catch (UnknownHostException e) { + + } } return jenkinsUrl; } -} +} \ No newline at end of file From 0d293f407f7c832c3a4d31a82eab3a26f7c46550 Mon Sep 17 00:00:00 2001 From: Nicolae Pascu Date: Thu, 19 Oct 2017 11:57:52 +1100 Subject: [PATCH 08/10] revert test changes that were commited by mistake --- .../runtime/src/main/java/io/jenkins/blueocean/BOJUnitTest.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/acceptance-tests/runner/runtime/src/main/java/io/jenkins/blueocean/BOJUnitTest.java b/acceptance-tests/runner/runtime/src/main/java/io/jenkins/blueocean/BOJUnitTest.java index 59188f7d258..61456b767ff 100644 --- a/acceptance-tests/runner/runtime/src/main/java/io/jenkins/blueocean/BOJUnitTest.java +++ b/acceptance-tests/runner/runtime/src/main/java/io/jenkins/blueocean/BOJUnitTest.java @@ -66,4 +66,4 @@ protected String getJenkinsUrl() { return jenkinsUrl; } -} \ No newline at end of file +} From 317485d83444f39509ffba306d37e2cad298ef48 Mon Sep 17 00:00:00 2001 From: Nicolae Pascu Date: Thu, 19 Oct 2017 13:56:19 +1100 Subject: [PATCH 09/10] add spaces between stages name and / char --- .../src/main/js/components/karaoke/components/Pipeline.jsx | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/blueocean-dashboard/src/main/js/components/karaoke/components/Pipeline.jsx b/blueocean-dashboard/src/main/js/components/karaoke/components/Pipeline.jsx index d175b9040ab..c61e808e098 100644 --- a/blueocean-dashboard/src/main/js/components/karaoke/components/Pipeline.jsx +++ b/blueocean-dashboard/src/main/js/components/karaoke/components/Pipeline.jsx @@ -233,7 +233,7 @@ export default class Pipeline extends Component { let title = this.pager.nodes !== undefined ? this.pager.currentNode.displayName : ''; - title = stepName ? `${stepName}/${title}` : title; + title = stepName ? `${stepName} / ${title}` : title; // JENKINS-40526 node can provide logs only related to that node const logUrl = this.pager.nodes !== undefined ? augmenter.getNodesLogUrl(this.pager.currentNode) : augmenter.generalLogUrl; From 80627dcb6345c5abbf3b5fb849f25b6bc93d0aac Mon Sep 17 00:00:00 2001 From: Nicolae Pascu Date: Thu, 26 Oct 2017 13:59:52 +1100 Subject: [PATCH 10/10] implement PR suggestion --- blueocean-dashboard/src/main/js/components/PipelineRunGraph.jsx | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/blueocean-dashboard/src/main/js/components/PipelineRunGraph.jsx b/blueocean-dashboard/src/main/js/components/PipelineRunGraph.jsx index 324614d22a6..26355bdba60 100644 --- a/blueocean-dashboard/src/main/js/components/PipelineRunGraph.jsx +++ b/blueocean-dashboard/src/main/js/components/PipelineRunGraph.jsx @@ -73,7 +73,7 @@ function convertJenkinsNodeDetails(jenkinsNode, isCompleted, skewMillis = 0) { } const i18nDuration = timeManager.format(harmonized.durationInMillis, translate('common.date.duration.hint.format', { defaultValue: 'M [month], d [days], h[h], m[m], s[s]' })); - const title = state !== 'running' ? translate(`common.state.${state}`, { 0: i18nDuration }) : ''; + const title = state === 'running' ? '' : translate(`common.state.${state}`, { 0: i18nDuration }); const converted = { name: jenkinsNode.displayName,