提交 5a20645d 编写于 作者: LinuxSuRen's avatar LinuxSuRen

Auto commit by hugo-plugin.

上级 1302b26c
......@@ -39,7 +39,7 @@
<meta property="og:type" content="website" />
<meta property="og:url" content="https://jenkins-zh.cn/" />
<meta property="og:updated_time" content="2019-08-14T00:00:00&#43;00:00"/>
<meta property="og:updated_time" content="2019-08-15T00:00:00&#43;00:00"/>
<meta itemprop="name" content="Jenkins 中文社区">
<meta itemprop="description" content="">
......@@ -1839,8 +1839,8 @@ RU5ErkJggg==" />
<a href="/event/beijing-2019-07-27/" class="tile lazyload cover dib f4 ml1 mr4 bg-black relative mw-100 shadow-5">
<img width="400px" height="200px" src="/images/meetup/ci-cd.jpeg"></img>
<a href="/event/shanghai-2019-09/" class="tile lazyload cover dib f4 ml1 mr4 bg-black relative mw-100 shadow-5">
<img width="400px" height="200px" src="/images/meetup/shanghai.jpeg"></img>
</a>
......@@ -1853,18 +1853,18 @@ RU5ErkJggg==" />
<a href="/event/beijing-2019-06-22/" class="tile lazyload cover dib f4 ml1 mr4 bg-black relative mw-100 shadow-5">
<img width="400px" height="200px" src="/images/meetup/ci-cd.jpeg"></img>
</a>
<a href="/event/beijing-2019-07-27/" class="tile lazyload cover dib f4 ml1 mr4 bg-black relative mw-100 shadow-5">
<img width="400px" height="200px" src="/images/meetup/ci-cd.jpeg"></img>
</a>
<a href="/event/shanghai-2019-09/" class="tile lazyload cover dib f4 ml1 mr4 bg-black relative mw-100 shadow-5">
<img width="400px" height="200px" src="/images/meetup/shanghai.jpeg"></img>
<a href="/event/beijing-2019-06-22/" class="tile lazyload cover dib f4 ml1 mr4 bg-black relative mw-100 shadow-5">
<img width="400px" height="200px" src="/images/meetup/ci-cd.jpeg"></img>
</a>
......
......@@ -12,6 +12,19 @@
"original": "",
"poster": ""
},
{
"uri": "https://jenkins-zh.cn/wechat/articles/2019/08/2019-08-15-jenkins-pipeline-stage-result-visualization-improvements/",
"title": "Jenkins 可视化阶段视图的改进",
"type": "wechat",
"date": "2019-08-15 00:00:00 +0000 UTC",
"tags": ["pipeline", "blueocean"],
"description": "流水线除了成功或失败以外,还有一种介于两者之间的状态",
"content": " 最近发布了的一些变更给了流水线编辑者新的工具以改善在 Blue Ocean 中的流水线可视化,有一个备受瞩目关注的工单JENKINS-39203,这会导致当流水线的构建结果为不稳定时所有的阶段都被设置为不稳定的。这个缺陷导致无法快速地识别为什么构建是不稳定的,使得用户必须查看完整的日志和 Jenkinsfile 才能弄明白究竟发生了什么。\n为了修复这个问题,我们引入了一个新的流水线 API 用于为单个流水线步骤添加额外的结果信息。像 Blue Ocean 这样的可视化工具在决定阶段如何显示时会使用到这新的 API。像 junit 这样的步骤只能设置整个构建结果,现在可以通过新的 API 设置步骤级别的结果信息。我们创建了新的步骤 unstable 和 warnError,这样流水线编辑者在更复杂的场景下仍然可以利用这个新的 API。\n该问题涉及到的重要的修复包含在如下的插件中,它们都需要 Jenkins 2.138.4 以及更新的版本:\n Pipeline: API 2.34 Pipeline: Basic Steps 2.18 (需要同步更新到 Pipeline: Groovy 2.70) Pipeline: Graph Analysis 1.10 Pipeline: Declarative 1.3.9 Blue Ocean 1.17.0 这里是一条使用了 unstable 步骤的流水线在 Blue Ocean 中的截图,只会把失败的阶段标识为不稳定的:\n例子 这里给出一些如何在你的流水线中使用该特性的示例:\n 使用新的步骤 warnError 用于捕获错误,并把构建和阶段标记为不稳定的。 warnError 只需要一个 字符串 的参数,用于当捕获到错误时以日志的形式输出。当 warnError 捕获到一个错误时,它会记录该消息以及错误,并设置构建和阶段的结果为不稳定的。效果如下: warnError('Script failed!') { sh('false') } 使用新的步骤 unstable 设置构建和阶段结果为不稳定的。可以使用该步骤直接替换 currentBuild.result = 'UNSTABLE',在 warnError 不够灵活时这会比较有用。步骤 unstable 只需要一个 字符串 参数,当该步骤运行时会作为消息。使用的方法如下: try { sh('false') } catch (ex) { unstable('Script failed!') } JUnit Plugin: 更新到 1.28 或者更高的版本,使得步骤 junit 可以直接把该阶段设置为不稳定的。 Warnings Next Generation Plugin: 更新到 5.2.0 或者更高的版本,使得步骤 publishIssues 和 recordIssues 可以直接把该阶段设置为不稳定的。 其他插件: 如果你的流水线被其他插件中的步骤标记为不稳定的,请(在检查没有重复项后)给该组件提交一个新的 issue,清晰地描述哪个步骤是有问题的,以及发生问题的环境,并添加链接到该文章的开发者区域,以便维护者了解如何才能解决该问题。 局限 如果你不迁移到 unstable 或 warnError 步骤,或不升级插件到集成来新 API 的情况下设置构建状态,那么即使构建是不稳定的,Blue Ocean 也不会把任何阶段显示为不稳定的。 即使在这些变化后,currentBuild.result 继续只会覆盖构建状态。不幸的是,由于 currentBuild 是作为全局变量而实现的,因此,无法让它设置步骤或者阶段级别的结果,这意味这它没有任何步骤级别的上下文可以使用到新的 API。 Pipeline Stage View Plugin 尚未升级到使用这个新的 API,因此,这些变更不会在它提供的可视化中得到体现。 历史 Jenkins 流水线步骤可以以两种方式完成:成功并返回一个结果(可能为 null),或者是失败的,并抛出一个异常。当步骤失败并抛出异常时,该异常会贯穿整个流水线,直到有其他的步骤或者 Groovy 代码捕获,或者它到达流水线的顶层并导致流水线失败。基于抛出的异常的不同类型,流水线最终的结果可能不是失败(例如:某些情况下是被终止的)。基于异常传播的方式,像 Blue Ocean 这样的工具可以轻松地识别哪些步骤(以及阶段)是失败的。\n为了能够让流水线能够与相应的 Jenkins API 交互,对于流水线构建来说,可以在构建期间修改构建结果也是有必要的。对于其他的,这使得流水线可以使用构建步骤以及原先出自于自由风格的任务中的项目。\n在一些情况下,一个流水线步骤需要能够成功地完成,以便流水线可以继续正常执行,但对此而言能够标记有某种错误发生,因此,在可视化时能够识别到发生错误的步骤,即使没有彻底失败。比较好的一个例子就是 junit 步骤。该步骤关注特定的测试结果,如果有任何错误,会把整个构建结果标记为不稳定的。这种行为对类似 BlueOcean 的可视化工具而言是有问题的,因为该步骤是成功的,而且无法通过编程的方式覆盖于该步骤相关的最终结果。\n再次查看下 JENKINS-39203,我们看到关于可视化有两项基本的选项。因为有的步骤导致构建变成不稳定的,设置总体的构建结果是不稳定的,或者所有的步骤都成功完成来也展示为不稳定的;或者由于我们没有办法把特定步骤相关的构建结果作设置,它们可能显示为成功的。最后,选择了第一个选项。\n为了解决该问题,部分用户尝试通过抛出异常并在阶段中增加 try/catch 这样的代码块用于处理异常,这样 Blue Ocean 能够借助这些异常来标记步骤和阶段的结果为期望的状态,而且,捕获异常后,流水线可以继续正常执行。这种方式不容易理解,脆弱,而且无法在申明式的流水线中使用。\n开发者 如果你是一个插件的开发者,并在集成流水线时使用了步骤,想要利用这个新的 API 的话,你的步骤就可以给出一个非成功的结果,而不是抛出异常。请查看 Jenkins 开发者邮件列表中的这个帖子,如果你遇到任何问题了,可以在那里提问。\n",
"auhtor": "dwnusbaum",
"translator": "linuxsuren",
"original": "https://jenkins.io/blog/2019/07/05/jenkins-pipeline-stage-result-visualization-improvements/",
"poster": "./superhero.png"
},
{
"uri": "https://jenkins-zh.cn/wechat/articles/2019/08/2019-08-14-continuous-testing-what-why-and-how/",
"title": "持续测试的那些事",
......@@ -1403,6 +1416,19 @@
"original": "",
"poster": ""
},
{
"uri": "https://jenkins-zh.cn/tags/blueocean/",
"title": "Blueocean",
"type": "tags",
"date": "2019-08-15 00:00:00 +0000 UTC",
"tags": [],
"description": "",
"content": "",
"auhtor": "",
"translator": "",
"original": "",
"poster": ""
},
{
"uri": "https://jenkins-zh.cn/categories/",
"title": "Categories",
......@@ -1914,7 +1940,7 @@
"uri": "https://jenkins-zh.cn/",
"title": "Jenkins 中文社区",
"type": "page",
"date": "2019-08-14 00:00:00 +0000 UTC",
"date": "2019-08-15 00:00:00 +0000 UTC",
"tags": [],
"description": "",
"content": "",
......@@ -2213,7 +2239,7 @@
"uri": "https://jenkins-zh.cn/tags/pipeline/",
"title": "Pipeline",
"type": "tags",
"date": "2019-08-05 00:00:00 +0000 UTC",
"date": "2019-08-15 00:00:00 +0000 UTC",
"tags": [],
"description": "",
"content": "",
......@@ -2486,7 +2512,7 @@
"uri": "https://jenkins-zh.cn/wechat/",
"title": "Wechats",
"type": "wechat",
"date": "2019-08-14 00:00:00 +0000 UTC",
"date": "2019-08-15 00:00:00 +0000 UTC",
"tags": [],
"description": "",
"content": "",
......
......@@ -6,7 +6,7 @@
<description>Recent content on Jenkins 中文社区</description>
<generator>Hugo -- gohugo.io</generator>
<language>zh-CN</language>
<lastBuildDate>Wed, 14 Aug 2019 00:00:00 +0000</lastBuildDate>
<lastBuildDate>Thu, 15 Aug 2019 00:00:00 +0000</lastBuildDate>
<atom:link href="https://jenkins-zh.cn/index.xml" rel="self" type="application/rss+xml" />
......@@ -24,6 +24,20 @@
GitHub 请您使用同一个 GitHub 账号来与大家交流,不欢迎使用所谓的“小号”。</description>
</item>
<item>
<title>Jenkins 可视化阶段视图的改进</title>
<link>https://jenkins-zh.cn/wechat/articles/2019/08/2019-08-15-jenkins-pipeline-stage-result-visualization-improvements/</link>
<pubDate>Thu, 15 Aug 2019 00:00:00 +0000</pubDate>
<guid>https://jenkins-zh.cn/wechat/articles/2019/08/2019-08-15-jenkins-pipeline-stage-result-visualization-improvements/</guid>
<description>最近发布了的一些变更给了流水线编辑者新的工具以改善在 Blue Ocean 中的流水线可视化,有一个备受瞩目关注的工单JENKINS-39203,这会导致当流水线的构建结果为不稳定时所有的阶段都被设置为不稳定的。这个缺陷导致无法快速地识别为什么构建是不稳定的,使得用户必须查看完整的日志和 Jenkinsfile 才能弄明白究竟发生了什么。
为了修复这个问题,我们引入了一个新的流水线 API 用于为单个流水线步骤添加额外的结果信息。像 Blue Ocean 这样的可视化工具在决定阶段如何显示时会使用到这新的 API。像 junit 这样的步骤只能设置整个构建结果,现在可以通过新的 API 设置步骤级别的结果信息。我们创建了新的步骤 unstable 和 warnError,这样流水线编辑者在更复杂的场景下仍然可以利用这个新的 API。
该问题涉及到的重要的修复包含在如下的插件中,它们都需要 Jenkins 2.138.4 以及更新的版本:
Pipeline: API 2.34 Pipeline: Basic Steps 2.18 (需要同步更新到 Pipeline: Groovy 2.70) Pipeline: Graph Analysis 1.10 Pipeline: Declarative 1.3.9 Blue Ocean 1.17.0 这里是一条使用了 unstable 步骤的流水线在 Blue Ocean 中的截图,只会把失败的阶段标识为不稳定的:
例子 这里给出一些如何在你的流水线中使用该特性的示例:
使用新的步骤 warnError 用于捕获错误,并把构建和阶段标记为不稳定的。 warnError 只需要一个 字符串 的参数,用于当捕获到错误时以日志的形式输出。当 warnError 捕获到一个错误时,它会记录该消息以及错误,并设置构建和阶段的结果为不稳定的。效果如下: warnError(&#39;Script failed!&#39;) { sh(&#39;false&#39;) } 使用新的步骤 unstable 设置构建和阶段结果为不稳定的。可以使用该步骤直接替换 currentBuild.</description>
</item>
<item>
<title>持续测试的那些事</title>
<link>https://jenkins-zh.cn/wechat/articles/2019/08/2019-08-14-continuous-testing-what-why-and-how/</link>
......
......@@ -6,6 +6,11 @@
<loc>https://jenkins-zh.cn/about/code-of-conduct/</loc>
</url>
<url>
<loc>https://jenkins-zh.cn/wechat/articles/2019/08/2019-08-15-jenkins-pipeline-stage-result-visualization-improvements/</loc>
<lastmod>2019-08-15T00:00:00+00:00</lastmod>
</url>
<url>
<loc>https://jenkins-zh.cn/wechat/articles/2019/08/2019-08-14-continuous-testing-what-why-and-how/</loc>
<lastmod>2019-08-14T00:00:00+00:00</lastmod>
......@@ -517,6 +522,12 @@
<priority>0</priority>
</url>
<url>
<loc>https://jenkins-zh.cn/tags/blueocean/</loc>
<lastmod>2019-08-15T00:00:00+00:00</lastmod>
<priority>0</priority>
</url>
<url>
<loc>https://jenkins-zh.cn/categories/</loc>
<priority>0</priority>
......@@ -739,7 +750,7 @@
<url>
<loc>https://jenkins-zh.cn/</loc>
<lastmod>2019-08-14T00:00:00+00:00</lastmod>
<lastmod>2019-08-15T00:00:00+00:00</lastmod>
<priority>0</priority>
</url>
......@@ -864,7 +875,7 @@
<url>
<loc>https://jenkins-zh.cn/tags/pipeline/</loc>
<lastmod>2019-08-05T00:00:00+00:00</lastmod>
<lastmod>2019-08-15T00:00:00+00:00</lastmod>
<priority>0</priority>
</url>
......@@ -984,7 +995,7 @@
<url>
<loc>https://jenkins-zh.cn/wechat/</loc>
<lastmod>2019-08-14T00:00:00+00:00</lastmod>
<lastmod>2019-08-15T00:00:00+00:00</lastmod>
<priority>0</priority>
</url>
......
<!DOCTYPE html>
<html class="no-js" lang="zh-CN">
<head>
<meta charset="utf-8">
<link rel="preload" href="https://jenkins-zh.cn/files/muli-latin-200.woff2" as="font" type="font/woff2" crossorigin>
<link rel="preload" href="https://jenkins-zh.cn/files/muli-latin-400.woff2" as="font" type="font/woff2" crossorigin>
<link rel="preload" href="https://jenkins-zh.cn/files/muli-latin-800.woff2" as="font" type="font/woff2" crossorigin>
<meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1">
<title>Blueocean - Jenkins 中文社区</title>
<meta name="HandheldFriendly" content="True">
<meta name="MobileOptimized" content="320">
<meta name="description" content="共建开放、包容、活跃的 Jenkins 社区">
<meta name="keywords" content="Jenkins,Jenkins中文社区,Jenkins官方公众号,持续集成,持续交付,开源社区,DevOps">
<meta name="viewport" content="width=device-width,minimum-scale=1">
<meta name="generator" content="Hugo 0.54.0" />
<META NAME="ROBOTS" CONTENT="INDEX, FOLLOW">
<link rel="alternate" type="application/rss&#43;xml" href="https://jenkins-zh.cn/tags/blueocean/index.xml">
<link href='/dist/main.css' rel='stylesheet' type="text/css" /><style>
img.avatar {
width: 32px;
display: inline;
}
</style>
<meta property="og:title" content="Blueocean" />
<meta property="og:description" content="" />
<meta property="og:type" content="website" />
<meta property="og:url" content="https://jenkins-zh.cn/tags/blueocean/" />
<meta property="og:updated_time" content="2019-08-15T00:00:00&#43;00:00"/>
<meta itemprop="name" content="Blueocean">
<meta itemprop="description" content="">
<meta name="twitter:card" content="summary"/>
<meta name="twitter:title" content="Blueocean"/>
<meta name="twitter:description" content=""/>
<script async src="https://www.googletagmanager.com/gtag/js?id=UA-4216293-5"></script>
<script>
window.dataLayer = window.dataLayer || [];
function gtag(){dataLayer.push(arguments);}
gtag('js', new Date());
gtag('config', 'UA-4216293-5');
var trackOutboundLink = function(id, url) {
console.log("track:", id, url)
gtag('event', 'click', {
'event_category': 'outbound',
'event_label': id,
'transport_type': 'beacon',
'event_callback': function(){document.location = url;}
});
}
</script>
</head>
<body class="ma0 sans-serif bg-primary-color-light">
<nav class="bg-primary-color-dark pv4 w-100" role="navigation">
<div class="center flex-ns flex-wrap items-center justify-start mw9">
<h1 class="dim f3 lh-solid ml0-ns mr0 mr4-l mv0 pl3 pl4-ns">
<a href="https://jenkins-zh.cn/" class="link white">
Jenkins 中文社区
</a>
</h1>
<ul class="list ma0 pa0 dn dib-l">
<li class="f5 dib mr4" role="menuitem">
<a href="/wechat/" class="dim link light-silver"
>
博客
</a>
</li>
<li class="f5 dib mr4" role="menuitem">
<a href="/tutorial/" class="dim link light-silver"
>
教程
</a>
</li>
<li class="f5 dib mr4" role="menuitem">
<a href="/event/" class="dim link light-silver"
>
活动
</a>
</li>
<li class="f5 dib mr4" role="menuitem">
<a href="/partner/" class="dim link light-silver"
>
合作伙伴
</a>
</li>
<li class="f5 dib mr4" role="menuitem">
<a href="/about/" class="dim link light-silver"
>
关于我们
</a>
</li>
<li class="f5 dib mr4" role="menuitem">
<a href="http://jenkins.io/zh" class="dim link light-silver"
target="_blank">
Jenkins 官网
<svg version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" width="10" height="10" viewBox="0 0 32 32" class="fill-current v-base" aria-label="External Link">
<path d="M25.152 16.576v5.696q0 2.144-1.504 3.648t-3.648 1.504h-14.848q-2.144 0-3.648-1.504t-1.504-3.648v-14.848q0-2.112 1.504-3.616t3.648-1.536h12.576q0.224 0 0.384 0.16t0.16 0.416v1.152q0 0.256-0.16 0.416t-0.384 0.16h-12.576q-1.184 0-2.016 0.832t-0.864 2.016v14.848q0 1.184 0.864 2.016t2.016 0.864h14.848q1.184 0 2.016-0.864t0.832-2.016v-5.696q0-0.256 0.16-0.416t0.416-0.16h1.152q0.256 0 0.416 0.16t0.16 0.416zM32 1.152v9.12q0 0.48-0.352 0.8t-0.8 0.352-0.8-0.352l-3.136-3.136-11.648 11.648q-0.16 0.192-0.416 0.192t-0.384-0.192l-2.048-2.048q-0.192-0.16-0.192-0.384t0.192-0.416l11.648-11.648-3.136-3.136q-0.352-0.352-0.352-0.8t0.352-0.8 0.8-0.352h9.12q0.48 0 0.8 0.352t0.352 0.8z"></path>
</svg>
</a>
</li>
</ul>
<div class="db dib-ns pl3"><form id="site-search-form" action="" role="search">
<fieldset class="bn ma0 pa0">
<label class="clip" for="email-address">Search</label>
<input type="search" id="search-input" class="needs-js bg-left bg-transparent bn f5 input-reset lh-solid mt3 mt0-ns pl4 pv2 w5 white"
placeholder="搜索文档" type="text"
name="email-address" value="" style="background-image:url('/images/icon-search.png');background-size:16px 16px;">
</fieldset>
</form>
</div>
<div class="list ma0 pa0 dn dib-l"></div>
<span class="absolute mt1 mt2-l pr3 right-0 top-0">
<a class="github-button needs-js link primary-color-dark" href="https://github.com/jenkins-zh/jenkins-zh/" data-size="large" data-show-count="false" aria-label="Star Jenkins WeChat GitHub">Star</a>
</span>
</div>
</nav>
<main role="main" class="content-with-sidebar min-vh-100 pb7 pb0-ns">
<div class="w-100 ph4 pb5 pb6-ns pt1 mt4 pt3-ns">
<div class="flex">
<div class="w-100 w-80-l ph0 ph4-l">
<article class="w-100 nested-copy-line-height nested-links nested-img">
<h1 class="primary-color-dark f2">
Tag: Blueocean
</h1>
<div class=" mid-gray f5 f4-l">
</div>
</article>
<div class="flex flex-wrap">
<section class="flex-ns flex-wrap justify-between w-100">
<div class="relative weight-0" style="max-width: 350px">
<div class="bg-white mb2 pa3 pa4-l gray">
<h1 class="near-black f3">
<a href="/wechat/articles/2019/08/2019-08-15-jenkins-pipeline-stage-result-visualization-improvements/" class="link primary-color dim">Jenkins 可视化阶段视图的改进</a>
</h1>
<div class="lh-copy links">
流水线除了成功或失败以外,还有一种介于两者之间的状态
<a href="/wechat/articles/2019/08/2019-08-15-jenkins-pipeline-stage-result-visualization-improvements/" class="f6 mt2 db link primary-color dim">
查看更多 &raquo;
</a>
</div>
</div>
</div>
</section>
</div>
</div>
</div>
</div>
</main>
<footer class="bg-primary-color-dark ph4-ns pt4 relative w-100" role="contentinfo">
<div class="center flex-ns flex-wrap justify-between mw9 w-90">
<div class="pb3 pt4 w-100 w-50-ns">
<div class="b f3 light-gray mb3 nested-links tc">
<a href="https://github.com/jenkins-zh/jenkins-zh/graphs/contributors" target="_blank" class="link">Jenkins 社区贡献者</a> 维护<br/>
</div>
<ul class="center f6 list ma0 mv3 pa0 tc" style="display:none"><li class="dib mr3"><a href="https://github.com/jenkins-zh/jenkins-zh/issues/new" class="dim link light-gray pv2">File an Issue</a></li></ul>
<ul class="center f6 list ma0 mv4 pa0 tc">
<li class="dib mr3">
<a href="https://twitter.com/jenkinsci" target="_blank" class="dim link light-gray pv2">Twitter</a>
</li>
<li class="dib mr3">
<a href="https://www.youtube.com/channel/UC63xz3pq26BBgwB3cnwCoqQ" target="_blank" class="dim link light-gray pv2">YouTube</a>
</li>
<li class="dib mr3">
<a href="https://space.bilibili.com/433584098" target="_blank" class="dim link light-gray pv2">哔哩哔哩</a>
</li>
</ul>
</div>
<div>
<div style="color: #ffffff; display: inline-block; text-align: center; margin-right: 5px; margin-left: 5px;">优酷视频
<div>
<a href="https://i.youku.com/jenkinszh" target="_blank">
<img src="/images/youku-qrcode.png" with="100" height="100">
</a>
</div>
</div>
<div style="color: #ffffff; display: inline-block; text-align: center; margin-right: 5px; margin-left: 5px;">微信公众号
<div>
<a href="https://mp.weixin.qq.com/s/vifdduC3kRGSIMpyL03yVA" target="_blank">
<img src="https://jenkins.io/images/jenkins-wechat.png" with="100" height="100">
</a>
</div>
</div>
</div>
</div>
<div class="f7 gray mb5 mb0-ns ph3 w-100" style="display:none"> 
<p class="dib mr4">Jenkins&reg; is a registered trademark of <a href="https://www.spi-inc.org/" class="link">Software in the Public Interest, Inc.</a></p>
<p class="dib">Copyright 2018–2019 the original authors.</p>
</div>
<div class="bg-primary-color-dark bottom-0 left-0 right-0 dn-l fixed pb3 ph3 w-100"><div class="globalmenu mobilemenu pb3 dn">
<ul class="list hidden dib ph0 ma0 scrolling-touch tc">
<li class="tl dib ma0 hover-bg-black w-100">
<a href="/wechat/" class="ttu f6 link primary-color-light overflow hover-white db brand-font ma0 w-100 pv3 ph4">
博客
</a>
</li>
<li class="tl dib ma0 hover-bg-black w-100">
<a href="/tutorial/" class="ttu f6 link primary-color-light overflow hover-white db brand-font ma0 w-100 pv3 ph4">
教程
</a>
</li>
<li class="tl dib ma0 hover-bg-black w-100">
<a href="/event/" class="ttu f6 link primary-color-light overflow hover-white db brand-font ma0 w-100 pv3 ph4">
活动
</a>
</li>
<li class="tl dib ma0 hover-bg-black w-100">
<a href="/partner/" class="ttu f6 link primary-color-light overflow hover-white db brand-font ma0 w-100 pv3 ph4">
合作伙伴
</a>
</li>
<li class="tl dib ma0 hover-bg-black w-100">
<a href="/about/" class="ttu f6 link primary-color-light overflow hover-white db brand-font ma0 w-100 pv3 ph4">
关于我们
</a>
</li>
<li class="tl dib ma0 hover-bg-black w-100">
<a href="http://jenkins.io/zh" class="ttu f6 link primary-color-light overflow hover-white db brand-font ma0 w-100 pv3 ph4">
Jenkins 官网
</a>
</li>
</ul>
</div>
<div class="docsmenu mobilemenu pb3 dn">
<ul class="list dib ph0 ma0 scrolling-touch tc">
</ul>
</div>
<div class="flex dn-l justify-between">
<button class="js-toggle flex-auto dib dn-l f6 tc db mt4-ns ph3 pv2 link mr2 white bg-primary-color-dark hover-bg-primary-color ba b--white-40 w-auto" data-target=".globalmenu">Menu</button>
<button class="js-toggle flex-auto dib dn-l f6 tc db mt4-ns ph3 pv2 link white bg-primary-color-dark hover-bg-primary-color ba b--white-40 w-auto" data-target=".docsmenu">Docs Menu</button>
</div>
</div>
</footer>
<link href="/dist/auto-complete.css" rel="stylesheet">
<script type="text/javascript">
var baseurl = "https:\/\/jenkins-zh.cn\/";
</script>
<script src="/dist/lunr.js"></script>
<script src="/dist/autocomplete.js"></script>
<script src="/dist/jquery-3.2.1.min.js"></script>
<script src="/dist/search.js"></script>
<script async defer src="https://buttons.github.io/buttons.js"></script>
<script>
var _hmt = _hmt || [];
(function() {
var hm = document.createElement("script");
hm.src = "https://hm.baidu.com/hm.js?6db234f713318730f0e5f6a95bdd8d47";
var s = document.getElementsByTagName("script")[0];
s.parentNode.insertBefore(hm, s);
})();
</script>
<script>
(function(){
var src = (document.location.protocol == "http:") ? "http://js.passport.qihucdn.com/11.0.1.js?6276dcef5c15f276644151772390c1f9":"https://jspassport.ssl.qhimg.com/11.0.1.js?6276dcef5c15f276644151772390c1f9";
document.write('<script src="' + src + '" id="sozz"><\/script>');
})();
</script>
</body>
</html>
<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
<channel>
<title>Blueocean on Jenkins 中文社区</title>
<link>https://jenkins-zh.cn/tags/blueocean/</link>
<description>Recent content in Blueocean on Jenkins 中文社区</description>
<generator>Hugo -- gohugo.io</generator>
<language>zh-CN</language>
<lastBuildDate>Thu, 15 Aug 2019 00:00:00 +0000</lastBuildDate>
<atom:link href="https://jenkins-zh.cn/tags/blueocean/index.xml" rel="self" type="application/rss+xml" />
<item>
<title>Jenkins 可视化阶段视图的改进</title>
<link>https://jenkins-zh.cn/wechat/articles/2019/08/2019-08-15-jenkins-pipeline-stage-result-visualization-improvements/</link>
<pubDate>Thu, 15 Aug 2019 00:00:00 +0000</pubDate>
<guid>https://jenkins-zh.cn/wechat/articles/2019/08/2019-08-15-jenkins-pipeline-stage-result-visualization-improvements/</guid>
<description>最近发布了的一些变更给了流水线编辑者新的工具以改善在 Blue Ocean 中的流水线可视化,有一个备受瞩目关注的工单JENKINS-39203,这会导致当流水线的构建结果为不稳定时所有的阶段都被设置为不稳定的。这个缺陷导致无法快速地识别为什么构建是不稳定的,使得用户必须查看完整的日志和 Jenkinsfile 才能弄明白究竟发生了什么。
为了修复这个问题,我们引入了一个新的流水线 API 用于为单个流水线步骤添加额外的结果信息。像 Blue Ocean 这样的可视化工具在决定阶段如何显示时会使用到这新的 API。像 junit 这样的步骤只能设置整个构建结果,现在可以通过新的 API 设置步骤级别的结果信息。我们创建了新的步骤 unstable 和 warnError,这样流水线编辑者在更复杂的场景下仍然可以利用这个新的 API。
该问题涉及到的重要的修复包含在如下的插件中,它们都需要 Jenkins 2.138.4 以及更新的版本:
Pipeline: API 2.34 Pipeline: Basic Steps 2.18 (需要同步更新到 Pipeline: Groovy 2.70) Pipeline: Graph Analysis 1.10 Pipeline: Declarative 1.3.9 Blue Ocean 1.17.0 这里是一条使用了 unstable 步骤的流水线在 Blue Ocean 中的截图,只会把失败的阶段标识为不稳定的:
例子 这里给出一些如何在你的流水线中使用该特性的示例:
使用新的步骤 warnError 用于捕获错误,并把构建和阶段标记为不稳定的。 warnError 只需要一个 字符串 的参数,用于当捕获到错误时以日志的形式输出。当 warnError 捕获到一个错误时,它会记录该消息以及错误,并设置构建和阶段的结果为不稳定的。效果如下: warnError(&#39;Script failed!&#39;) { sh(&#39;false&#39;) } 使用新的步骤 unstable 设置构建和阶段结果为不稳定的。可以使用该步骤直接替换 currentBuild.</description>
</item>
</channel>
</rss>
\ No newline at end of file
<!DOCTYPE html><html><head><title>https://jenkins-zh.cn/tags/blueocean/</title><link rel="canonical" href="https://jenkins-zh.cn/tags/blueocean/"/><meta name="robots" content="noindex"><meta charset="utf-8" /><meta http-equiv="refresh" content="0; url=https://jenkins-zh.cn/tags/blueocean/" /></head></html>
\ No newline at end of file
......@@ -279,6 +279,22 @@ var trackOutboundLink = function(id, url) {
</div>
<div class="break-inside-avoid-l nested-copy-line-height mb5">
<h2 class="f3">
<a href="/tags/blueocean" class="link black hover-blue">
blueocean <span class="f6 gray"> &#8599;</span>
</a>
</h2>
<h3>
<a href="https://jenkins-zh.cn/wechat/articles/2019/08/2019-08-15-jenkins-pipeline-stage-result-visualization-improvements/" class="link blue">
Jenkins 可视化阶段视图的改进
</a>
</h3>
</div>
<div class="break-inside-avoid-l nested-copy-line-height mb5">
<h2 class="f3">
<a href="/tags/cd" class="link black hover-blue">
......@@ -1776,6 +1792,12 @@ var trackOutboundLink = function(id, url) {
</a>
</h2>
<h3>
<a href="https://jenkins-zh.cn/wechat/articles/2019/08/2019-08-15-jenkins-pipeline-stage-result-visualization-improvements/" class="link blue">
Jenkins 可视化阶段视图的改进
</a>
</h3>
<h3>
<a href="https://jenkins-zh.cn/wechat/articles/2019/08/2019-08-05-jenkins-multi-branch-pipeline/" class="link blue">
在大型企业里维护多分支流水线
......
......@@ -47,6 +47,15 @@
<description></description>
</item>
<item>
<title>Blueocean</title>
<link>https://jenkins-zh.cn/tags/blueocean/</link>
<pubDate>Thu, 15 Aug 2019 00:00:00 +0000</pubDate>
<guid>https://jenkins-zh.cn/tags/blueocean/</guid>
<description></description>
</item>
<item>
<title>Cd</title>
<link>https://jenkins-zh.cn/tags/cd/</link>
......@@ -500,7 +509,7 @@
<item>
<title>Pipeline</title>
<link>https://jenkins-zh.cn/tags/pipeline/</link>
<pubDate>Mon, 05 Aug 2019 00:00:00 +0000</pubDate>
<pubDate>Thu, 15 Aug 2019 00:00:00 +0000</pubDate>
<guid>https://jenkins-zh.cn/tags/pipeline/</guid>
<description></description>
......
......@@ -38,7 +38,7 @@
<meta property="og:type" content="website" />
<meta property="og:url" content="https://jenkins-zh.cn/tags/pipeline/" />
<meta property="og:updated_time" content="2019-08-05T00:00:00&#43;00:00"/>
<meta property="og:updated_time" content="2019-08-15T00:00:00&#43;00:00"/>
<meta itemprop="name" content="Pipeline">
<meta itemprop="description" content="">
......@@ -210,6 +210,33 @@ var trackOutboundLink = function(id, url) {
<div class="bg-white mb2 pa3 pa4-l gray">
<h1 class="near-black f3">
<a href="/wechat/articles/2019/08/2019-08-15-jenkins-pipeline-stage-result-visualization-improvements/" class="link primary-color dim">Jenkins 可视化阶段视图的改进</a>
</h1>
<div class="lh-copy links">
流水线除了成功或失败以外,还有一种介于两者之间的状态
<a href="/wechat/articles/2019/08/2019-08-15-jenkins-pipeline-stage-result-visualization-improvements/" class="f6 mt2 db link primary-color dim">
查看更多 &raquo;
</a>
</div>
</div>
</div>
<div class="relative weight-0" style="max-width: 350px">
<div class="bg-white mb2 pa3 pa4-l gray">
<h1 class="near-black f3">
<a href="/wechat/articles/2019/08/2019-08-05-jenkins-multi-branch-pipeline/" class="link primary-color dim">在大型企业里维护多分支流水线</a>
</h1>
......
......@@ -6,11 +6,25 @@
<description>Recent content in Pipeline on Jenkins 中文社区</description>
<generator>Hugo -- gohugo.io</generator>
<language>zh-CN</language>
<lastBuildDate>Mon, 05 Aug 2019 00:00:00 +0000</lastBuildDate>
<lastBuildDate>Thu, 15 Aug 2019 00:00:00 +0000</lastBuildDate>
<atom:link href="https://jenkins-zh.cn/tags/pipeline/index.xml" rel="self" type="application/rss+xml" />
<item>
<title>Jenkins 可视化阶段视图的改进</title>
<link>https://jenkins-zh.cn/wechat/articles/2019/08/2019-08-15-jenkins-pipeline-stage-result-visualization-improvements/</link>
<pubDate>Thu, 15 Aug 2019 00:00:00 +0000</pubDate>
<guid>https://jenkins-zh.cn/wechat/articles/2019/08/2019-08-15-jenkins-pipeline-stage-result-visualization-improvements/</guid>
<description>最近发布了的一些变更给了流水线编辑者新的工具以改善在 Blue Ocean 中的流水线可视化,有一个备受瞩目关注的工单JENKINS-39203,这会导致当流水线的构建结果为不稳定时所有的阶段都被设置为不稳定的。这个缺陷导致无法快速地识别为什么构建是不稳定的,使得用户必须查看完整的日志和 Jenkinsfile 才能弄明白究竟发生了什么。
为了修复这个问题,我们引入了一个新的流水线 API 用于为单个流水线步骤添加额外的结果信息。像 Blue Ocean 这样的可视化工具在决定阶段如何显示时会使用到这新的 API。像 junit 这样的步骤只能设置整个构建结果,现在可以通过新的 API 设置步骤级别的结果信息。我们创建了新的步骤 unstable 和 warnError,这样流水线编辑者在更复杂的场景下仍然可以利用这个新的 API。
该问题涉及到的重要的修复包含在如下的插件中,它们都需要 Jenkins 2.138.4 以及更新的版本:
Pipeline: API 2.34 Pipeline: Basic Steps 2.18 (需要同步更新到 Pipeline: Groovy 2.70) Pipeline: Graph Analysis 1.10 Pipeline: Declarative 1.3.9 Blue Ocean 1.17.0 这里是一条使用了 unstable 步骤的流水线在 Blue Ocean 中的截图,只会把失败的阶段标识为不稳定的:
例子 这里给出一些如何在你的流水线中使用该特性的示例:
使用新的步骤 warnError 用于捕获错误,并把构建和阶段标记为不稳定的。 warnError 只需要一个 字符串 的参数,用于当捕获到错误时以日志的形式输出。当 warnError 捕获到一个错误时,它会记录该消息以及错误,并设置构建和阶段的结果为不稳定的。效果如下: warnError(&#39;Script failed!&#39;) { sh(&#39;false&#39;) } 使用新的步骤 unstable 设置构建和阶段结果为不稳定的。可以使用该步骤直接替换 currentBuild.</description>
</item>
<item>
<title>在大型企业里维护多分支流水线</title>
<link>https://jenkins-zh.cn/wechat/articles/2019/08/2019-08-05-jenkins-multi-branch-pipeline/</link>
......
......@@ -38,7 +38,7 @@
<meta property="og:type" content="website" />
<meta property="og:url" content="https://jenkins-zh.cn/tags/pipeline/" />
<meta property="og:updated_time" content="2019-03-13T00:00:00&#43;00:00"/>
<meta property="og:updated_time" content="2019-04-10T00:00:00&#43;00:00"/>
<meta itemprop="name" content="Pipeline">
<meta itemprop="description" content="">
......@@ -210,6 +210,33 @@ var trackOutboundLink = function(id, url) {
<div class="bg-white mb2 pa3 pa4-l gray">
<h1 class="near-black f3">
<a href="/wechat/articles/2019/08/2019-08-15-jenkins-pipeline-stage-result-visualization-improvements/" class="link primary-color dim">Jenkins 可视化阶段视图的改进</a>
</h1>
<div class="lh-copy links">
流水线除了成功或失败以外,还有一种介于两者之间的状态
<a href="/wechat/articles/2019/08/2019-08-15-jenkins-pipeline-stage-result-visualization-improvements/" class="f6 mt2 db link primary-color dim">
查看更多 &raquo;
</a>
</div>
</div>
</div>
<div class="relative weight-0" style="max-width: 350px">
<div class="bg-white mb2 pa3 pa4-l gray">
<h1 class="near-black f3">
<a href="/wechat/articles/2019/08/2019-08-05-jenkins-multi-branch-pipeline/" class="link primary-color dim">在大型企业里维护多分支流水线</a>
</h1>
......
......@@ -208,8 +208,8 @@ var trackOutboundLink = function(id, url) {
<p class="lh-copy measure center mt0 f6 black-60 bio">
Pre-Senior year student, Software Engineering at @Dalian-Maritime-University.
Research &amp;amp; Development intern at @baidu Engineering Effectiveness.
Quasi-Senior year student, Software Engineering at @Dalian-Maritime-University.
Research&amp;amp;Development intern at @baidu Engineering Effectiveness department.
</p>
<a href="https://github.com/arjenzhou" target="_blank" class="link dim v-mid dib">
......
......@@ -208,8 +208,8 @@ var trackOutboundLink = function(id, url) {
<p class="lh-copy measure center mt0 f6 black-60 bio">
Pre-Senior year student, Software Engineering at @Dalian-Maritime-University.
Research &amp;amp; Development intern at @baidu Engineering Effectiveness.
Quasi-Senior year student, Software Engineering at @Dalian-Maritime-University.
Research&amp;amp;Development intern at @baidu Engineering Effectiveness department.
</p>
<a href="https://github.com/arjenzhou" target="_blank" class="link dim v-mid dib">
......
......@@ -653,8 +653,8 @@ f6 ph3 pv1 br2 dib tc ttu mv3 bg-primary-color white hover-bg-green link
<li class="db dib-l mb2 mr3">
<a href="/wechat/articles/2019/08/2019-08-05-jenkins-multi-branch-pipeline/" class="link">
在大型企业里维护多分支流水线
<a href="/wechat/articles/2019/08/2019-08-15-jenkins-pipeline-stage-result-visualization-improvements/" class="link">
Jenkins 可视化阶段视图的改进
</a>
</li>
......@@ -665,6 +665,15 @@ f6 ph3 pv1 br2 dib tc ttu mv3 bg-primary-color white hover-bg-green link
</li>
<li class="db dib-l mb2 mr3">
<a href="/wechat/articles/2019/08/2019-08-05-jenkins-multi-branch-pipeline/" class="link">
在大型企业里维护多分支流水线
</a>
</li>
<li class="db dib-l mb2 mr3">
<a href="/wechat/articles/2019/07/2019-07-31-pipeline-config-history-plugin/" class="link">
Jenkins 流水线配置历史插件介绍
......
......@@ -208,8 +208,8 @@ var trackOutboundLink = function(id, url) {
<p class="lh-copy measure center mt0 f6 black-60 bio">
Pre-Senior year student, Software Engineering at @Dalian-Maritime-University.
Research &amp;amp; Development intern at @baidu Engineering Effectiveness.
Quasi-Senior year student, Software Engineering at @Dalian-Maritime-University.
Research&amp;amp;Development intern at @baidu Engineering Effectiveness department.
</p>
<a href="https://github.com/arjenzhou" target="_blank" class="link dim v-mid dib">
......
......@@ -366,10 +366,10 @@ var trackOutboundLink = function(id, url) {
<li><a href="/wechat/articles/2019/07/2019-07-29-leveraging-jenkins-on-kubernetes/">在 Kubernetes 上使用 Jenkins </a></li>
<li><a href="/wechat/articles/2019/07/2019-07-10-phase-1-multibranch-pipeline-support-for-gitlab/">多分支流水线任务对 GitLab SCM 的支持</a></li>
<li><a href="/wechat/articles/2019/07/2019-07-04-performance-testing-jenkins/">Jenkins 插件的微基准测试框架</a></li>
<li><a href="/wechat/articles/2019/07/2019-07-10-phase-1-multibranch-pipeline-support-for-gitlab/">多分支流水线任务对 GitLab SCM 的支持</a></li>
</ul>
</div>
......
......@@ -324,6 +324,8 @@ var trackOutboundLink = function(id, url) {
<li><a href="/wechat/articles/2019/07/2019-07-14-jenkins-pipeline-workshop/">持续交付落地实践工作坊</a></li>
<li><a href="/wechat/articles/2019/08/2019-08-15-jenkins-pipeline-stage-result-visualization-improvements/">Jenkins 可视化阶段视图的改进</a></li>
<li><a href="/wechat/articles/2019/07/2019-07-15-let-s-celebrate-java-11-support/">让我们庆祝 Jenkins 对 Java 11的支持</a></li>
<li><a href="/wechat/articles/2019/07/2019-07-08-wechat-answer-1/">Jenkins 中文社区技术交流微信群问题集之一</a></li>
......
......@@ -506,6 +506,8 @@ var trackOutboundLink = function(id, url) {
<h2>参考</h2>
<ul>
<li><a href="/wechat/articles/2019/08/2019-08-15-jenkins-pipeline-stage-result-visualization-improvements/">Jenkins 可视化阶段视图的改进</a></li>
<li><a href="/wechat/articles/2019/07/2019-07-15-let-s-celebrate-java-11-support/">让我们庆祝 Jenkins 对 Java 11的支持</a></li>
<li><a href="/wechat/articles/2019/07/2019-07-14-jenkins-pipeline-workshop/">持续交付落地实践工作坊</a></li>
......@@ -559,8 +561,8 @@ f6 ph3 pv1 br2 dib tc ttu mv3 bg-primary-color white hover-bg-green link
<li class="db dib-l mb2 mr3">
<a href="/wechat/articles/2019/08/2019-08-05-jenkins-multi-branch-pipeline/" class="link">
在大型企业里维护多分支流水线
<a href="/wechat/articles/2019/08/2019-08-15-jenkins-pipeline-stage-result-visualization-improvements/" class="link">
Jenkins 可视化阶段视图的改进
</a>
</li>
......@@ -571,6 +573,15 @@ f6 ph3 pv1 br2 dib tc ttu mv3 bg-primary-color white hover-bg-green link
</li>
<li class="db dib-l mb2 mr3">
<a href="/wechat/articles/2019/08/2019-08-05-jenkins-multi-branch-pipeline/" class="link">
在大型企业里维护多分支流水线
</a>
</li>
<li class="db dib-l mb2 mr3">
<a href="/wechat/articles/2019/07/2019-07-31-pipeline-config-history-plugin/" class="link">
Jenkins 流水线配置历史插件介绍
......
......@@ -350,6 +350,8 @@ var trackOutboundLink = function(id, url) {
<li><a href="/wechat/articles/2019/06/2019-06-10-jenkins-pipeline-workshop/">还在苦恼不会写 Jenkins 流水线?来场工作坊!</a></li>
<li><a href="/wechat/articles/2019/08/2019-08-15-jenkins-pipeline-stage-result-visualization-improvements/">Jenkins 可视化阶段视图的改进</a></li>
<li><a href="/wechat/articles/2019/07/2019-07-15-let-s-celebrate-java-11-support/">让我们庆祝 Jenkins 对 Java 11的支持</a></li>
<li><a href="/wechat/articles/2019/07/2019-07-08-wechat-answer-1/">Jenkins 中文社区技术交流微信群问题集之一</a></li>
......
......@@ -414,6 +414,8 @@ Wadeck Follonier</p>
<h2>参考</h2>
<ul>
<li><a href="/wechat/articles/2019/08/2019-08-15-jenkins-pipeline-stage-result-visualization-improvements/">Jenkins 可视化阶段视图的改进</a></li>
<li><a href="/wechat/articles/2019/07/2019-07-14-jenkins-pipeline-workshop/">持续交付落地实践工作坊</a></li>
<li><a href="/wechat/articles/2019/07/2019-07-08-wechat-answer-1/">Jenkins 中文社区技术交流微信群问题集之一</a></li>
......
......@@ -380,10 +380,10 @@ var trackOutboundLink = function(id, url) {
<li><a href="/wechat/articles/2019/08/2019-08-05-jenkins-multi-branch-pipeline/">在大型企业里维护多分支流水线</a></li>
<li><a href="/wechat/articles/2019/07/2019-07-04-performance-testing-jenkins/">Jenkins 插件的微基准测试框架</a></li>
<li><a href="/wechat/articles/2019/07/2019-07-10-phase-1-multibranch-pipeline-support-for-gitlab/">多分支流水线任务对 GitLab SCM 的支持</a></li>
<li><a href="/wechat/articles/2019/07/2019-07-04-performance-testing-jenkins/">Jenkins 插件的微基准测试框架</a></li>
<li><a href="/wechat/articles/2019/05/2019-05-27-docs-sig-announcement/">Jenkins 文档特别兴趣小组</a></li>
</ul>
......
......@@ -455,8 +455,8 @@ f6 ph3 pv1 br2 dib tc ttu mv3 bg-primary-color white hover-bg-green link
<li class="db dib-l mb2 mr3">
<a href="/wechat/articles/2019/08/2019-08-05-jenkins-multi-branch-pipeline/" class="link">
在大型企业里维护多分支流水线
<a href="/wechat/articles/2019/08/2019-08-15-jenkins-pipeline-stage-result-visualization-improvements/" class="link">
Jenkins 可视化阶段视图的改进
</a>
</li>
......@@ -467,6 +467,15 @@ f6 ph3 pv1 br2 dib tc ttu mv3 bg-primary-color white hover-bg-green link
</li>
<li class="db dib-l mb2 mr3">
<a href="/wechat/articles/2019/08/2019-08-05-jenkins-multi-branch-pipeline/" class="link">
在大型企业里维护多分支流水线
</a>
</li>
......
......@@ -254,6 +254,14 @@ var trackOutboundLink = function(id, url) {
</a>
<a href="https://jenkins-zh.cn/wechat/articles/2019/08/2019-08-15-jenkins-pipeline-stage-result-visualization-improvements/" class="dib f6 pl1 hover-bg-light-gray br-100" title="Jenkins 可视化阶段视图的改进 ">
<svg class="fill-current" height="30px" viewBox="0 0 24 24" width="30px" xmlns="http://www.w3.org/2000/svg">
<path d="M15.41 7.41L14 6l-6 6 6 6 1.41-1.41L10.83 12z"/>
<path d="M0 0h24v24H0z" fill="none"/>
</svg>
</a>
<a href="https://jenkins-zh.cn/wechat/articles/2019/08/2019-08-09-volunteer-recruitment/" class="dib f6 pr1 hover-bg-light-gray br-100" title="持续交付黑客松--志愿者招募">
......
......@@ -38,7 +38,7 @@
<meta property="og:type" content="website" />
<meta property="og:url" content="https://jenkins-zh.cn/wechat/" />
<meta property="og:updated_time" content="2019-08-14T00:00:00&#43;00:00"/>
<meta property="og:updated_time" content="2019-08-15T00:00:00&#43;00:00"/>
<meta itemprop="name" content="Wechats">
<meta itemprop="description" content="">
......@@ -210,6 +210,33 @@ var trackOutboundLink = function(id, url) {
<div class="bg-white mb2 pa3 pa4-l gray">
<h1 class="near-black f3">
<a href="/wechat/articles/2019/08/2019-08-15-jenkins-pipeline-stage-result-visualization-improvements/" class="link primary-color dim">Jenkins 可视化阶段视图的改进</a>
</h1>
<div class="lh-copy links">
流水线除了成功或失败以外,还有一种介于两者之间的状态
<a href="/wechat/articles/2019/08/2019-08-15-jenkins-pipeline-stage-result-visualization-improvements/" class="f6 mt2 db link primary-color dim">
查看更多 &raquo;
</a>
</div>
</div>
</div>
<div class="relative weight-0" style="max-width: 350px">
<div class="bg-white mb2 pa3 pa4-l gray">
<h1 class="near-black f3">
<a href="/wechat/articles/2019/08/2019-08-14-continuous-testing-what-why-and-how/" class="link primary-color dim">持续测试的那些事</a>
</h1>
......@@ -447,33 +474,6 @@ var trackOutboundLink = function(id, url) {
<div class="relative weight-0" style="max-width: 350px">
<div class="bg-white mb2 pa3 pa4-l gray">
<h1 class="near-black f3">
<a href="/wechat/articles/2019/07/2019-07-14-jenkins-pipeline-workshop/" class="link primary-color dim">持续交付落地实践工作坊</a>
</h1>
<div class="lh-copy links">
Jenkins 中文社区2019第二场工作坊
<a href="/wechat/articles/2019/07/2019-07-14-jenkins-pipeline-workshop/" class="f6 mt2 db link primary-color dim">
查看更多 &raquo;
</a>
</div>
</div>
</div>
</section>
</div>
......
......@@ -6,11 +6,25 @@
<description>Recent content in Wechats on Jenkins 中文社区</description>
<generator>Hugo -- gohugo.io</generator>
<language>zh-CN</language>
<lastBuildDate>Wed, 14 Aug 2019 00:00:00 +0000</lastBuildDate>
<lastBuildDate>Thu, 15 Aug 2019 00:00:00 +0000</lastBuildDate>
<atom:link href="https://jenkins-zh.cn/wechat/index.xml" rel="self" type="application/rss+xml" />
<item>
<title>Jenkins 可视化阶段视图的改进</title>
<link>https://jenkins-zh.cn/wechat/articles/2019/08/2019-08-15-jenkins-pipeline-stage-result-visualization-improvements/</link>
<pubDate>Thu, 15 Aug 2019 00:00:00 +0000</pubDate>
<guid>https://jenkins-zh.cn/wechat/articles/2019/08/2019-08-15-jenkins-pipeline-stage-result-visualization-improvements/</guid>
<description>最近发布了的一些变更给了流水线编辑者新的工具以改善在 Blue Ocean 中的流水线可视化,有一个备受瞩目关注的工单JENKINS-39203,这会导致当流水线的构建结果为不稳定时所有的阶段都被设置为不稳定的。这个缺陷导致无法快速地识别为什么构建是不稳定的,使得用户必须查看完整的日志和 Jenkinsfile 才能弄明白究竟发生了什么。
为了修复这个问题,我们引入了一个新的流水线 API 用于为单个流水线步骤添加额外的结果信息。像 Blue Ocean 这样的可视化工具在决定阶段如何显示时会使用到这新的 API。像 junit 这样的步骤只能设置整个构建结果,现在可以通过新的 API 设置步骤级别的结果信息。我们创建了新的步骤 unstable 和 warnError,这样流水线编辑者在更复杂的场景下仍然可以利用这个新的 API。
该问题涉及到的重要的修复包含在如下的插件中,它们都需要 Jenkins 2.138.4 以及更新的版本:
Pipeline: API 2.34 Pipeline: Basic Steps 2.18 (需要同步更新到 Pipeline: Groovy 2.70) Pipeline: Graph Analysis 1.10 Pipeline: Declarative 1.3.9 Blue Ocean 1.17.0 这里是一条使用了 unstable 步骤的流水线在 Blue Ocean 中的截图,只会把失败的阶段标识为不稳定的:
例子 这里给出一些如何在你的流水线中使用该特性的示例:
使用新的步骤 warnError 用于捕获错误,并把构建和阶段标记为不稳定的。 warnError 只需要一个 字符串 的参数,用于当捕获到错误时以日志的形式输出。当 warnError 捕获到一个错误时,它会记录该消息以及错误,并设置构建和阶段的结果为不稳定的。效果如下: warnError(&#39;Script failed!&#39;) { sh(&#39;false&#39;) } 使用新的步骤 unstable 设置构建和阶段结果为不稳定的。可以使用该步骤直接替换 currentBuild.</description>
</item>
<item>
<title>持续测试的那些事</title>
<link>https://jenkins-zh.cn/wechat/articles/2019/08/2019-08-14-continuous-testing-what-why-and-how/</link>
......
keyword: 黑客松
msgType: text
content: |-
如果你的团队或项目涉及 CI/CD 以及 DevOps ,我们诚邀你参加由 Jenkins 中文社区发起的
以 DevOps 未主题的黑客松编程比赛,我们的口号是 Everyting as Code (一切皆代码)。
开源的持续交付黑客松,丰厚的奖品,等你来战:
https://jenkins-zh.cn/event/beijing-2019-10-25/
\ No newline at end of file
......@@ -209,6 +209,33 @@ var trackOutboundLink = function(id, url) {
<div class="bg-white mb2 pa3 pa4-l gray">
<h1 class="near-black f3">
<a href="/wechat/articles/2019/01/2019-01-16-webhook-firewalls/" class="link primary-color dim">在安全防火墙内通过 WebHook 触发构建</a>
</h1>
<div class="lh-copy links">
谁说局域网里就不能带 GitHub 的 WebHook 玩?
<a href="/wechat/articles/2019/01/2019-01-16-webhook-firewalls/" class="f6 mt2 db link primary-color dim">
查看更多 &raquo;
</a>
</div>
</div>
</div>
<div class="relative weight-0" style="max-width: 350px">
<div class="bg-white mb2 pa3 pa4-l gray">
<h1 class="near-black f3">
<a href="/wechat/articles/2019/06/2019-06-24-becoming-contributor-newbie-tickets/" class="link primary-color dim">成为一名 Jenkins 贡献者:对新手友好的工单</a>
</h1>
......
......@@ -38,7 +38,7 @@
<meta property="og:type" content="website" />
<meta property="og:url" content="https://jenkins-zh.cn/wechat/" />
<meta property="og:updated_time" content="2019-07-09T00:00:00&#43;00:00"/>
<meta property="og:updated_time" content="2019-07-14T00:00:00&#43;00:00"/>
<meta itemprop="name" content="Wechats">
<meta itemprop="description" content="">
......@@ -210,6 +210,33 @@ var trackOutboundLink = function(id, url) {
<div class="bg-white mb2 pa3 pa4-l gray">
<h1 class="near-black f3">
<a href="/wechat/articles/2019/07/2019-07-14-jenkins-pipeline-workshop/" class="link primary-color dim">持续交付落地实践工作坊</a>
</h1>
<div class="lh-copy links">
Jenkins 中文社区2019第二场工作坊
<a href="/wechat/articles/2019/07/2019-07-14-jenkins-pipeline-workshop/" class="f6 mt2 db link primary-color dim">
查看更多 &raquo;
</a>
</div>
</div>
</div>
<div class="relative weight-0" style="max-width: 350px">
<div class="bg-white mb2 pa3 pa4-l gray">
<h1 class="near-black f3">
<a href="/wechat/articles/2019/07/2019-07-18-jenkins-weekly-release/" class="link primary-color dim">Jenkins 每周版更新</a>
</h1>
......@@ -447,33 +474,6 @@ var trackOutboundLink = function(id, url) {
<div class="relative weight-0" style="max-width: 350px">
<div class="bg-white mb2 pa3 pa4-l gray">
<h1 class="near-black f3">
<a href="/wechat/articles/2019/06/2019-06-10-jenkins-pipeline-workshop/" class="link primary-color dim">还在苦恼不会写 Jenkins 流水线?来场工作坊!</a>
</h1>
<div class="lh-copy links">
Jenkins 中文社区2019第一场工作坊
<a href="/wechat/articles/2019/06/2019-06-10-jenkins-pipeline-workshop/" class="f6 mt2 db link primary-color dim">
查看更多 &raquo;
</a>
</div>
</div>
</div>
</section>
</div>
......
......@@ -38,7 +38,7 @@
<meta property="og:type" content="website" />
<meta property="og:url" content="https://jenkins-zh.cn/wechat/" />
<meta property="og:updated_time" content="2019-06-09T00:00:00&#43;00:00"/>
<meta property="og:updated_time" content="2019-06-10T00:00:00&#43;00:00"/>
<meta itemprop="name" content="Wechats">
<meta itemprop="description" content="">
......@@ -210,6 +210,33 @@ var trackOutboundLink = function(id, url) {
<div class="bg-white mb2 pa3 pa4-l gray">
<h1 class="near-black f3">
<a href="/wechat/articles/2019/06/2019-06-10-jenkins-pipeline-workshop/" class="link primary-color dim">还在苦恼不会写 Jenkins 流水线?来场工作坊!</a>
</h1>
<div class="lh-copy links">
Jenkins 中文社区2019第一场工作坊
<a href="/wechat/articles/2019/06/2019-06-10-jenkins-pipeline-workshop/" class="f6 mt2 db link primary-color dim">
查看更多 &raquo;
</a>
</div>
</div>
</div>
<div class="relative weight-0" style="max-width: 350px">
<div class="bg-white mb2 pa3 pa4-l gray">
<h1 class="near-black f3">
<a href="/wechat/articles/2019/06/2019-06-09-github-share/" class="link primary-color dim">在线分享 - 作为一名开源贡献者是如何使用 GitHub 的?</a>
</h1>
......@@ -447,33 +474,6 @@ var trackOutboundLink = function(id, url) {
<div class="relative weight-0" style="max-width: 350px">
<div class="bg-white mb2 pa3 pa4-l gray">
<h1 class="near-black f3">
<a href="/wechat/articles/2019/05/2019-05-20-translation-norms/" class="link primary-color dim">转载规范及声明</a>
</h1>
<div class="lh-copy links">
为了保护本站文章的原创性,请规范转载,违者必究
<a href="/wechat/articles/2019/05/2019-05-20-translation-norms/" class="f6 mt2 db link primary-color dim">
查看更多 &raquo;
</a>
</div>
</div>
</div>
</section>
</div>
......
......@@ -38,7 +38,7 @@
<meta property="og:type" content="website" />
<meta property="og:url" content="https://jenkins-zh.cn/wechat/" />
<meta property="og:updated_time" content="2019-05-17T00:00:00&#43;00:00"/>
<meta property="og:updated_time" content="2019-05-20T00:00:00&#43;00:00"/>
<meta itemprop="name" content="Wechats">
<meta itemprop="description" content="">
......@@ -210,6 +210,33 @@ var trackOutboundLink = function(id, url) {
<div class="bg-white mb2 pa3 pa4-l gray">
<h1 class="near-black f3">
<a href="/wechat/articles/2019/05/2019-05-20-translation-norms/" class="link primary-color dim">转载规范及声明</a>
</h1>
<div class="lh-copy links">
为了保护本站文章的原创性,请规范转载,违者必究
<a href="/wechat/articles/2019/05/2019-05-20-translation-norms/" class="f6 mt2 db link primary-color dim">
查看更多 &raquo;
</a>
</div>
</div>
</div>
<div class="relative weight-0" style="max-width: 350px">
<div class="bg-white mb2 pa3 pa4-l gray">
<h1 class="near-black f3">
<a href="/wechat/articles/2019/05/2019-05-17-from-jenkins-to-jenkins-x/" class="link primary-color dim">从 Jenkins 到 Jenkins X</a>
</h1>
......@@ -447,33 +474,6 @@ var trackOutboundLink = function(id, url) {
<div class="relative weight-0" style="max-width: 350px">
<div class="bg-white mb2 pa3 pa4-l gray">
<h1 class="near-black f3">
<a href="/wechat/articles/2019/05/2019-05-06-jenkins-plugin-develop-within-two-days-part01/" class="link primary-color dim">Jenkins 插件开发之旅:两天内从 idea 到发布(上篇)</a>
</h1>
<div class="lh-copy links">
两天内,从产生 idea 到编写插件,最后发布到 Jenkins 插件更新中心
<a href="/wechat/articles/2019/05/2019-05-06-jenkins-plugin-develop-within-two-days-part01/" class="f6 mt2 db link primary-color dim">
查看更多 &raquo;
</a>
</div>
</div>
</div>
</section>
</div>
......
......@@ -38,7 +38,7 @@
<meta property="og:type" content="website" />
<meta property="og:url" content="https://jenkins-zh.cn/wechat/" />
<meta property="og:updated_time" content="2019-04-30T00:00:00&#43;00:00"/>
<meta property="og:updated_time" content="2019-05-06T00:00:00&#43;00:00"/>
<meta itemprop="name" content="Wechats">
<meta itemprop="description" content="">
......@@ -210,6 +210,33 @@ var trackOutboundLink = function(id, url) {
<div class="bg-white mb2 pa3 pa4-l gray">
<h1 class="near-black f3">
<a href="/wechat/articles/2019/05/2019-05-06-jenkins-plugin-develop-within-two-days-part01/" class="link primary-color dim">Jenkins 插件开发之旅:两天内从 idea 到发布(上篇)</a>
</h1>
<div class="lh-copy links">
两天内,从产生 idea 到编写插件,最后发布到 Jenkins 插件更新中心
<a href="/wechat/articles/2019/05/2019-05-06-jenkins-plugin-develop-within-two-days-part01/" class="f6 mt2 db link primary-color dim">
查看更多 &raquo;
</a>
</div>
</div>
</div>
<div class="relative weight-0" style="max-width: 350px">
<div class="bg-white mb2 pa3 pa4-l gray">
<h1 class="near-black f3">
<a href="/wechat/articles/2019/04/2019-04-30-what-cicd-tool-should-i-use/" class="link primary-color dim">应该使用什么 CI/CD 工具?</a>
</h1>
......@@ -447,33 +474,6 @@ var trackOutboundLink = function(id, url) {
<div class="relative weight-0" style="max-width: 350px">
<div class="bg-white mb2 pa3 pa4-l gray">
<h1 class="near-black f3">
<a href="/wechat/articles/2019/04/2019-04-17-aiops/" class="link primary-color dim">AIOps:DevOps 的未来</a>
</h1>
<div class="lh-copy links">
DevOps 将结合人工智能变得更加强大
<a href="/wechat/articles/2019/04/2019-04-17-aiops/" class="f6 mt2 db link primary-color dim">
查看更多 &raquo;
</a>
</div>
</div>
</div>
</section>
</div>
......
......@@ -38,7 +38,7 @@
<meta property="og:type" content="website" />
<meta property="og:url" content="https://jenkins-zh.cn/wechat/" />
<meta property="og:updated_time" content="2019-04-15T00:00:00&#43;00:00"/>
<meta property="og:updated_time" content="2019-04-17T00:00:00&#43;00:00"/>
<meta itemprop="name" content="Wechats">
<meta itemprop="description" content="">
......@@ -210,6 +210,33 @@ var trackOutboundLink = function(id, url) {
<div class="bg-white mb2 pa3 pa4-l gray">
<h1 class="near-black f3">
<a href="/wechat/articles/2019/04/2019-04-17-aiops/" class="link primary-color dim">AIOps:DevOps 的未来</a>
</h1>
<div class="lh-copy links">
DevOps 将结合人工智能变得更加强大
<a href="/wechat/articles/2019/04/2019-04-17-aiops/" class="f6 mt2 db link primary-color dim">
查看更多 &raquo;
</a>
</div>
</div>
</div>
<div class="relative weight-0" style="max-width: 350px">
<div class="bg-white mb2 pa3 pa4-l gray">
<h1 class="near-black f3">
<a href="/wechat/articles/2019/04/2019-04-15-zabbix-monitor-jenkins/" class="link primary-color dim">使用 Zabbix 监控 Jenkins</a>
</h1>
......@@ -447,33 +474,6 @@ var trackOutboundLink = function(id, url) {
<div class="relative weight-0" style="max-width: 350px">
<div class="bg-white mb2 pa3 pa4-l gray">
<h1 class="near-black f3">
<a href="/wechat/articles/2019/03/2019-03-13-ready-for-cdf/" class="link primary-color dim">为 Continuous Delivery Foundation 的成立感到兴奋</a>
</h1>
<div class="lh-copy links">
CDF 就要来啦
<a href="/wechat/articles/2019/03/2019-03-13-ready-for-cdf/" class="f6 mt2 db link primary-color dim">
查看更多 &raquo;
</a>
</div>
</div>
</div>
</section>
</div>
......
......@@ -38,7 +38,7 @@
<meta property="og:type" content="website" />
<meta property="og:url" content="https://jenkins-zh.cn/wechat/" />
<meta property="og:updated_time" content="2019-03-06T00:00:00&#43;00:00"/>
<meta property="og:updated_time" content="2019-03-13T00:00:00&#43;00:00"/>
<meta itemprop="name" content="Wechats">
<meta itemprop="description" content="">
......@@ -210,6 +210,33 @@ var trackOutboundLink = function(id, url) {
<div class="bg-white mb2 pa3 pa4-l gray">
<h1 class="near-black f3">
<a href="/wechat/articles/2019/03/2019-03-13-ready-for-cdf/" class="link primary-color dim">为 Continuous Delivery Foundation 的成立感到兴奋</a>
</h1>
<div class="lh-copy links">
CDF 就要来啦
<a href="/wechat/articles/2019/03/2019-03-13-ready-for-cdf/" class="f6 mt2 db link primary-color dim">
查看更多 &raquo;
</a>
</div>
</div>
</div>
<div class="relative weight-0" style="max-width: 350px">
<div class="bg-white mb2 pa3 pa4-l gray">
<h1 class="near-black f3">
<a href="/wechat/articles/2019/03/2019-01-08-mpl-modular-pipeline-library/" class="link primary-color dim">MPL - 模块化的流水线库</a>
</h1>
......@@ -457,36 +484,6 @@ We have a robot who can reply to your messages automatically. Unfortunately, its
<div class="relative weight-0" style="max-width: 350px">
<div class="bg-white mb2 pa3 pa4-l gray">
<h1 class="near-black f3">
<a href="/wechat/management/auto-reply/readme/" class="link primary-color dim"></a>
</h1>
<div class="lh-copy links">
通过微信公众号的 API 接口实现部分功能,这里主要是存放自动回复的消息。
我们的 API 后端代码是基于 Golang 编写的。
支持的消息类型包括:
文本 图片 文章(公众号中的) 上面提到的消息类型,也就是字段 msgType 的值,包括:text、image、news。 更多的细节可以参考源码。
<a href="/wechat/management/auto-reply/readme/" class="f6 mt2 db link primary-color dim">
查看更多 &raquo;
</a>
</div>
</div>
</div>
</section>
</div>
......
......@@ -209,6 +209,36 @@ var trackOutboundLink = function(id, url) {
<div class="bg-white mb2 pa3 pa4-l gray">
<h1 class="near-black f3">
<a href="/wechat/management/auto-reply/readme/" class="link primary-color dim"></a>
</h1>
<div class="lh-copy links">
通过微信公众号的 API 接口实现部分功能,这里主要是存放自动回复的消息。
我们的 API 后端代码是基于 Golang 编写的。
支持的消息类型包括:
文本 图片 文章(公众号中的) 上面提到的消息类型,也就是字段 msgType 的值,包括:text、image、news。 更多的细节可以参考源码。
<a href="/wechat/management/auto-reply/readme/" class="f6 mt2 db link primary-color dim">
查看更多 &raquo;
</a>
</div>
</div>
</div>
<div class="relative weight-0" style="max-width: 350px">
<div class="bg-white mb2 pa3 pa4-l gray">
<h1 class="near-black f3">
<a href="/wechat/management/contributors/readme/" class="link primary-color dim"></a>
</h1>
......@@ -464,33 +494,6 @@ Jenkins 中文社区邀您参与社区共同成长 在开源盛会开展的同
<div class="relative weight-0" style="max-width: 350px">
<div class="bg-white mb2 pa3 pa4-l gray">
<h1 class="near-black f3">
<a href="/wechat/articles/2019/01/2019-01-16-localization-zh-cn-plugin/" class="link primary-color dim">Jenkins 中文语言包</a>
</h1>
<div class="lh-copy links">
Jenkins 中文版本升级通知
<a href="/wechat/articles/2019/01/2019-01-16-localization-zh-cn-plugin/" class="f6 mt2 db link primary-color dim">
查看更多 &raquo;
</a>
</div>
</div>
</div>
</section>
</div>
......
......@@ -209,6 +209,33 @@ var trackOutboundLink = function(id, url) {
<div class="bg-white mb2 pa3 pa4-l gray">
<h1 class="near-black f3">
<a href="/wechat/articles/2019/01/2019-01-16-localization-zh-cn-plugin/" class="link primary-color dim">Jenkins 中文语言包</a>
</h1>
<div class="lh-copy links">
Jenkins 中文版本升级通知
<a href="/wechat/articles/2019/01/2019-01-16-localization-zh-cn-plugin/" class="f6 mt2 db link primary-color dim">
查看更多 &raquo;
</a>
</div>
</div>
</div>
<div class="relative weight-0" style="max-width: 350px">
<div class="bg-white mb2 pa3 pa4-l gray">
<h1 class="near-black f3">
<a href="/wechat/articles/2019/01/2019-01-30-k8s-jenkins-secet-agent/" class="link primary-color dim">Jenkins 和 Kubernetes -云上的神秘代理</a>
</h1>
......@@ -446,33 +473,6 @@ var trackOutboundLink = function(id, url) {
<div class="relative weight-0" style="max-width: 350px">
<div class="bg-white mb2 pa3 pa4-l gray">
<h1 class="near-black f3">
<a href="/wechat/articles/2019/01/2019-01-16-webhook-firewalls/" class="link primary-color dim">在安全防火墙内通过 WebHook 触发构建</a>
</h1>
<div class="lh-copy links">
谁说局域网里就不能带 GitHub 的 WebHook 玩?
<a href="/wechat/articles/2019/01/2019-01-16-webhook-firewalls/" class="f6 mt2 db link primary-color dim">
查看更多 &raquo;
</a>
</div>
</div>
</div>
</section>
</div>
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册