index.xml 173.5 KB
Newer Older
LinuxSuRen's avatar
LinuxSuRen 已提交
1 2 3 4
<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
  <channel>
    <title>Wechats on Jenkins 中文社区</title>
LinuxSuRen's avatar
LinuxSuRen 已提交
5
    <link>https://jenkins-zh.cn/wechat/</link>
LinuxSuRen's avatar
LinuxSuRen 已提交
6 7 8
    <description>Recent content in Wechats on Jenkins 中文社区</description>
    <generator>Hugo -- gohugo.io</generator>
    <language>zh-CN</language>
LinuxSuRen's avatar
LinuxSuRen 已提交
9
    <lastBuildDate>Tue, 09 Jul 2019 00:00:00 +0000</lastBuildDate>
LinuxSuRen's avatar
LinuxSuRen 已提交
10
    
LinuxSuRen's avatar
LinuxSuRen 已提交
11
	<atom:link href="https://jenkins-zh.cn/wechat/index.xml" rel="self" type="application/rss+xml" />
LinuxSuRen's avatar
LinuxSuRen 已提交
12 13
    
    
LinuxSuRen's avatar
LinuxSuRen 已提交
14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30
    <item>
      <title>Jenkins 长期支持版更新</title>
      <link>https://jenkins-zh.cn/wechat/articles/2019/07/2019-07-09-jenkins-release/</link>
      <pubDate>Tue, 09 Jul 2019 00:00:00 +0000</pubDate>
      
      <guid>https://jenkins-zh.cn/wechat/articles/2019/07/2019-07-09-jenkins-release/</guid>
      <description>2.176.1 (2019-06-10)  自 2.176 以来的变更:
 恢复安装向导中用到的中文本地化资源。 (issue 57412) Robustness: 当 ComputerListener#onOnline() 发生运行时异常后不把节点设置为离线状态。 (issue 57111)  CLI 中通过参数 (-remoting option) 对远程模式的支持已经被移除。 (pull 3838, 博客发布)
 移除符号 nonStoredPasswordParam 对密码参数定义的误导,因为,它会存储加密后的数据。 (issue 56776)
 移除对 CCtray (cc.xml) 文件的默认支持。 要使用该功能,需要按照插件 CCtray XML Plugin。 (issue 40750)
 增加 CLI 命令 stop-job 终止构建。 (issue 11888)
 在日志配置中支持关闭一项日志记录器。 (issue 56200)
 为 REST API 的响应增加运行参数过滤器。 (issue 56554)
 构建结束后更新状态图标。 (issue 16750)
 在 Jenkins 节点的界面上移除对 Java Web Start and JNLP 的误导性引用。 (pull 3998)</description>
    </item>
    
LinuxSuRen's avatar
LinuxSuRen 已提交
31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46
    <item>
      <title>Jenkins 中文社区技术交流微信群问题集之一</title>
      <link>https://jenkins-zh.cn/wechat/articles/2019/07/2019-07-08-wechat-answer-1/</link>
      <pubDate>Mon, 08 Jul 2019 00:00:00 +0000</pubDate>
      
      <guid>https://jenkins-zh.cn/wechat/articles/2019/07/2019-07-08-wechat-answer-1/</guid>
      <description>申明:下文中的问题是群友发起的,回答则是由笔者收集整理的。
1. 同一流水线,如何做某个阶段定时执行代码扫描 这个需求的意思是存在一条流水线,流水线中的阶段为:构建阶段 &amp;ndash;&amp;gt; 代码扫描阶段 &amp;ndash;&amp;gt; 发布测试环境阶段 &amp;ndash;&amp;gt; &amp;hellip; 而提问者希望当有代码提交时,就执行整条流水线。当到某个时间点时,就只执行扫描阶段。
回答一 当代码没有变化,我们为什么要重复执行扫描呢?
回答二 换成两个流水线,一个提交触发,一个定时触发
回答三 一条流水线加个开关设置是否跳过扫描。
2. 有人做过增量包构建么?  有人做过增量包构建么?问下要用哪些插件,怎么做? 经确认,提问人的需求是有一个代码仓库 x,然后 x 里有 a,b,c 三个模块,开发提交了 a 模块的代码,这时,只打包 a 模块的制品。
 回答一 要做的是在流水线里判断提交代码中修改了哪个模块,然后执行你的 ant 命令指定构建某个模块就好了。代码 demo 如下:
pipeline{ agent any stages{ stage(&#39;build a&#39;){ when{ changeset &amp;quot;a/**&amp;quot; } steps{ echo &amp;quot;build a&amp;quot; } } stage(&#39;build b&#39;){ when{ changeset &amp;quot;b/**&amp;quot; } steps{ echo &amp;quot;build b&amp;quot; } } } }  回答二 增量包,四五年前我有过相关实践,构建工具也是 ant。记得当初是根据修改的文件路径,解析出 ant target 列表,然后根据事先声明好的依赖关系对它排序,然后执行 ant 构建命令,最后将生成的二进制包挑出来生成增量包,大致这么个思路。</description>
    </item>
    
LinuxSuRen's avatar
LinuxSuRen 已提交
47 48 49 50 51 52 53 54 55 56 57 58 59
    <item>
      <title>Jenkins 插件的微基准测试框架</title>
      <link>https://jenkins-zh.cn/wechat/articles/2019/07/2019-07-04-performance-testing-jenkins/</link>
      <pubDate>Thu, 04 Jul 2019 00:00:00 +0000</pubDate>
      
      <guid>https://jenkins-zh.cn/wechat/articles/2019/07/2019-07-04-performance-testing-jenkins/</guid>
      <description>Jenkins 插件的微基准测试框架 作为我 Google 编程夏令营的一部分,我一直致力于改进角色策略插件(Role Strategy Plugin)的性能。 由于没有现有的方法来度量性能以及在 Jenkins 插件上做基准测试, 我在项目第一阶段的工作是创建一个框架在一个 Jenkins 实例中运行 Jenkins 插件中的基准测试。 为了让我们的工作更容易些,我们选择了 Java微基准测试工具来运行这些基准。 这使我们能够可靠地度量对时间要求严格的功能的性能,将有助于让 Jenkins 为每个人更快的运转。
最近在 Jenkins 单元测试工具2.50中发布了微基准测试框架。 下面的博客文章展示了如何在插件中运行基准测试。
介绍 该框架通过为 JMH 基准的每个 fork 启动一个临时的 Jenkins 实例来运行, 就像 Jenkins 测试工具中的 JenkinsRule。 基准测试是直接从 JUnit 测试运行的,它允许在运行过程中失败构建,并且很容易从 IDE 中运行基准测试,就像单元测试一样。 你可以很容易地通过使用 Java 方法或使用 Jenkins plugin:configuration-as-code:[配置即代码插件]来配置基准并将路径传递到 YAML 文件。
要从您的插件运行基准测试,您需要做以下工作:
 将所需的最低 Jenkins 版本升级到2.60.3或更高版本 将 Plugin-POM 升级到 ≥ 3.46 的版本或手动更新 Jenkins 测试工具到 ≥ 2.51 的版本  现在,要运行基准测试,您需要有一个包含 @Test 的基准测试运行程序,以便它可以像 JUnit 测试一样运行。 从测试方法内部,可以使用 JMH 提供的 OptionsBuilder 来配置基准。 例如:</description>
    </item>
    
LinuxSuRen's avatar
LinuxSuRen 已提交
60 61 62 63 64 65 66 67 68 69
    <item>
      <title>多分支流水线任务对 GitLab SCM 的支持</title>
      <link>https://jenkins-zh.cn/wechat/articles/2019/07/2019-07-10-phase-1-multibranch-pipeline-support-for-gitlab/</link>
      <pubDate>Thu, 04 Jul 2019 00:00:00 +0000</pubDate>
      
      <guid>https://jenkins-zh.cn/wechat/articles/2019/07/2019-07-10-phase-1-multibranch-pipeline-support-for-gitlab/</guid>
      <description>这是在 GSoC 2019中的一个 Jenkins 项目。 我们正致力于增加多分支流水线任务和文件夹组织对 GitLab 的支持。 这个计划是创建以下插件: * GitLab API 插件 - 包装 GitLab Java APIs。 * GitLab 分支源插件 - 包括两个包: * io.jenkins.plugins.gitlabserverconfig - 管理服务器配置和 Web hooks 管理。理想情况下应该在另一个名为 GitLab Plugin 的插件中。 未来,这个包应该移动到新的插件中。 * io.jenkins.plugins.gitlabbranchsource - 为多分支流水线任务(包括 Merge Requests )和文件夹组织添加 GitLab 分支源。
现状  完全支持自由风格的任务和流水线(单分支)任务。 部分支持多分支流水线任务(没有 MRS 检测)。 不支持 Gitlab 文件夹组织。  这个项目的目标  实现一个依赖于 Gitlab API 插件的轻量级 Gitlab 插件。 遵循3个独立插件的约定,即 GitLab 插件,GitLab API 插件,GitLab 分支源插件。 实现 Gitlab 分支源插件,支持多分支管道作业。 支持新的 Jenkins 特性,例如 Jenkins 代码即配置 (JCasC), 增量式工具。 清晰高效的设计。 支持新的 SCM 特性 APIs。 支持 Java 8 及更高版本。  构建插件 这个插件还没有二进制文件可用,因为这个插件还处于非常早期的 alpha 阶段,还没有为公众准备好。 如果您想尽早介入,可以尝试自己从源代码构建它。</description>
    </item>
    
LinuxSuRen's avatar
LinuxSuRen 已提交
70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115
    <item>
      <title>介绍 Jenkins 模板引擎</title>
      <link>https://jenkins-zh.cn/wechat/articles/2019/07/2019-07-01-introducing-the-jenkins-templating-engine/</link>
      <pubDate>Mon, 01 Jul 2019 00:00:00 +0000</pubDate>
      
      <guid>https://jenkins-zh.cn/wechat/articles/2019/07/2019-07-01-introducing-the-jenkins-templating-engine/</guid>
      <description>在企业范围内实施 DevSecOps 实践具有挑战性。由于组织内的不同应用程序正在使用多种编程语言、自动化测试框架和安全遵从性安全合规工具,因此每个团队构建和维护流水线变得很难。
无论应用程序使用哪个特定的技术栈,大多数流水线都将遵循相同的通用工作流。模板引擎插件(简写为 JTE ,用于 Jenkins 模板引擎)允许您通过创建不依赖于工具的模板化工作流来获取效率,每个团队都可以重用这些工作流。
作为公共部门和私营部门客户的技术顾问,我们在 Booz Allen 发现,每个新项目都要从头开始建造 DevSecOps 流水线。通过开发 Jenkins 模板引擎,我们已经看到流水线开发从几个月减少到几天,现在我们可以重用工具集成,同时为 Jenkins 流水线带来新的治理级别。
流水线模板 组织受益于让应用程序开发人员专注于他们最擅长的工作:构建应用程序。支持这个,意味着建立一个集中式的 DevOps 团队,负责维护平台基础设施,并创建开发团队使用的 CI/CD 流水线。
随着基于微服务的体系结构的兴起,一个集中的 DevOps 团队可以同时支持许多不同的开发团队;所有这些团队都可能利用不同的编程语言和自动化测试工具。
虽然开发团队之间的工具可能不同,但工作流通常是相同的:单元测试、静态代码分析、构建和发布制品、部署它,然后针对部署的应用程序执行不同类型的测试。
 模板引擎插件允许您从每个被团队定义可继承通用工作流的存储库中删除 Jenkinsfile 。作为替代每个存储库需定义整个流水线,团队提供一个使用工作流的工具配置文件。
 JTE 实战 让我们通过一个简单的示例来演示模板的可重用性: 流水线模板例子:  unit_test() build() static_code_analysis()  模板利用库提供的步骤概述工作流团队必须实现的步骤。虽然模板的执行方式与任何其他 Jenkinsfile 都一样(这意味着支持标准的脚本化和声明性语法),但模板的目标应该是以纯英语的方式阅读,并避免任何技术实现。
 通过这种方式利用模板,您可以将流水线的业务逻辑(应该在什么时候发生)与技术实现(实际将要发生什么)分开。其结果是一个 CI/CD 管道,当同时支持多个团队时,该流水线被证明非常容易管理。
 此模板( unit_test 、 build 和 static_code_analysis )概述的步骤是专门命名的。通过这种方式,团队可以使用的不同库共享同一流水线。
实现模板 使用模板引擎实现可共享流水线需要几个关键组件: 1. 流水线模板:概述要执行的工作流 2. 库:提供工作流步骤的技术实现 3. 配置文件:指定要使用的库及其配置
步骤1、创建流水线配置存储库 流水线配置存储库用于存储团队继承的常见配置和流水线模板。
这个示例流水线配置存储库稍后将被配置为治理层的一部分:JTE 的机制中允许您构建表示组织的层次结构配置。</description>
    </item>
    
    <item>
      <title>使用Active-Choices-Plugin插件将十个Job合成一个</title>
      <link>https://jenkins-zh.cn/wechat/articles/2019/06/2019-06-26-using-active-choices-plugin-merge-jobs/</link>
      <pubDate>Wed, 26 Jun 2019 00:00:00 +0000</pubDate>
      
      <guid>https://jenkins-zh.cn/wechat/articles/2019/06/2019-06-26-using-active-choices-plugin-merge-jobs/</guid>
      <description>现在Spring Cloud越来越火爆,许多公司也都在如火如荼投入使用中,而微服务最大的一个特点,就是多,同一大项目之下,可能会被拆分成十几二十几个子服务,对于运维而言,可能也需要一个对应一个地在Jenkins中创建十几二十几个Job。
刚刚还在一个博主的自我介绍里看到这样一句话:喜欢一切优雅的运维方式···
于是,我一直在想着,通过一些合理的参数变幻,从而将刚刚提到的十几二十几个服务,汇集到一个Job当中就能完成。
1,环境说明  主机:CentOS-7.5 Jdk:jdk1.8.0_192 Tomcat:8 Jenkins:2.177  如上环境的准备工作本文就不赘述了。
2,安装插件。  官方地址:https://wiki.jenkins.io/display/JENKINS/Active+Choices+Plugin 安装方式:在Jenkins插件当中直接搜索即可安装。 功能说明:根据所选参数,自动调出对应参数所依赖的后续参数。  3,使用前介绍。 插件安装之后,可以在项目配置中的参数化配置中看到一些新增了的选项。
 1,Active Choices Parameter(主动选择参数) Active Choices参数使用Groovy脚本或Scriptler目录中的脚本动态生成构建参数的值选项列表。 2,Active Choices Reactive Parameter(主动选择反应参数) 根据主动选择参数的选项而提供不同的对应值或者列表选项。 3,Active Choices Reactive Reference Parameter(主动选择反应参考参数) 根据主动选择参数的选项而展示对应参数的一些说明,与第二项的区别在于本参数只作为说明信息,而不能够作为变量往下传递。  可能刚刚这些说明都比较抽象,接下来容我通过项目实战,来对其进行一一解析。
4,配置前分析。 优秀的插件,它的优秀之处,往往是需要我们结合生产实际,开动聪明的大脑,打破常规使用套路来成就的。
因此,如何才能更好地应用插件的优秀功能,需要我们先对项目进行分析,从全局的眼光,判断项目前后该配置什么样的参数来进行联动。
这里我说明一下我准备的实验项目情况,为了简便测试,我这里仅使用两个项目来进行举例,聪明的你也一定能够通过案例进行举一反三,将二合一推广为十合一的。
两个项目的情况如下:
1,eureka  Gitlab地址:git@192.168.10.0:ishangjie/ishangjie-eureka-server.git port:8761 包名:ishangjie-eureka-server-1.0.0.jar  2,user  Gitlab地址:git@192.168.10.0:ishangjie/ishangjie-user-service.git port:6666 包名:ishangjie-user-service-1.0.0.jar  从刚刚这些配置里边可以看出,有不少共同点,也有不少不同点,我们只需把眼光放在不同点上,通过一些统一的变量控制,就能达到二合一的目的。
另外说明一点,这个项目已经部署在k8s环境当中,因此我的脚本内容也就展示成了k8s项目部署的流程了。
5,创建项目。 首先创建一个自由风格的Jenkins项目,然后配置一下项目构建保存历史。
6,字符参数。 添加一个名为branch的字符参数以用于控制代码分支的变量。
7,选项参数。 添加一个名为mode的选项参数以用于控制部署或者回滚的变量。
8,选择参数。 1,主动选择参数 首先添加一个主动选择参数,用于控制项目名称这个变量。
 Name:project Groovy Script:  return[ &amp;quot;eureka&amp;quot;, &amp;quot;user&amp;quot; ]  Description:选择对应的应用名称部署对应的应用。 Choice Type:Radio Buttons  2,主动选择反应参数 接着添加一个主动选择反应参数,用于控制项目类型这个变量。</description>
    </item>
    
LinuxSuRen's avatar
LinuxSuRen 已提交
116 117 118 119 120 121 122 123 124 125 126 127 128 129 130
    <item>
      <title>10节课带你深入学习 DevOps 工程</title>
      <link>https://jenkins-zh.cn/wechat/articles/2019/06/2019-06-17-10-courses-to-learn-devops-engineering-in-depth/</link>
      <pubDate>Mon, 17 Jun 2019 00:00:00 +0000</pubDate>
      
      <guid>https://jenkins-zh.cn/wechat/articles/2019/06/2019-06-17-10-courses-to-learn-devops-engineering-in-depth/</guid>
      <description>DevOps 现在真的很热门,对于杰出的工程师和 DevOps 专业人员来说有许多工作机会。 如果你想成为一名 DevOps 工程师,那么你来对地方了。在本文中,我将分享一下最好的在线培训课程, 让你成为 DevOps 专业人员。
Devops 最重要的优势,它可以帮助你更好地发布软件并且利用现代自动化工具对环境和软件开发过程中提供更多控制。这就是 DevOps 专业人员需求呈指数增长的原因。除了 Data Science 和 Machine Learning 外,它也是薪酬最高的 IT 工作之一。
根据 Glassdoor 的数据,DevOps 的工程师每年的收入从105000美元到146000美元不等。这意味着,如果你正在寻找加薪或想在美好年纪从事一些令人兴奋的工作赚更多的钱,学习 DevOps 可能是一个不错的选择。
学习像 Jenkins 这样的持续集成工具和像 Docker 这样的容器以及一般的 DevOps 技能,在技术领域获得了巨大的动力。这与几年前的移动应用程序开发类似。
公司希望新的开发人员能够管理 Web 应用程序的整个生命周期。这意味着开发和部署应用程序。
为了成为一名有效的 DevOps 工程师,您必须扩展对软件开发中使用的不同工具的知识,包括构建工具(如 Maven、 Ant 和 Gradle )、单元测试工具(如 Junit 和 Selenium )、部署工具(如 Docker )、监控工具(如 New Relic )、基础设施自动化工具(如 Chef 和 Puppet )、源代码控制工具,如 Git 和 Github,以及持续集成工具,如 Jenkins 和 TeamCity。这些课程为基本的 DevOps 工具提供了很好的介绍。
十节面向经验丰富的开发人员 DevOps 课程 在不浪费更多时间的情况下,这里列出了一些学习 DevOps 的最佳课程以及在软件开发和部署过程中实现自动化所需的基本工具。</description>
    </item>
    
LinuxSuRen's avatar
LinuxSuRen 已提交
131 132 133
    <item>
      <title>30分钟搞定 Jenkins CI</title>
      <link>https://jenkins-zh.cn/wechat/articles/2019/06/2019-06-14-setup-jenkins-ci-in-30-minutes/</link>
LinuxSuRen's avatar
LinuxSuRen 已提交
134
      <pubDate>Fri, 14 Jun 2019 00:00:00 +0000</pubDate>
LinuxSuRen's avatar
LinuxSuRen 已提交
135 136 137 138
      
      <guid>https://jenkins-zh.cn/wechat/articles/2019/06/2019-06-14-setup-jenkins-ci-in-30-minutes/</guid>
      <description>你想在本地设置中使用 Jenkins CI 进行实验吗?在本文中,我们将设置一个本地 Jenkins CI 服务,为一个简单的 Spring Boot Maven 项目创建一个构建工作,并将创建的 Docker 镜像推送到 DockerHub。这将是一个本地实验的设置,但如果你想尝试一个 Jenkins 插件,它会非常方便。
1.先决条件 开始之前,我们需要以下先决条件:
LinuxSuRen's avatar
LinuxSuRen 已提交
139 140
 我们使用了 Ubuntu 18.04; 必须安装 Docker,有关安装说明,请参见此处; 我们需要在 Docker registry 来推送我们的 Docker 镜像。最简单的方法是在DockerHub上创建一个帐户。你可以免费创建帐户。也不会收到垃圾广告邮件; 构建工作的 Spring Boot 应用程序。我们将使用前一篇文章中的 Spring Boot MVC 应用程序。源代码可以在GitHub上找到,相应的Docker图像可以在DockerHub上找到。该应用程序包含 http://localhost:8080/hello 上的一个 HTTP 端点,并只返回一条 Hello Kubernetes 欢迎消息。  2.运行 Jenkins CI 我们将使用 Jenkins CI Docker 官方镜像运行 Jenkins 服务。完整的文档可以在这里找到。用以下命令启动容器:
$ docker run -p 8080:8080 --name myjenkins -v jenkins_home:/var/jenkins_home -v jenkins_downloads:/var/jenkins_home/downloads jenkins/jenkins:lts  让我们来仔细看看我们正在做什么:</description>
LinuxSuRen's avatar
LinuxSuRen 已提交
141 142
    </item>
    
LinuxSuRen's avatar
LinuxSuRen 已提交
143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159
    <item>
      <title>还在苦恼不会写 Jenkins 流水线?来场工作坊!</title>
      <link>https://jenkins-zh.cn/wechat/articles/2019/06/2019-06-10-jenkins-pipeline-workshop/</link>
      <pubDate>Mon, 10 Jun 2019 00:00:00 +0000</pubDate>
      
      <guid>https://jenkins-zh.cn/wechat/articles/2019/06/2019-06-10-jenkins-pipeline-workshop/</guid>
      <description>前段时间,Jenkins 中文社区建了一个“Jenkins 中文社区技术交流”的微信群。
群里不温不火,不时有人抛出几个关于 Jenkins 流水线的问题。比如以下聊天记录:
而这些问题都共同说明另一个问题:Jenkins 的流水线的普及度还很低。大家都苦恼着不知道如何写 Jenkins 流水线呢。
所以,Jenkins 中文社区决定6月22日组织一场工作坊,手把手教大家如何写 Jenkins pipeline。工作坊内容包括: * 流水线基础讲解及其练习。 * 流水线高级部分讲解及其练习。 * 案例实战(注意啦,可是有案例的。不是虚的。)
问题来了?谁是这次工作坊的教练呢?
赵晓杰:jenkinsci Contributor,Jenkins 中文社区发起人。
想参加的同学,请点击阅读原文报名参加。
如果无法现场参加的同学可以发邮件至 events@mail.jenkins-zh.cn 申请 ZOOM 网络会议接入。另,我们鼓励由一人申请,并组织好其他人一起参与。这样多人一起进行工作坊,效果更佳。申请邮件中写明:申请人所在公司、地点、参与人数。
对了想入伙加群?很简单,Jenkins 公众号后台回复“微信群”,扫码入群。趁现在群没满,你懂的!~</description>
    </item>
    
LinuxSuRen's avatar
LinuxSuRen 已提交
160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176
    <item>
      <title>在线分享 - 作为一名开源贡献者是如何使用 GitHub 的?</title>
      <link>https://jenkins-zh.cn/wechat/articles/2019/06/2019-06-09-github-share/</link>
      <pubDate>Sun, 09 Jun 2019 00:00:00 +0000</pubDate>
      
      <guid>https://jenkins-zh.cn/wechat/articles/2019/06/2019-06-09-github-share/</guid>
      <description> 本次在线分享活动,是由 Jenkins 中文社区与开源社共同发起,旨在向每一位有意了解、参与开源社区活动的朋友们普及 GitHub 的使用。
GitHub 作为全球最大、最为专业的开源社交平台,不仅仅是研发或者技术相关岗位人员的专利,文案、市场相关同学同样可以利用这个 有着无限潜力的开源平台来为开源事业贡献自己的一份绵薄之力。
社区重于代码,这是很多资深开源人士的共同观点。除了可以在 GitHub 上托管我们的源代码之外,到底还可以让 GitHub 为大家所在的 开源社区、项目提供哪些便利的服务呢?除了如何使用 GitHub 以外,这也是我希望与大家分享、共同探讨的。
分享人 瑞克,Jenkins 中文社区发起人,热衷于传播开源理念、开源技术。多年研发经验, 目前关注于 DevOps 领域,尤其是持续交付方面。
分享概要  GitHub 基本介绍  常用功能 开源礼仪  非技术类使用概要  熟悉一个项目 了解如何做贡献 常规的贡献流程  更高效的实践经验  Git 基本介绍 客户端利器 hub 的几种模式  互动环节  合作企业 平安云 GitHub
报名 感兴趣的同学,请及时点击“阅读原文“进行报名,名额有限。我们会在活动前通过邮件的方式告知参与链接。
活动时间为:2019年6月14日 19:00~20:00
注意事项 为了能够让大家能够共同完成一次高效的在线分享活动,请各位准备参加的同学仔细阅读下面的事项:
 提前安排好时间,找一个安静的环境 检查网络是否通畅 准备好你的问题或者疑问 安装好客户端 https://github.com/github/hub 有任何技术细节、疑问,请关注 Jenkins 公众号,回复:微信群  </description>
    </item>
    
LinuxSuRen's avatar
LinuxSuRen 已提交
177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192
    <item>
      <title>2019年 DevOps 面临的挑战以及如何战胜它们</title>
      <link>https://jenkins-zh.cn/wechat/articles/2019/06/2019-06-05-devops-challenges-in-2019-how-to-overcome-them/</link>
      <pubDate>Wed, 05 Jun 2019 00:00:00 +0000</pubDate>
      
      <guid>https://jenkins-zh.cn/wechat/articles/2019/06/2019-06-05-devops-challenges-in-2019-how-to-overcome-them/</guid>
      <description>随着 DevOps 逐渐成为主流,许多团队都在问自己应该从哪里开始采用 DevOps , 他们将在此过程中面临哪些挑战,以及如何解决那些挑战。 每年都有越来越多的公司希望从传统的瀑布式方法转向 DevOps 。
许多软件开发公司将 DevOps 看作是一个公司在效率方面所能达到的顶峰,并且这有点难。 应对挑战可能大大降低你的生产力,同时适应 DevOps 方法会导致各种自动化工具和开发过程之间缺乏协调。
在本文中,我们将讨论 DevOps 在2019年面临的一些重大挑战,以及可以采取哪些措施来战胜它们。
关注遗留的应用程序和系统 DevOps 团队面临的第一个和主要挑战涉及到遗留应用程序的构建, 这些应用程序是在没有考虑 DevOps 的情况下构建的。 这似乎看起来有益无害,但这对于转变来说是相当棘手的。 即使你关注使用 DevOps 的新应用程序和系统,你也需要维护这些遗留系统。
对于遗留应用程序的转变这里还有其他原因。 一开始,你需要努力逐步将淘汰它们,或者逐渐将客户转移到使用 DevOps 系统维护的新版本。 否则,你可以尝试创建一个新的系统来维护遗留的应用程序,它不会干扰你的 DevOps 系统。 你也可以使用 Scala 性能度量工具,比如 AppOptics ,它有助于逐步淘汰非 DevOps 系统。
选择适合的项目 对于一个新的 DevOps 团队来说,为每个新项目选择 DevOps 似乎很明智,但事实并非总是如此。 DevOps 不是强制性的,因为如果没有正确地实现 DevOps ,有时会降低整个生产过程的速度。 因此,在选择要使用 DevOps 的项目时,你应该非常勤奋。 在考虑 DevOps 是否必要时,最好记住 DevOps 是一种运营策略,并不总是适合的。
如果你正在努力快速规模化的软件,并从其敏捷性中获得更快的速度,那么 DevOps 是一个明智的选择。 同样地,DevOps 并不是一直起作用,所以不应该把它当作解决所有问题的首选解决方案。 例如,如果你正在使用一个较旧的系统,那么最好坚持使用旧的方法和流程,因为不可能总是为这些方法和流程找到自动化的系统。
除此之外,规划和设计工作被认为不适合 DevOps ,因为进行设计和 UX 是处理流程的更成功的方法,而不是不断改进。</description>
    </item>
    
LinuxSuRen's avatar
LinuxSuRen 已提交
193 194 195 196 197 198 199 200 201
    <item>
      <title>Jenkins 2.176~2.178版本更新</title>
      <link>https://jenkins-zh.cn/wechat/articles/2019/05/2019-05-29-jenkins-release/</link>
      <pubDate>Wed, 29 May 2019 00:00:00 +0000</pubDate>
      
      <guid>https://jenkins-zh.cn/wechat/articles/2019/05/2019-05-29-jenkins-release/</guid>
      <description>2.178 (2019-05-20)  将 jmDNS 从3.4.0-jenkins-3更新到3.5.5,以防止不必要的 DNS 组播错误消息。 (issue 25369) 将 WinP 从1.27更新到1.28,以修复 Windows 优雅进程关闭逻辑中缺少 DLL 和控制台窗口闪烁的问题。 (issue 57477, 完整的变更日志) 确保独立的插件(插件曾经是 Jenkins 本身的一部分功能)在 Jenkins 启动时(需要时)作为已经存在的其他插件的隐含依赖项安装。 这简化了不使用更新中心的特殊安装场景的兼容性,例如当 Jenkins 从预先打包了一些插件的 Docker 镜像运行时。 (issue 57528) 将脚本安全插件的捆绑版本与最新的安全警告一起更新,在不太可能的情况下,它确实是从 WAR 而不是更新中心安装的。 (pull 4000)  2.177 (2019-05-12)  支持在流水线或其它任务类型的 fingerprint() 构建步骤中设置排除和区分大小写。 (文档, pull 3915) 允许通过不同的阴影构建球区分新任务、禁用的任务和中止构建的任务。 (pull 3997) 将 Windows 代理安装程序从1.10.0更新到1.11,当在 .NET 4.6 或更新版本运行时,在代理下载时启用 TLS 1.2。 (issue 51577, 完整的变更日志) 将 Winstone-Jetty 从5.2更新到5.3以更新 Jetty 到 9.4.18。 (pull 4016, 完整的变更日志, Jetty 9.</description>
    </item>
    
LinuxSuRen's avatar
LinuxSuRen 已提交
202 203 204 205 206 207 208 209 210 211 212 213 214
    <item>
      <title>如何对 Jenkins 共享库进行单元测试</title>
      <link>https://jenkins-zh.cn/wechat/articles/2019/05/2019-05-28-jenkins-pipeline-shared-lib-unit-test/</link>
      <pubDate>Tue, 28 May 2019 00:00:00 +0000</pubDate>
      
      <guid>https://jenkins-zh.cn/wechat/articles/2019/05/2019-05-28-jenkins-pipeline-shared-lib-unit-test/</guid>
      <description>Jenkins 共享库是除了 Jenkins 插件外,另一种扩展 Jenkins 流水线的技术。通过它,可以轻松地自定义步骤,还可以对现有的流水线逻辑进行一定程度的抽象与封装。至于如何写及如何使用它,读者朋友可以移步附录中的官方文档。
对共享库进行单元测试的原因 但是如何对它进行单元测试呢?共享库越来越大时,你不得不考虑这个问题。因为如果你不在早期就开始单元测试,共享库后期可能就会发展成如下图所示的“艺术品”——能工作,但是脆弱到没有人敢动。
[图片来自网络,侵权必删]
这就是代码越写越慢的原因之一。后人要不断地填前人有意无意挖的坑。
共享库单元测试搭建 共享库官方文档介绍的代码仓库结构 (root) +- src # Groovy source files | +- org | +- foo | +- Bar.groovy # for org.foo.Bar class +- vars | +- foo.groovy # for global &#39;foo&#39; variable | +- foo.txt # help for &#39;foo&#39; variable +- resources # resource files (external libraries only) | +- org | +- foo | +- bar.json # static helper data for org.</description>
    </item>
    
LinuxSuRen's avatar
LinuxSuRen 已提交
215 216 217 218 219 220 221 222 223 224 225 226 227 228
    <item>
      <title>Jenkins 文档特别兴趣小组</title>
      <link>https://jenkins-zh.cn/wechat/articles/2019/05/2019-05-27-docs-sig-announcement/</link>
      <pubDate>Mon, 27 May 2019 00:00:00 +0000</pubDate>
      
      <guid>https://jenkins-zh.cn/wechat/articles/2019/05/2019-05-27-docs-sig-announcement/</guid>
      <description>我们很高兴地宣布 Jenkins 文档特别兴趣小组的成立。 文档特别兴趣小组鼓励贡献者和外部社区创建和 review Jenkins 文档。
更多详情和计划,请参见:文档特别兴趣小组简介。
我能帮什么忙呢? Jenkins 文档特别兴趣小组希望从以下方面得到您的帮助:
 review 及修复 打开的 bug 报告 review Jenkins 文档 pull requests review Jenkins X 文档 pull requests  我该如何修复文档 bug? 关于如何为 Jenkins 文档做贡献的说明,请参见站点仓库中的 CONTRIBUTING 文件。 按照说明文件,提交 pull requests 以供 review 。
关于如何为 Jenkins X 文档做贡献的说明,请参见站点仓库中的 Jenkins X 文档站点。 按照说明文件,提交 pull requests 以供 review 。
我该如何评估 pull request? Jenkins 项目的 pull requests 会在 Jenkins 文档仓库进行 review 。 使用您的凭据登录到 GitHub,向 pull requests 中添加评论。</description>
    </item>
    
LinuxSuRen's avatar
LinuxSuRen 已提交
229 230 231 232 233 234 235 236 237
    <item>
      <title>使用 Jenkins X、Kubernetes 和 Spring Boot 实现 CI/CD</title>
      <link>https://jenkins-zh.cn/wechat/articles/2019/05/2019-05-24-achieve-cicd-with-jenkins-x-kubernetes-and-spring/</link>
      <pubDate>Fri, 24 May 2019 00:00:00 +0000</pubDate>
      
      <guid>https://jenkins-zh.cn/wechat/articles/2019/05/2019-05-24-achieve-cicd-with-jenkins-x-kubernetes-and-spring/</guid>
      <description>过去五年中的变化,如迁移到公有云以及从虚拟机向容器的转变,已经彻底改变了构建和部署软件的意义。
以 Kubernetes 为例。Google 于2014年开源,现在所有主流的公有云供应商都支持它&amp;mdash;它为开发人员提供了一种很好的方式,可以将应用程序打包到 Docker 容器中,并部署到任意 Kubernetes 集群中。
使用 CI/CD、Kubernetes 和 Jenkins X 进行高性能开发 在技术上,高性能团队几乎总是成功的必要条件,而持续集成、持续部署(CI/CD)、小迭代以及快速反馈是构建模块。为你的云原生应用程序设置 CI/CD 可能比较困难。通过自动化所有内容,开发人员可以花费宝贵的时间来交付实际的业务。
LinuxSuRen's avatar
LinuxSuRen 已提交
238 239 240
如何使用容器、持续交付和 Kubernetes 成为高效团队?这就是 Jenkins X 的切入点。
“Jenkins X 的理念是为所有开发人员提供他们自己的海军航海管家,可以帮助你航行持续交付的海洋。” - James Strachan
Jenkins X 帮助你自动化你在 Kubernetes 中的 CI/CD - 你甚至不需要学习 Docker 或 Kubernetes!
LinuxSuRen's avatar
LinuxSuRen 已提交
241 242 243 244
Jenkins X 能做什么? Jenkins X 在 Kubernetes 上自动安装,配置和升级 Jenkins 和其他应用程序(Helm,Skaffold,Nexus 等)。它使用 Docker 镜像、Helm 图表和流水线来自动化应用程序的 CI/CD。它使用 GitOps 来管理环境之间的升级,并通过在拉取请求和生产时对其进行评论来提供大量反馈。
Jenkins X 入门 要安装 Jenkins X,首先需要在你的机器或云供应商上安装 jx 二进制文件。从 Google Cloud 可以获得300美元的积分,所以我决定从那里开始。</description>
    </item>
    
LinuxSuRen's avatar
LinuxSuRen 已提交
245 246 247 248 249 250 251 252 253 254 255 256 257 258 259
    <item>
      <title>Jenkins 中文本地化的重大进展</title>
      <link>https://jenkins-zh.cn/wechat/articles/2019/05/2019-05-23-chinese-localization/</link>
      <pubDate>Thu, 23 May 2019 00:00:00 +0000</pubDate>
      
      <guid>https://jenkins-zh.cn/wechat/articles/2019/05/2019-05-23-chinese-localization/</guid>
      <description>我从2017年开始,参与 Jenkins 社区贡献。作为一名新成员,翻译可能是帮助社区项目最简单的方法。 本地化的优化通常是较小的改动,你无需了解项目完整的上下文, 甚至都不需要在任务跟踪系统中添加任务。 但很快,就遇到了一些问题,那就是并没有以中文为母语的人帮助 review 我的 PR。因此,有时候, 我提交的 PR 过很久才能够被合并到 master 中。
后来,有贡献者告诉我,可以在邮件列表中发一份邮件来描述当前遇到的问题,然后大家来讨论如何解决。 后来,我才了解到,在邮件列表中公开地讨论社区里的事情, 正是开源社区的做事风格。任何人都可以发表自己的观点, 我们并不受某个公司的限制,大家共同作出一致的决定。下面,我想与各位分享一下我们讨论后得出的一些成果。
JEP-216 JEP 是 Jenkins Enhancement Proposoals 的缩写,也就是 Jenkins 增强提议。所有针对 Jenkins 社区的增强或者改进的想法都可以通过这样的一种 提议机制来推动,特别兴趣小组(SIG)就是其中的一项提议。JEP-216 是关于 改进本地化的一项提议。
在之前,所有语言的本地化资源文件都是集中保存在 Jenkins Core 以及各个插件中的。而在 该提议中,每个语言都可以有一个单独的本地化插件,例如:简体中文插件。 终于,经过半年多的时间, 本地化支持插件和 简体中文插件已经可以支持各种类型的本地化资源文件(包括: Messages、属性以及帮助文件等)。从 插件网站上, 你可以看到 简体中文插件已经有超过1.3万的安装量,而且还在持续增长中。到目前为止,我们已经把 Jenkins Core 里所有简体中文的资源文件 迁移到了简体中文插件中,具体可以查看 PR-4008。
我相信,这对于每一位 Jenkins 的中文用户都是一件意义重大的事情,Jenkins 中文社区也会努力带给大家带来更好的使用体验。当然, 我们欢迎并期待任何一位有志参与开源社区的朋友!
在享受成果的同时,请与我一起感谢社区里为此作出重要贡献的朋友们。在 Daniel Beck 的帮助下,完成了“本地化支持插件”的发布; 在 Liam Newman 的帮助下完成了 JEP-216, 当然还包括社区中很多参与到中文本地化工作的贡献者。
中文本地化特别兴趣小组 我们相信,这个特别兴趣小组能够给 Jenkins 的中文用户带来更好的使用体验,并聚集更多来自中国的贡献者。这里的贡献者,并不只是开发者的专利和特权, 实际上开源社区需要很多有不同技能的人加入,包括当不仅限于:测试、运维、文档工程师 甚至是设计师、市场运营等等。不管你是尚未毕业的在校学生, 还是懵懂初入职场,或者已经是具有多年丰富的从业经历,在这里 都是平等、公开的。</description>
    </item>
    
LinuxSuRen's avatar
LinuxSuRen 已提交
260 261 262 263 264 265 266 267 268 269 270 271 272 273
    <item>
      <title>基于 Jenkins &#43; JaCoCo 实现功能测试代码覆盖率统计</title>
      <link>https://jenkins-zh.cn/wechat/articles/2019/05/2019-05-22-jacoco-coverage-for-functional-test/</link>
      <pubDate>Wed, 22 May 2019 00:00:00 +0000</pubDate>
      
      <guid>https://jenkins-zh.cn/wechat/articles/2019/05/2019-05-22-jacoco-coverage-for-functional-test/</guid>
      <description>使用 JaCoCo 统计功能测试代码覆盖率? 对于 JaCoCo,有所了解但又不是很熟悉。 &amp;ldquo;有所了解&amp;rdquo;指的是在 CI 实践中已经使用 JaCoCo 对单元测试代码覆盖率统计: 当代码 push 到代码仓库后,用 JaCoCo 进行单元测试代码覆盖率统计,并将相应数据推送到 SonarQube。 &amp;ldquo;不是很熟&amp;rdquo;指的是应用场景也仅限于此,并未进行过多研究与实践。
前不久,有测试同事提出,想要在实际测试时,用 JaCoCo 统计功能测试代码覆盖率。 其主要目的是在经过功能测试后,通过查看代码覆盖率统计的相关指标,增强对软件质量的信心。 经查阅资料,证明这是可行的。
由于对 JaCoCo 不甚了解,于是查阅官网资料对 JaCoCo 进一步了解。
进一步了解 JaCoCo JaCoCo,即 Java Code Coverage,是一款开源的 Java 代码覆盖率统计工具。 它由 EclEmma 团队根据多年来使用和集成现有库的经验教训而创建。
JaCoCo 愿景 JaCoCo 应该为基于 Java VM 的环境中的代码覆盖率分析提供标准技术。 重点是提供一个轻量级的、灵活的、文档良好的库,以便与各种构建和开发工具集成。
JaCoCo 产品功能  指令(C0)、分支(C1)、行、方法、类型和圈复杂度的覆盖率分析。 基于 Java 字节码,因此也可以在没有源文件的情况下工作。 通过基于 Java agent 的实时检测进行简单集成。其他集成场景(如自定义类加载器)也可以通过 API 实现。 框架无关性:平稳地与基于 Java VM 的应用程序集成,比如普通 Java 程序、OSGi 框架、web 容器或 EJB 服务器。 兼容所有已发布的 Java 类文件版本。 支持不同的 JVM 语言。 支持几种报告格式( HTML、XML、CSV )。 远程协议和 JMX 控件,以便在任何时间点从覆盖率 agent 请求执行数据 dump 。 Ant 任务,用于收集和管理执行数据并创建结构化覆盖报告。 Maven 插件,用于收集覆盖信息并在Maven构建中创建报告。  非功能特性  使用简单和与现有构建脚本和工具集成。 良好的性能和最小的运行时开销,特别是对大型项目。 轻量级实现,对外部库和系统资源的依赖性最小。 全面的文档。 完整文档化的 API ( JavaDoc ) 和用于与其他工具集成的示例。 回归测试基于 JUnit 测试用例,具有完整的功能测试覆盖率。  对 JaCoCo 可以与现有构建脚本和工具进行集成这里做进一步说明: 官方提供了 Java API、Java Agent 、CLI、Ant 、Maven、Eclipse 这几种集成方式; 第三方提供了诸如与 Gradle、IDEA、Jenkins 等其它工具的集成方式。</description>
    </item>
    
LinuxSuRen's avatar
LinuxSuRen 已提交
274 275 276 277 278 279 280 281 282 283 284 285 286 287 288 289 290 291 292 293 294 295 296
    <item>
      <title>使用 Jenkins &#43; Ansible 实现 Spring Boot 自动化部署101</title>
      <link>https://jenkins-zh.cn/wechat/articles/2019/05/2019-05-20-jenkins-ansible-springboot/</link>
      <pubDate>Mon, 20 May 2019 00:00:00 +0000</pubDate>
      
      <guid>https://jenkins-zh.cn/wechat/articles/2019/05/2019-05-20-jenkins-ansible-springboot/</guid>
      <description>本文要点: 1. 设计一条 Spring Boot 最基本的流水线:包括构建、制品上传、部署。 1. 使用 Docker 容器运行构建逻辑。 1. 自动化整个实验环境:包括 Jenkins 的配置,Jenkins agent 的配置等。
1. 代码仓库安排 本次实验涉及以下多个代码仓库:
% tree -L 1 ├── 1-cd-platform # 实验环境相关代码 ├── 1-env-conf # 环境配置代码-实现配置独立 └── 1-springboot # Spring Boot 应用的代码及其部署代码  1-springboot 的目录结构如下:
% cd 1-springboot % tree -L 1 ├── Jenkinsfile # 流水线代码 ├── README.md ├── deploy # 部署代码 ├── pom.xml └── src # 业务代码  所有代码,均放在 GitHub:https://github.com/cd-in-practice
2. 实验环境准备 笔者使用 Docker Compose + Vagrant 进行实验。环境包括以下几个系统: * Jenkins * 1 Jenkins master,全自动安装插件、默认用户名密码:admin/admin。 * Jenkins agent * 2 Jenkins agent 运行在 Docker 容器中,共启动两个。 * Artifactory * 1 一个商业版的制品库。笔者申请了一个 30 天的商业版。</description>
    </item>
    
    <item>
      <title>转载规范及声明</title>
      <link>https://jenkins-zh.cn/wechat/articles/2019/05/2019-05-20-translation-norms/</link>
      <pubDate>Mon, 20 May 2019 00:00:00 +0000</pubDate>
      
      <guid>https://jenkins-zh.cn/wechat/articles/2019/05/2019-05-20-translation-norms/</guid>
      <description>转载声明 首先感谢大家对 Jenkins 中文社区内容的认可。传播有道,我们希望每一篇文章的发声不仅能被看见,也都能得到尊重。因此,若需转载本社区的文章,请先获取本社区授权,未经授权禁止转载。如未经许可私自转载,我们会有专人负责沟通进行整改,对于不听劝解的将会被添加到社区官网的黑名单中以作公示。
如需转载,请仔细阅读并遵守以下转载须知: 1. 本站发文均于Jenkins 中文社区首发,然后由微信公众号、CSDN、简书、开源中国、掘金等渠道发出 2. 不论通过何种渠道获得本站文章,若想要转载,均可在文章下方留言,获得授权后方可进行在转载 3. 文章转载首行,需添加本文转自 [Jenkins 中文社区],Jenkins 中文社区需加入链接 http://jenkins-zh.cn 4. 转载文章标题不得进行修改 5. 转载文章内容不得做任何修改,如有文章内容问题,请与本社区相关联系人沟通后,再进行下一步处理 6. 为了保护作者权益,作者署名必须保留 7. 如是微信公众号转载,请在获得授权的情况下,使用微信的转载功能进行转载 8. 文章在推送三天后方可进行转载</description>
    </item>
    
LinuxSuRen's avatar
LinuxSuRen 已提交
297 298 299 300 301 302 303 304 305 306 307 308 309
    <item>
      <title>从 Jenkins 到 Jenkins X</title>
      <link>https://jenkins-zh.cn/wechat/articles/2019/05/2019-05-17-from-jenkins-to-jenkins-x/</link>
      <pubDate>Fri, 17 May 2019 00:00:00 +0000</pubDate>
      
      <guid>https://jenkins-zh.cn/wechat/articles/2019/05/2019-05-17-from-jenkins-to-jenkins-x/</guid>
      <description>这是一个关于 dailymotion 从 Jenkins 到 Jenkins X 的旅程,我们遇到的问题,以及我们是如何解决它们的故事。
我们的上下文 在 dailymotion ,我们坚信 devops 最佳实践,并且在 Kubernetes 投入了大量投资。 我们的部分产品已经部署在 Kubernetes 上,但并不是全部。 因此,当迁移我们的广告技术平台的时候,我们想要完全采用“ Kubernetes 式”——或者云原生,以追随技术趋势! 这意味着要重新定义整个 CI/CD 流水线,从静态/永久环境迁移,转向动态按需分配环境。 我们的目标是授权给我们的开发人员,缩短我们的上线时间以及降低我们的运营成本。
对于新的 CI/CD 平台我们的初始需求是: - 尽可能避免从零开始:我们的开发人员已经习惯使用 Jenkins 和声明式流水线,并且它们可以很好地满足我们当前的需求。 - 以公有云基础设施为目标——Google 云平台和 Kubernetes 集群 - 与 gitops 方法论兼容——因为我们喜欢版本控制、同行评审和自动化
在 CI/CD 生态系统中有相当多的参与者,但是只有一个符合我们的需求,Jenkins X ,它基于 Jenkins 和 Kubernetes ,原生支持预览环境和 gitops
Kubernetes 之上的 Jenkins Jenkins X 的设置相当简单,并且在他们的官方网站上已经有很好的文档(译注:译者曾对 Jenkins X 文档中文本地化做了一些贡献,同时也期待更多的人参与以完善中文文档)。 由于我们已经使用了 Google Kubernetes Engine (GKE),所以 jx 命令行工具自己创建了所有东西,包括 Kubernetes 集群。 这里有一个小小的*哇哦效果*,在几分钟内获得一个完整的工作系统是非常令人印象深刻的。</description>
    </item>
    
LinuxSuRen's avatar
LinuxSuRen 已提交
310 311
    <item>
      <title>与云无关的用于 Kubernetes 的自动化 CI/CD </title>
LinuxSuRen's avatar
LinuxSuRen 已提交
312
      <link>https://jenkins-zh.cn/wechat/articles/2019/05/2019-05-16-cloud-agnostic-automated-cicd-for-k8s/</link>
LinuxSuRen's avatar
LinuxSuRen 已提交
313 314
      <pubDate>Thu, 16 May 2019 00:00:00 +0000</pubDate>
      
LinuxSuRen's avatar
LinuxSuRen 已提交
315
      <guid>https://jenkins-zh.cn/wechat/articles/2019/05/2019-05-16-cloud-agnostic-automated-cicd-for-k8s/</guid>
LinuxSuRen's avatar
LinuxSuRen 已提交
316 317 318 319 320 321 322 323 324
      <description>在本文中,我想讨论一种在云环境中为 Kubernetes 工作负载实现自动化端到端 CI/CD 的方法。 这里可能有其它解决方案,而像 AWS、Microsoft Azure 和 GCP 这样的云提供商也提供了自己的一套框架,以实现与 Kubernetes 相同的目标。
它的部署模型的核心是 Rancher,Rancher 负责为托管在不同云环境和裸机环境中的多个 Kubernetes 集群提供集中管理与运营的能力。 根据应用程序和业务需要,这里提到的工具可以替换为自己选择的工具。
在详细介绍之前,这里有张部署模型的快照:
持续集成组件 我们使用 JIRA、BitBucket、Bamboo 和 Nexus 作为自动化持续集成组件。 需求和用户故事来自 JIRA ; 开发人员将他们的代码放进 BitBucket ; 代码被代码评审工具和静态分析工具构建与集成,Bamboo 生成的 Docker 镜像被推送到 Nexus。 这些镜像会经过特定的容器安全检查。
当你有许多微服务/应用程序需要构建时,那么处理 Kubernetes 集群工作负载的部署、升级和回滚可能会复杂。 版本控制是我们需要考虑的另一个挑战。 Helm 有助于克服这些大多数挑战,并使部署变得简单。
如果你想知道你是否需要有一个 chart 将所有 deployments 包含在其中, 或者允许每个应用程序和微服务都有一个单独的 chart , 那么我们希望将这些 charts 放到特定的应用程序或微服务的仓库中, 这样我们就不需要有单独的仓库来维护 Helm 制品。 这就省去了为实际的代码和 Helm 模板维护两个独立仓库的工作。 开发人员可以对任何应用程序代码更改所需的模板更改有更多的控制权。
Nexus 作为 Docker 镜像和 Helm chart(使用的是 Helm Nexus 插件)的仓库。 每次成功构建应用程序后,镜像和 chart 都是可用的并被推送到 Nexus 。</description>
    </item>
    
LinuxSuRen's avatar
LinuxSuRen 已提交
325 326 327 328 329 330 331 332 333 334 335 336 337 338 339
    <item>
      <title>19年 GSoC 中 Jenkins 的七个项目</title>
      <link>https://jenkins-zh.cn/wechat/articles/2019/05/2019-05-15-gsoc-annoncement/</link>
      <pubDate>Wed, 15 May 2019 00:00:00 +0000</pubDate>
      
      <guid>https://jenkins-zh.cn/wechat/articles/2019/05/2019-05-15-gsoc-annoncement/</guid>
      <description>Google Summer of Code (GSoC) 项目是一个年度性的全球化活动,该项目旨在鼓励高校学生在暑假期间参与到开源项目中来。
通过审核的学生会收到由 Google 提供的带薪工作,参与到设计好的项目中以改进或提升 Jenkins 项目。作为回报,数名 Jenkins 社区成员会志愿作为学生“导师”来帮助他们融入开源社区并成功完成他们的夏令营项目。
Jenkins 社区从2009年开始以开源社区的身份参与到 GSoC 中,并分别在16年有5个项目、18年有3个项目被选中。 而今年的项目、导师的数量是最多的一年,相信在这个夏天里,Jenkins 社区可以给我们的用户带来很多不错的 成果,其中也许正有你或者你们团队所希望有的功能或者改进。
2019年被选中的七个项目包括:
 支持制品升级的流水线插件 基于云的外部工作空间管理器插件 多分支流水线对 Gitlab 的支持 插件安装管理器的 CLI 工具以及库 基于 Apache Kafka 以及 Kubernetes 的远程协议 基于角色策略的插件的改进 时间窗口插件——UI 改进  上面的每个项目都有一位学生主导进行,至少两位具有相关经验的导师加以指导,每周会有两次的同步会议来 保证方向与进度。当然,在开源社区里任何人都可以通过 PR 的形式对代码或者文档进行 Review。
今年负责 GSoC 的管理员为:
 Martin d’Anjou Jeff Pearce Lloyd Chang Oleg Nenashev  我本人是“多分支流水线对 Gitlab 的支持”项目的领队导师,请大家与我一起期待这七位高校学生的精彩表现,后续社区也会及时发布上面项目的介绍以及进展。</description>
    </item>
    
LinuxSuRen's avatar
deploy  
LinuxSuRen 已提交
340 341 342 343 344 345 346 347 348 349 350 351 352 353 354 355
    <item>
      <title>基于 Jenkins 的 DevOps 平台应该如何设计凭证管理</title>
      <link>https://jenkins-zh.cn/wechat/articles/2019/05/2019-05-14-devops-jenkins-credential-manage/</link>
      <pubDate>Tue, 14 May 2019 00:00:00 +0000</pubDate>
      
      <guid>https://jenkins-zh.cn/wechat/articles/2019/05/2019-05-14-devops-jenkins-credential-manage/</guid>
      <description>背景 了解到行业内有些团队是基于 Jenkins 开发 DevOps 平台。而基于 Jenkins 实现的 DevOps 平台,就不得不考虑凭证的管理问题。
本文就此问题进行讨论,尝试找出相对合理的管理凭证的方案。
一开始我们想到的方案可能是这样的:用户在 DevOps 平台增加凭证后,DevOps 再将凭证同步到 Jenkins 上。Jenkins 任务在使用凭证时,使用的是存储在 Jenkins 上的凭证,而不是 DevOps 平台上的。
但是,仔细想想,这样做会存在以下问题: * Jenkins 与 DevOps 平台之间的凭证数据会存在不一致问题。 * 存在一定的安全隐患。通过 Jenkins 脚本命令行很容易就把所有密码的明文拿到。哪天 Jenkins 被注入了,所有的凭证一下子就被扒走。 * 无法实现 Jenkins 高可用,因为凭证存在 Jenkins master 机器上。
那么,有没有更好的办法呢?
期望实现的目标 先定我们觉得更合理的目标,然后讨论如何实现。以下是笔者觉得合理的目标: &amp;gt; 用户还是在 DevOps 管理自己的凭证。但是 DevOps 不需要将自己凭证同步到 Jenkins 上。Jenkins 任务在使用凭证时,从 DevOps 上取。
实现方式 Jenkins 有一个 Credentials Binding Plugin 插件,在 Jenkins pipeline 中的用法如下:
withCredentials([usernameColonPassword(credentialsId: &#39;mylogin&#39;, variable: &#39;USERPASS&#39;)]) { sh &#39;&#39;&#39; curl -u &amp;quot;$USERPASS&amp;quot; https://private.</description>
    </item>
    
LinuxSuRen's avatar
LinuxSuRen 已提交
356 357 358 359 360 361 362 363 364 365 366 367 368 369 370 371 372 373 374 375 376 377 378 379 380
    <item>
      <title>Jenkins 公众号送书福利</title>
      <link>https://jenkins-zh.cn/wechat/articles/2019/05/2019-05-13-jenkins-book-gift/</link>
      <pubDate>Mon, 13 May 2019 00:00:00 +0000</pubDate>
      
      <guid>https://jenkins-zh.cn/wechat/articles/2019/05/2019-05-13-jenkins-book-gift/</guid>
      <description>Jenkins 中文社区是一个开放、包容、活跃的社区,包含大量的 Jenkins 干货。
当然,它也会为公众号的粉丝们发放福利。
本次福利是《Jenkins 2.x实践指南》x 5,以下是介绍:
本次活动书籍均由博文视点(Broadview)提供,特此感谢。
参与方式:  关注本公众号,并在后台回复【抽奖】,根据二维码进入小程序抽奖。 开奖时间为:5月19日晚上7点自动开奖(记得填自己的手机号,地址以便中奖后邮寄发出)。  中奖的同学,不要忘记发朋友圈分享支持噢~
等不急的同学,还可以扫二维码直接购买:</description>
    </item>
    
    <item>
      <title>持续交付峰会 Call For Papers</title>
      <link>https://jenkins-zh.cn/wechat/articles/2019/05/2019-05-13-cdf-call-for-papers/</link>
      <pubDate>Mon, 13 May 2019 00:00:00 +0000</pubDate>
      
      <guid>https://jenkins-zh.cn/wechat/articles/2019/05/2019-05-13-cdf-call-for-papers/</guid>
      <description>持续交付峰会是一个为期一天的活动,将开源 CI/CD 社区汇集在一起。这一天将包括主题演讲,项目展示和终端用户的故事,以及 BoF 会议。与同行会面并推动未来持续交付的方向。
重要日期  CFP 开始:4月29日,星期一 CFP 关闭:太平洋标准时间 5月17日,23:59,星期五 CFP 通知:5月29日,星期三 日程通知:5月30日,星期一 幻灯片截止:6月17日,星期四 活动时间:6月24日  建议的话题  CDF 的项目  Jenkins Jenkins X Tekton 和 Spinnaker 讲述你正在使用的这些项目的功能或者集成的功能,分享你为什么要使用以及如何利用这些项目解决了哪些问题  你们团队的持续交付  我们希望能听到真实项目中的使用,以及你们团队所推荐的持续交付实践  安全与合规性最佳实践  分享在持续交付中改善你们的软件供应链中的安全性的案例和技巧  帮助我们的同时也帮助自己 描绘你希望看到的 CI/CD 景象   点击这里提交你的演讲题目
点击这里查看其他更多的同场活动。</description>
    </item>
    
LinuxSuRen's avatar
LinuxSuRen 已提交
381 382 383 384 385 386 387 388 389
    <item>
      <title>Jenkins 版本发布</title>
      <link>https://jenkins-zh.cn/wechat/articles/2019/05/2019-05-09-jenkins-release/</link>
      <pubDate>Thu, 09 May 2019 00:00:00 +0000</pubDate>
      
      <guid>https://jenkins-zh.cn/wechat/articles/2019/05/2019-05-09-jenkins-release/</guid>
      <description> 2.175 (2019-04-28)  当构建完成后,更新状态图标 (issue 16750) 插件管理页面提供了更方便的插件更新选项,包括:“全选”、“兼容的“或”全不选“。 “兼容”的选择(之前为“全选”)已经不再包括含有任何兼容性警告的插件。 (issue 56477) 从连接 Jenkins 节点的界面上移除会误导到 Java Web Start 和 JNLP 的链接等引用。 (pull 3998) 再次启用 Stapler 请求分发 telemetry。 (pull 3999) 确保远程对象仅通过远程通道被序列化。 确定永远不会设计以 XML 形式持久化到磁盘中的类包括: FilePath, [Stream]TaskListener, and ProcessTree. (issue 47896) 修复在 Linux 代理安装器中看到的一些错误。 (issue 57071) 使得 Debian/Ubuntu 启动器脚本对 Java 11 兼容。 (issue 57096) 开发者:使得 mvn -f war hudson-dev:run支持${port}。 (pull 3984)  2.174 (2019-04-21)  重命名一个代理节点,保持旧的配置,导致重启后旧的代理节点再次出现。 (issue 56403) 嵌套的视图现在也可以根据名称搜索了。 (issue 43322)  </description>
    </item>
    
LinuxSuRen's avatar
LinuxSuRen 已提交
390 391 392 393 394 395 396 397 398 399 400 401 402 403 404 405 406 407 408
    <item>
      <title>Jenkins 插件开发之旅:两天内从 idea 到发布(下篇)</title>
      <link>https://jenkins-zh.cn/wechat/articles/2019/05/2019-05-08-jenkins-plugin-develop-within-two-days-part02/</link>
      <pubDate>Wed, 08 May 2019 00:00:00 +0000</pubDate>
      
      <guid>https://jenkins-zh.cn/wechat/articles/2019/05/2019-05-08-jenkins-plugin-develop-within-two-days-part02/</guid>
      <description>本文分上下两篇,上篇介绍了从产生 idea 到插件开发完成的过程; 下篇将介绍将插件托管到 Jenkins 插件更新中心的一系列过程。
托管插件 托管插件包括一系列流程步骤。 笔者完成了它所有步骤(包括非必须的步骤),其中主要有两个具有标志性的任务: - 插件代码被托管在 jenkinsci GitHub 组织的一个仓库,然后作者拥有它的管理权限。
笔者插件的代码仓库为:jenkinsci/maven-snapshot-check-plugin 。 - 你可以将插件发布到 Jenkins 项目的 Maven 仓库,它是 Jenkins 项目所使用的更新站点的数据来源。
准备工作 在请求插件托管之前,需要完成以下几个步骤。
查找类似的插件 Jenkins 社区欢迎任何人的贡献,但为了让 Jenkins 用户受益, 它要求查找解决相同或类似问题的插件,看看是否可以与现有的维护人员联手。 可以在 https://plugins.jenkins.io 查看所有的插件, 以确认是否已有类似的插件实现了你计划实现的功能。 笔者在之前已进行过查找,并没有找到可以实现笔者计划实现的功能的类似插件。
命名规约 Jenkins 制定了一些与插件相关的命名规约。 插件开发者要确保遵循这些命名规约。
artifactId 插件的 artifactId 被用于文件基本名称,是 Jenkins 插件和更新站点的唯一标识。
它需要遵循一些发布规约: - 使用小写 ID ,并根据需要使用连字符分隔术语。 - 除非名称有任何意义,否则不要在 ID 中包含 jenkins 或 plugin 。
插件名称 插件的名称在 Jenkins UI 和其它地方(如:插件站点)展示给用户。
如果可以,建议使用简短的描述性名称,如 Subversion 。
笔者所写的插件的名称为:Maven SNAPSHOT Check 。</description>
    </item>
    
LinuxSuRen's avatar
LinuxSuRen 已提交
409 410 411 412 413 414 415 416 417 418 419 420 421 422 423 424 425
    <item>
      <title>Jenkins 自动化安装插件</title>
      <link>https://jenkins-zh.cn/wechat/articles/2019/05/2019-05-07-jenkins-install-plugins-shell/</link>
      <pubDate>Tue, 07 May 2019 00:00:00 +0000</pubDate>
      
      <guid>https://jenkins-zh.cn/wechat/articles/2019/05/2019-05-07-jenkins-install-plugins-shell/</guid>
      <description>手工安装 Jenkins 插件的方法 通常,我们有两种方法安装 Jenkins 插件。第一种方法是到 Jenkins 插件管理页面搜索插件,然后安装。第二种方法是上传 Jenkins 插件的 hpi 文件安装。这两种方法能满足大多数人的需求。
第一种方法,如下图所示: 第二种方法,如下图所示: 但是对于需要保证 Jenkins 稳定或在 Jenkins 上进行二次开发的同学来说,以上方法是无法满足需求的。
第一种方法是无法指定插件的版本。第二种方式必须自己找到该插件的依赖树,然后根据依赖关系一个个地安装。是的,手工上传插件的这种方法,Jenkins 是不会自动下载依赖的。
还有,就是这两种方式都无法实现批量安装。
自动安装插件的方法 那么,有什么方法能指定插件的版本,又能自动下载它的依赖,还能批量下载呢?
幸运的是,Jenkins 的 Docker 镜像的代码仓库里的 install-plugins.sh 脚本已经实现。只不过需要我们拿过来小小修改才能使用。笔者修改后创建了相应的代码仓库:jenkins-install-plugins-shell 。链接在文章末尾。
以下是 jenkins-install-plugins-shell 的使用方法: 1. 将代码 clone 到 JENKINS_HOME 目录中。
cd $JENKINS_HOME git clone https://github.com/zacker330/jenkins-install-plugins-shell.git cd jenkins-install-plugins-shell   在 plugins.txt 中加入希望安装的插件 在 jenkins-install-plugins-shell 目录中,有一个 plugins.txt 文件,在文件中写入希望安装的插件及版本号。例如:  ansible:1.0 powershell:1.3  执行安装
# Jenkins War 的路径,用于分析 export JENKINS_WAR_PATH=&amp;lt;Jenkins war文件的路径&amp;gt; chmod +x install-plugins.</description>
    </item>
    
LinuxSuRen's avatar
LinuxSuRen 已提交
426 427 428 429 430 431 432 433 434 435 436 437 438 439 440
    <item>
      <title>Jenkins 插件开发之旅:两天内从 idea 到发布(上篇)</title>
      <link>https://jenkins-zh.cn/wechat/articles/2019/05/2019-05-06-jenkins-plugin-develop-within-two-days-part01/</link>
      <pubDate>Mon, 06 May 2019 00:00:00 +0000</pubDate>
      
      <guid>https://jenkins-zh.cn/wechat/articles/2019/05/2019-05-06-jenkins-plugin-develop-within-two-days-part01/</guid>
      <description>本文介绍了笔者首个 Jenkins 插件开发的旅程, 包括从产生 idea 开始,然后经过插件定制开发, 接着申请将代码托管到 jenkinsci GitHub 组织, 最后将插件发布到 Jenkins 插件更新中心的过程。
鉴于文章篇幅过长,将分为上下两篇进行介绍。
从一个 idea 说起 前几天和朋友聊天时,聊到了 Maven 版本管理领域的 SNAPSHOT 版本依赖问题, 这给他带来了一些困扰,消灭掉历史遗留应用的 SNAPSHOT 版本依赖并非易事。
类似问题也曾经给笔者带来过困扰,在最初没能去规避问题, 等到再想去解决问题时却发现困难重重,牵一发而动全身, 导致这个问题一直被搁置,而这也给笔者留下深刻的印象。
等到再次制定 Maven 规范时,从一开始就考虑 强制禁止 SNAPSHOT 版本依赖发到生产环境。
这里是通过在 Jenkins 构建时做校验实现的。 因为没有找到提供类似功能的 Jenkins 插件, 目前这个校验通过 shell 脚本来实现的, 具体的做法是在 Jenkins 任务中 Maven 构建之前增加一个 Execute shell 的步骤, 来判断 pom.xml 中是否包含 SNAPSHOT 关键字,如果包含,该次构建状态将被标记为失败。 脚本内容如下:
#!/bin/bash if [[ ` grep -R --include=&amp;quot;pom.xml&amp;quot; SNAPSHOT .` =~ &amp;quot;SNAPSHOT&amp;quot; ]]; then echo &amp;quot;SNAPSHOT check failed&amp;quot; &amp;amp;&amp;amp; grep -R --include=&amp;quot;pom.</description>
    </item>
    
LinuxSuRen's avatar
LinuxSuRen 已提交
441 442 443 444 445 446 447 448 449 450 451 452 453 454
    <item>
      <title>应该使用什么 CI/CD 工具?</title>
      <link>https://jenkins-zh.cn/wechat/articles/2019/04/2019-04-30-what-cicd-tool-should-i-use/</link>
      <pubDate>Tue, 30 Apr 2019 00:00:00 +0000</pubDate>
      
      <guid>https://jenkins-zh.cn/wechat/articles/2019/04/2019-04-30-what-cicd-tool-should-i-use/</guid>
      <description>在我们正在进行的 Kubernetes FAQ 系列中,我们回答了社区中一些常见的问题,本周我们将讨论在选择 CI/CD 工具时需要考虑什么。
目前已经有大量的 CI/CD 工具可供选择-开源解决方案和商业解决方案。在这里,我们重点介绍在设置持续交付流水线时要考虑的一些最重要的注意事项。
在这篇文章中你将学到: - 为什么需要自动化流水线 - 部署典型流水线的组件 - CD 流水线功能需要考虑 - 如何合并 GitOps
为什么要创建自动化 CI/CD 流水线? 自动化 CI/CD 流水线有许多好处: - 将您的上线时间从数周或数月减少到数天或数小时。通过自动化流水线,开发团队可以提高发布的速度以及代码的质量。以小增量连续添加的新功能和修复可以使产品具有更少的缺陷。 - 一个强大的开发团队。由于交付流水线的所有阶段都可供团队中的任何人检查、改进和验证,因此可以创建对构建的所有权,从而鼓励整个组织的强大团队合作和协作能力。 - 降低软件开发的风险和成本。自动化鼓励开发人员在继续前进之前分阶段验证代码更改,从而减少了缺陷最终出现在生产中的机会。 - 减少进展中的工作量。CD 流水线提供从开发到客户的快速反馈循环。这个迭代周期不仅可以帮助您构建正确的产品,而且还允许开发人员更快地进行产品改进,从而减少正在进行的工作。 典型的部署流水线 CD 流水线由几个不同的阶段组成; 一个工具不能满足所有这些步骤。
以下是构成大多数自动化流水线的步骤: 1. 在笔记本电脑上编写代码,将其推入源代码仓库(如 Git)。 2. 代码通过单元、集成和其他自动化测试。如果测试通过,将构建成新的 Docker 镜像。 3. 将镜像推送到镜像仓库。 4. 将新镜像推送到集群中。 思考 CD 流水线的特性 创建流水线的困难之一是成功地将您想要使用的工具粘合在一起。这些是为流水线选择工具时要考虑的主要功能: - 端到端的安全性 - 能够使用完全可重现的审计跟踪进行回滚 - 内置可观察性和警报功能 - 平均快速部署时间以及平均快速恢复时间 - 简单的开发人员经验和工作流程
流水线端到端的安全性 在市场上的 CI/CD 工具中,有些工具将 CI 和 CD 部分合并为一个工具。或者更糟糕的是,那些负责创建 CI/CD 流水线的人将组装一系列手工锻造的脚本,这些脚本可以在一个方向上通过流水线推送代码,或执行被称为CIOP 流水线。</description>
    </item>
    
LinuxSuRen's avatar
LinuxSuRen 已提交
455 456
    <item>
      <title>使用 Jenkins X 渐进式交付:自动化金丝雀部署</title>
LinuxSuRen's avatar
LinuxSuRen 已提交
457
      <link>https://jenkins-zh.cn/wechat/articles/2019/04/2019-04-29-progressive-delivery-with-jenkins-x-automatic-cana/</link>
LinuxSuRen's avatar
LinuxSuRen 已提交
458 459
      <pubDate>Mon, 29 Apr 2019 00:00:00 +0000</pubDate>
      
LinuxSuRen's avatar
LinuxSuRen 已提交
460
      <guid>https://jenkins-zh.cn/wechat/articles/2019/04/2019-04-29-progressive-delivery-with-jenkins-x-automatic-cana/</guid>
LinuxSuRen's avatar
LinuxSuRen 已提交
461 462 463 464 465
      <description>这是渐进式交付系列的第三篇文章,前两篇请参见: - Kubernetes 中的渐进式交付:蓝绿部署和金丝雀部署 - 使用 Jenkins X 渐进式交付
渐进式交付被 Netflix, Facebook 以及其它公司使用用来减轻部署的风险。 但是现在你可以在使用Jenkins X时采用它。
渐进式交付是持续交付的下一步,它将新版本部署到用户的一个子集,并在将其滚动到全部用户之前对其正确性和性能进行评估,如果不匹配某些关键指标,则进行回滚。
尤其是,我们聚焦金丝雀发布,并让它在你的 Jenkins X 应用中变得易于采用。 金丝雀发布包括向应用程序的新版本发送一小部分流量,并在向其他用户发布之前验证这里没有错误。 Facebook 就是这样做的,首先向内部员工提供新版本,然后是一小部分用户,然后是其他所有用户,但是你要采用它并不需要成为 Facebook !
你可以在 Martin Fowler 的网站阅读更多与金丝雀发布相关信息。
LinuxSuRen's avatar
LinuxSuRen 已提交
466 467
Jenkins X 如果在 Jenkins X 中你已经有一个应用,那么你知道的你可以 通过 jx promote myapp --version 1.0 --env production 命令 promote 它到&amp;rdquo;生产&amp;rdquo;环境。 但是,在检查新版本是否失败的同时,它也可以自动并逐步地向一定比例的用户推出。 如果发生失败,应用程序将自动回滚。 整个过程中完全没有人为干预。
注意:这个新功能是非常新的,在将来这些步骤将不再需要,因为它们也将由 Jenkins X 自动化了。
LinuxSuRen's avatar
LinuxSuRen 已提交
468 469 470
作为第一步,三个 Jenkins X 插件需要被安装: - Istio : 一种服务网格容许我们管理我们服务的流量。 - Prometheus :Kubernetes 中最流行的监控系统。 - Flagger :一个使用 Istio 的项目,该项目使用 Prometheus 的指标自动化进行金丝雀发布和回滚。</description>
    </item>
    
LinuxSuRen's avatar
LinuxSuRen 已提交
471 472
    <item>
      <title>我们为什么需要 DevSecOps 和制品仓库?</title>
LinuxSuRen's avatar
LinuxSuRen 已提交
473
      <link>https://jenkins-zh.cn/wechat/articles/2019/04/2019-04-28-devsecops/</link>
LinuxSuRen's avatar
LinuxSuRen 已提交
474 475
      <pubDate>Sun, 28 Apr 2019 00:00:00 +0000</pubDate>
      
LinuxSuRen's avatar
LinuxSuRen 已提交
476
      <guid>https://jenkins-zh.cn/wechat/articles/2019/04/2019-04-28-devsecops/</guid>
LinuxSuRen's avatar
LinuxSuRen 已提交
477 478 479 480 481 482 483 484 485 486
      <description>Helen Beal 曾经在一次讨论什么是 DevSecOps 工程师的会议上发言。令她惊讶的是,在与会人员中,许多人都没有将安全机制引入 DevOps。在与人们讨论之后,她将大家的问题总结为三类:安全机制会制造额外的隔阂;组织中的人很难理解 DevOps,因此安全机制可能会造成更多困惑;可能没有为安全机制预留空间。
当然,Helen 不同意这些观点。她在技术领域从业近20年,专注于软件开发生命周期,对于 DevOps 和DevSecOps 有一些自己的理解。她自称为 Ranger4 的 「DevOpsologist」,因为她帮助那里的组织实现 DevOps。她在世界各地分享知识,并且她将参加我们在 2018 年的 Nexus User Conference ,讨论工具仓库及其在 DevSecOps 工具链中的角色。
从高层次来看,Helen 为 DevSecOps 提出了一些重要建议:
 确保安全是每一个人的职责 认识到安全人员的匹配限制。平均而言,人员比例为 100 名开发人员 : 10 名运维人员 : 1名安全人员 尽早移交产品进行测试和验证。缺乏足够的安全人员会造成一定的约束,移交并自动执行任务可以减少瓶颈并提前解决问题。 积极主动地降低风险 培养安全文化  Helen 花了一些时间阐述如何培养安全文化,组织在维护系统和人员行为安全时可以采用的一些关键原则和行动。
行为安全使个人和团队能够以安全的方式行事。为了培养行为安全,她建议:
 让人们意识到,失败是一个学习机会 确保团队之间有共同的责任和目标 不要吝啬花时间做实验 使用可协作的平台来分享学习经验和最佳实践 对实验的过程进行回顾,并确保有后续  她提到了几个真实的例子,例如 Esty,LEGO 还有 P&amp;amp;G 的「失败奖励」以及 Spotify 用来展示和追踪失败的「失败墙」。
系统安全能够保障你的基础设施安全,她关于培养系统安全的建议包括:
 用持续集成进行构建 使用部署自动化来驱动一致性和可审计性,并允许即时重新部署上一个已知的可用版本 用 ChatOps 来归类问题和事件 使用应用程序性能管理以提早发现问题并警告 降低出现问题波及范围,例如使用功能开关,金丝雀测试,蓝/绿环境和微服务 将产品需求与服务台相结合 养成使用混沌工程来找到失败原因的习惯  在讲述 DevSecOps 案例并说明如何灌输安全文化后,她将话题转向如何使用制品仓库。 毕竟,这是一个 Nexus 会议,制品仓库是 Nexus 的特色。</description>
    </item>
    
LinuxSuRen's avatar
LinuxSuRen 已提交
487 488
    <item>
      <title>使用 Jenkins X 渐进式交付</title>
LinuxSuRen's avatar
LinuxSuRen 已提交
489
      <link>https://jenkins-zh.cn/wechat/articles/2019/04/2019-04-26-progressive-delivery-with-jenkins-x/</link>
LinuxSuRen's avatar
LinuxSuRen 已提交
490 491
      <pubDate>Fri, 26 Apr 2019 00:00:00 +0000</pubDate>
      
LinuxSuRen's avatar
LinuxSuRen 已提交
492
      <guid>https://jenkins-zh.cn/wechat/articles/2019/04/2019-04-26-progressive-delivery-with-jenkins-x/</guid>
LinuxSuRen's avatar
LinuxSuRen 已提交
493 494 495 496 497 498 499
      <description>这是渐进式交付系列的第二篇文章,第一篇请看:Kubernetes 中的渐进式交付:蓝绿部署和金丝雀部署。
我使用的我的 Croc Hunter 示例项目评估了 Jenkins X 中金丝雀部署和蓝绿色部署的三种渐进式交付方案。 - Shipper 为 Jenkins X 构建的 Helm 图表启用了蓝绿部署和多集群部署,但是对图表的内容有限制。 你可以在 staging 和生产环境之间做蓝绿部署。 - Istio 允许通过创建一个虚拟服务将一定比例的流量发送到 staging 或预览环境。 - Flagger 构建在 Istio 之上,并添加了金丝雀部署,可以根据指标自动进行滚动部署和回滚。 Jenkins X 可以通过创建一个 Canary 对象自动启用金丝雀功能,从而实现优雅的滚动部署,以升级到生产环境。
这里可以查看 Shipper、Isito 和 Flager 的示例代码。
Shipper 由于 Shipper 对创建的 Helm 图表有多个限制,因此我必须对应用做一些更改。 而且 Jenkins X 只从 master 分支构建 Helm 包,所以我们不能做 PRs 的滚动部署,只能对 master 分支做滚动部署。
应用标签不能包含发布名称,例如: app: {{ template “fullname” . }} 不起作用, 需要一些类似这样的标签: app: {{ .</description>
    </item>
    
LinuxSuRen's avatar
LinuxSuRen 已提交
500 501
    <item>
      <title>使用 Jenkins &#43; Ansible 实现自动化部署 Nginx</title>
LinuxSuRen's avatar
LinuxSuRen 已提交
502
      <link>https://jenkins-zh.cn/wechat/articles/2019/04/2019-04-25-jenkins-ansible-nginx/</link>
LinuxSuRen's avatar
LinuxSuRen 已提交
503 504
      <pubDate>Thu, 25 Apr 2019 00:00:00 +0000</pubDate>
      
LinuxSuRen's avatar
LinuxSuRen 已提交
505
      <guid>https://jenkins-zh.cn/wechat/articles/2019/04/2019-04-25-jenkins-ansible-nginx/</guid>
LinuxSuRen's avatar
LinuxSuRen 已提交
506 507 508 509 510 511
      <description>本文介绍如何使用 Jenkins + Ansible 实现对 Nginx 的自动化部署。最终达到的效果有如下几点: 1. 只要你将 Nginx 的配置推送到 GitHub 中,Jenkins 就会自动执行部署,然后目标服务器的 Nginx 配置自动生效。这个过程是幂等(idempotent)的,只要代码不变,执行多少遍,最终效果不变。 2. 如果目标机器没有安装 Nginx,则会自动安装 Nginx。 3. 自动设置服务器防火墙规则。
1. 实验环境介绍 本次实验使用 Docker Compose 搭建 Jenkins 及 Jenkins agent。使用 Vagrant 启动一台虚拟机,用于部署 Nginx。使用 Vagrant 是可选的,读者可以使用 VirtualBox 启动一个虚拟机。使用 Vagrant 完全是为了自动化搭建实验环境。
以下是整个实验环境的架构图: 注意,图中的 5123 &amp;lt;-&amp;gt; 80 代表将宿主机的 5123 端口请求转发到虚拟机中的 80 端口。
 Vagrant:虚拟机管理工具,通过它,我们可以使用文本来定义、管理虚拟机。 Ansible:自动化运维工具 Docker Compose:它是一个用于定义和运行多容器 Docker 应用程序的工具。可以使用 YAML 文件来配置应用程序的服务。  2. 启动实验环境  克隆代码并进入文件夹 bash git clone https://github.com/zacker330/jenkins-ansible-nginx.git cd jenkins-ansible-nginx  构建 Jenkins agent 的镜像 需要自定义 Jenkins agent 镜像有两个原因:  本次实验,使用 Swarm 插件实现 Jenkins master 与 agent 之间的通信,所以 Jenkins agent 需要启动 swarm 客户端。 Jenkins agent 必须支持 Ansible。 bash docker build -f JenkinsSlaveAnsibleDockerfile -t jenkins-swarm-ansible .</description>
    </item>
    
LinuxSuRen's avatar
deploy  
LinuxSuRen 已提交
512 513
    <item>
      <title>Kubernetes 中的渐进式交付:蓝绿部署和金丝雀部署</title>
LinuxSuRen's avatar
LinuxSuRen 已提交
514
      <link>https://jenkins-zh.cn/wechat/articles/2019/04/2019-04-24-progressive-delivery-in-kubernetes-blue-green-and-canary-deployments/</link>
LinuxSuRen's avatar
deploy  
LinuxSuRen 已提交
515 516
      <pubDate>Wed, 24 Apr 2019 00:00:00 +0000</pubDate>
      
LinuxSuRen's avatar
LinuxSuRen 已提交
517
      <guid>https://jenkins-zh.cn/wechat/articles/2019/04/2019-04-24-progressive-delivery-in-kubernetes-blue-green-and-canary-deployments/</guid>
LinuxSuRen's avatar
deploy  
LinuxSuRen 已提交
518 519 520 521 522 523 524 525
      <description>渐进式交付是持续交付的下一步, 它将新版本部署到用户的一个子集,并在将其滚动到全部用户之前对其正确性和性能进行评估, 如果不匹配某些关键指标,则进行回滚。
这里有一些有趣的项目,使得渐进式交付在 Kubernetes 中变得更简单。 我将使用一个 Jenkins X 示例项目 对它们之中的三个进行讨论:Shipper、Istio 以及 Flagger。
Shipper shipper 是来自 booking.com 的一个项目, 它对 Kubernetes 进行了扩展,添加了复杂的部署策略和多集群编排(文档)。 它支持从一个集群到多个集群的部署,允许多区域部署。
Shipper 通过一个 shipperctl 命令行进行安装。 它增加不同集群的配置文件来进行管理。 请注意这个与 GKE 上下文相关的问题。
Shipper 使用 Helm 包来部署,但是它们没有随着 Helm 一起安装,它们不会在 helm list 的输出显示。 同样地,deployments 的版本必须是 apps/v1 , 否则 shipper 将不能编辑 deployment 来添加正确的标签和副本数量。
使用 shipper 部署都是与从旧版本(现有版本)过渡到新版本(竞争版本)相关。 这是通过创建一个新的应用对象实现的, 它定义了部署需要通过的多个阶段。例如下面 3 个步骤过程: 1. Staging:部署新版本到一个 pod ,没有流量 2. 50 / 50:部署新版本到 50% 的 pods,50% 的流量 3. Full on:部署新版本到全部的 pods,全部的流量</description>
    </item>
    
LinuxSuRen's avatar
deploy  
LinuxSuRen 已提交
526 527
    <item>
      <title>关于 Jenkins master 共享 JENKINS_HOME 目录的实验</title>
LinuxSuRen's avatar
LinuxSuRen 已提交
528
      <link>https://jenkins-zh.cn/wechat/articles/2019/04/2019-04-23-jenkins-master-shared-home/</link>
LinuxSuRen's avatar
deploy  
LinuxSuRen 已提交
529 530
      <pubDate>Tue, 23 Apr 2019 00:00:00 +0000</pubDate>
      
LinuxSuRen's avatar
LinuxSuRen 已提交
531
      <guid>https://jenkins-zh.cn/wechat/articles/2019/04/2019-04-23-jenkins-master-shared-home/</guid>
LinuxSuRen's avatar
deploy  
LinuxSuRen 已提交
532 533 534 535 536 537 538 539 540 541 542 543
      <description>审校:王冬辉,linuxsuren
 Jenkins master 的高可用是个老大难的问题。和很多人一样,笔者也想过两个 Jenkins master 共享同一个 JENKINS_HOME 的方案。了解 Jenkins 原理的人,都会觉得这个方案不可行。但是真的不可行吗?
由于工作原因,笔者需要亲自验证以上猜想。
JENKINS_HOME 介绍 Jenkins 所有状态数据都存放文件系统的目录中,这个目录被称为 JENKINS_HOME 目录。
实验环境介绍 笔者通过 Docker compose 启动两个独立的 Jenkins master,分别为 jenkins-a 和 jenkins-b。它们共用同一个 JENKINS_HOME 目录。相应的代码仓库的链接放在文章底部。
将代码克隆到本地后,进入仓库,执行 docker-compose up -d 即可启动实验环境。启动完成,在浏览器中输入 http://localhost:7088 可访问 jenkins-a,jenkins-b 的地址是 http://localhost:7089 。但是你会发现它们启动后的界面显示是不一样的。
jenkins-b 的界面如下图所示:
而 jenkins-a 的界面如下图所示:
这时,将 jenkins-a 日志中的解锁密码(Unlock password)输入到 jenkins-b 的页面中,会得到报错信息:
ERROR: The password entered is incorrect, please check the file for the correct password  这时,再次 jenkins-b 日志中的解锁密码(Unlock password)输入到表单中即可进入下一步。接下来就是按照提示一步步完成了。在 jenkins-b 安装步骤的最后一步,我们设置了管理员的用户名密码:admin/admin。然后就算完成任务了。</description>
    </item>
    
LinuxSuRen's avatar
deploy  
LinuxSuRen 已提交
544 545
    <item>
      <title>Jenkins 2.173 发布通知</title>
LinuxSuRen's avatar
LinuxSuRen 已提交
546
      <link>https://jenkins-zh.cn/wechat/articles/2019/04/2019-04-22-jenkins-weekly-2.173/</link>
LinuxSuRen's avatar
deploy  
LinuxSuRen 已提交
547 548
      <pubDate>Mon, 22 Apr 2019 00:00:00 +0000</pubDate>
      
LinuxSuRen's avatar
LinuxSuRen 已提交
549
      <guid>https://jenkins-zh.cn/wechat/articles/2019/04/2019-04-22-jenkins-weekly-2.173/</guid>
LinuxSuRen's avatar
deploy  
LinuxSuRen 已提交
550 551 552 553 554 555 556 557 558
      <description>本次更新移除了一些不太推荐的功能,请管理员及时关注,如果希望能恢复的旧的形态,可以按照下面的提示操作。
另外,有一项重要的更新,使得我们可以把所有的中文本地化资源文件从 Jenkins 核心中移除。因此, 请关注 Jenkins 简体中文插件后续的动态,我们会及时完成所有的迁移。
 移除对 CCtray 文件的内置支持。
如果要继续使用该功能的话,请安装CCtray XML Plugin (issue 40750) 调整代码在远程计算节点上运行时的流刷新行为,使得具有更好的性能。
这可能导致插件在节点集群上输出日志,但是没有刷新时,丢失消息。
使用 -Dhudson.util.StreamTaskListener.AUTO_FLUSH=true 恢复自由风格构建之前的行为。注意,流水线的构建总是需要远程刷新。 (pull 3961) 增加用于将新创建的 API token 拷贝到粘贴板的按钮。 (issue 56733) 使得 Jenkins 经典界面上的表单提交按钮,对 Firefox 的 bug 修复是兼容的。 (issue 53462, Firefox bug 1370630) 如果一个工作空间已经被跨节点重连的流水线正在使用,那么,不会提供给新的构建。 (issue 50504) 从核心中移除 Mailer 相关的本地化字符串。确保你使用 Mailer Plugin 1.23。 (issue 55292) 从 Maven 控制台装饰器中适当地刷新输出。 (issue 56995) 开发者:更新 Stapler 1.256 到 1.257,增加对从任意插件中加载本地化 webapp 资源的支持。
增加接口 jenkins.PluginLocaleDrivenResourceProvider 使得插件可以参与本地化资源的查找。 (JEP-216, 完整的变更日志) 开发者:SystemProperties 可以在计算节点中使用。 参考 SystemProperties#allowOnAgent。 (pull 3961) 开发者:增加 LineTransformationOutputStream#Delegating 使得更加方便。 (pull 3959) 开发者:hudson.</description>
    </item>
    
LinuxSuRen's avatar
deploy  
LinuxSuRen 已提交
559 560
    <item>
      <title>持续交付的商业价值</title>
LinuxSuRen's avatar
LinuxSuRen 已提交
561
      <link>https://jenkins-zh.cn/wechat/articles/2019/04/2019-04-19-the-business-value-of-cd/</link>
LinuxSuRen's avatar
deploy  
LinuxSuRen 已提交
562 563
      <pubDate>Fri, 19 Apr 2019 00:00:00 +0000</pubDate>
      
LinuxSuRen's avatar
LinuxSuRen 已提交
564
      <guid>https://jenkins-zh.cn/wechat/articles/2019/04/2019-04-19-the-business-value-of-cd/</guid>
LinuxSuRen's avatar
deploy  
LinuxSuRen 已提交
565 566 567 568 569 570 571
      <description>持续交付使你能够以更低地风险、更快低交付新软件或是更新已有软件。
降低风险很重要,但是,支持持续交付的流程将转化为对业务更重要的价值: - 加速价值时间。 一个小企业不需要一个 MBA 就可以认识到持续交付可以帮助他们完成工作。 一家大型企业已经规划了其价值流, 并且在整个大型组织中拥有复杂的投资和合约, 将发现持续交付有助于加速实现价值的时间。 - 数据驱动决策。 部署、度量和调整。 你仍然可以推动更大规模的发布,但你的流程将更适合于持续的数据收集。 这将缩短与客户的反馈循环。 它提高了你的反应能力,计划你的下一步行动,并保持领先的竞争力。 - 质量。 你持续发布的行为使你必须提高你的质量标准以及完全的自动化测试实践。 更好的质量意味着更快乐的客户、更低的成本、更少的消防演习和更少的计划外工作。 - 试验 = 创新。 开发人员和业务线可以自由地以较低的成本尝试新的想法, 从而释放出长期高投资发布周期背后的创新想法。 - 降低成本。 大的发布会有巨大的成本,如果出现错误会有严重的后果。 保持可交付成果处于可发布状态会降低交付成本。
对企业来说,这些价值一起使持续交付成为真正的游戏变革者。 尽管可以在团队或项目级别开始采用和验证,但持续交付的本质是它以需要真正投资和自上而下承诺的方式跨越了组织边界。 选择与现有投资互补并共存的持续交付工具链是走向成功的关键一步, 特别是因为 CD 可以引导你的组织采用 DevOps 文化。
持续交付为创建更好的软件开辟了全新的道路。 CD 是商业层面的热门话题,这有很多的原因: - 早期的采用者已经证明了它的价值。 主流采用者都观察到了它的优势,并感觉到竞争的刺痛,因为他们更灵活的竞争对手超过了他们。 - DevOps 作为一种运动获得了关注。 业务人员理解,在开发和运营之间有一个共同的理解,打破孤立的行为,并在整个组织内发展一种责任文化,是提高效率和上市时间的关键步骤。 在许多方面,持续交付等同于 DevOps 。 - 随着软件“吞噬世界”,商业领袖们越来越清楚 IT 必须被用作战略资产。 在正确处理安全性、可用性和合规性的同时,能够缩短交付时间、提高质量并快速适应变化是一项挑战。 持续交付,强调自动化和尽早的、直接的反馈,是实现这些目标的方法。 - 当你通过持续交付实现廉价的、低风险的试验时,你可以用更多的信息指导业务投资,并发现你可能完全错过的机会。
持续交付正在改变企业使用其 IT 资产与客户和合作伙伴联系的方式。 CD 建立在多年来之不易的敏捷过程和持续集成经验的基础上, 将这些好处提升到业务级别,而不是简单地成为开发团队使用的技术, 并最终导致 DevOps 。 随着开发和运营人员学习如何协作和分担责任时,许多成功的关键都植根于组织和文化的变革。 无论是在组织范围内还是在本地,实现这种变革的技术工具链可能包括 Jenkins 。 CloudBees Jenkins 企业版,通过扩展开源 Jenkins 的使用范围, 提供了一个支持 Jenkins 混合模型(本地部署、云上部署或混合部署)的平台, 是组织在今天转向持续交付和在不久的将来实施 DevOps 的必要工具。</description>
    </item>
    
LinuxSuRen's avatar
deploy  
LinuxSuRen 已提交
572 573
    <item>
      <title>AIOps:DevOps 的未来</title>
LinuxSuRen's avatar
LinuxSuRen 已提交
574
      <link>https://jenkins-zh.cn/wechat/articles/2019/04/2019-04-17-aiops/</link>
LinuxSuRen's avatar
deploy  
LinuxSuRen 已提交
575 576
      <pubDate>Wed, 17 Apr 2019 00:00:00 +0000</pubDate>
      
LinuxSuRen's avatar
LinuxSuRen 已提交
577
      <guid>https://jenkins-zh.cn/wechat/articles/2019/04/2019-04-17-aiops/</guid>
LinuxSuRen's avatar
deploy  
LinuxSuRen 已提交
578 579 580 581 582 583 584 585 586 587 588 589
      <description>DevOps 和云技术正在逼近极限 范式转变往往会产生意想不到的后果,这些后果可能需要数年才能被完全消化。 云计算就是一个很好的例子。 云计算迎来了灵活的基础设施和低资本要求的时代,由于资源只是一个API调用,工程师们无需等待部署。 然而,这一切只是开始。
敏捷的公司利用云来打破开发和运维之间的隔阂,并采用敏捷方法以缩短开发周期,从而创造战略优势。 他们将应用程序生命周期中的工程师团队分工从之前的开发和测试变为部署和运维, 并创建了需要一系列新技能的职位。这些公司使用 CI/CD 和 DevOps 进一步推动自动化流水线, 以实现更快的交付。
这样有隐患吗?去问你的 DevOps 团队 DevOps 团队的任务是维护一个工具链,以便自动交付新代码,按需扩展,以及五个 9 的正常运行时间。 在空闲时间,他们致力于提高性能和控制成本。 对于大的应用程序,可以有数千个虚拟机或容器,每个虚拟机或容器都有一堆软件, 还有负载平衡器和自动扩容等云服务,所有这些都必须进行配置和维护。 这一切都在不断发展中。
我之前了解过的一个大型独角兽公司拥有数百名开发人员,每天更新代码超过 100 次, 云上有超过 4000 台虚拟机,每月收集数 PB 的数据。 而他们的 DevOps 团队只有十几个人手,直到去年才有 VP。 对他们来说,这是一个艰巨且繁重的任务。
应付这无数的挑战已经超出了人类的能力范围。
幸好,AIOps 正在成为一种解决方案。
AIOps 一词是由 Gartner 创造的, 他将其解释为:
AIOps 结合了大数据,机器学习和可视化技术,通过更强的洞察力来优化 IT 运维。 IT 的领导者应该开始部署 AIOps,以优化当前的性能分析,
并在未来两到五年内将使用范围扩展到 IT 服务管理和自动化。 虽然 Gartner 创造了这个术语,但以我拙见,这还没达到标准。 他的定义以循环中的人为中心,以他的描述 AIOps 基本上是一种高级的大数据分析。 要解决 DevOps 困境,我们要定一个更高的目标。
那么,AIOps 应该是什么? 我们先从它不应该是什么开始:一个对现有的运维系统的修饰,软件供应商将&amp;rdquo;以 AI 驱动&amp;rdquo;作为卖点。 这种情况已经发生了,当新的技术威胁到现有利益时,往往会发生这种情况。 仅仅向已有工具添加一个 API 是不够的,如果决策需要人为干预,那就不能算是 AIOps。</description>
    </item>
    
LinuxSuRen's avatar
deploy  
LinuxSuRen 已提交
590 591
    <item>
      <title>使用 Zabbix 监控 Jenkins</title>
LinuxSuRen's avatar
LinuxSuRen 已提交
592
      <link>https://jenkins-zh.cn/wechat/articles/2019/04/2019-04-15-zabbix-monitor-jenkins/</link>
LinuxSuRen's avatar
deploy  
LinuxSuRen 已提交
593 594
      <pubDate>Mon, 15 Apr 2019 00:00:00 +0000</pubDate>
      
LinuxSuRen's avatar
LinuxSuRen 已提交
595
      <guid>https://jenkins-zh.cn/wechat/articles/2019/04/2019-04-15-zabbix-monitor-jenkins/</guid>
LinuxSuRen's avatar
deploy  
LinuxSuRen 已提交
596 597 598 599 600 601 602 603 604 605 606
      <description>本文假设读者已经了解 Jenkins 基本概念及插件安装,Zabbix 基础概念。基于 Zabbix 3.4,Jenkins 2.8 做实验
 笔者最近的工作涉及到使用 Zabbix 监控 Jenkins。在谷歌上搜索到的文章非常少,能操作的就更少了。所以决定写一篇文章介绍如何使用 Zabbix 监控 Jenkins。
下图为整体架构图:
整体并不复杂,大体步骤如下:
 在 Jenkins 上安装 Metrics 插件,使 Jenkins 暴露 metrics api。 配置 Zabbix server 及 agent 以实现监控及告警  为方便读者实验,笔者将自己做实验的代码上传到了 GitHub,链接在文章末尾。使用的是 Docker Compose 技术(方便一次性启动所有的系统)。
接下来,我们详细介绍 Metrics插件及如何实现 Zabbix 监控 Jenkins。
1. 使 Jenkins 暴露 metrics api 安装 Metrics 插件,在系统配置中,会多出“Metrics”的配置,如下图: 配置项不复杂。我们需要点击“Generate&amp;hellip;”生成一个 Access Key(生成后,记得要保存)。这个 Key 用于身份校验,后面我们会用到。
保存后,我们在浏览器中输入URL:http://localhost:8080/metrics/&amp;lt;刚生成的 Access Key&amp;gt; 验证 Jenkins 是否已经暴露 metrics。如果看到如下图,就说明可以进行下一步了。
1.1 Metrics 插件介绍 Metrics 插件是基于 dropwizard/metrics 实现。它通过4个接口暴露指标数据:/metrics,/ping,/threads,/healthcheck。</description>
    </item>
    
LinuxSuRen's avatar
deploy  
LinuxSuRen 已提交
607 608
    <item>
      <title>简析 Jenkins 专有用户数据库加密算法</title>
LinuxSuRen's avatar
LinuxSuRen 已提交
609
      <link>https://jenkins-zh.cn/wechat/articles/2019/04/2019-04-12-brief-analysis-the-encryption-algorithm-of-the-built-in-jenkins-user-database/</link>
LinuxSuRen's avatar
deploy  
LinuxSuRen 已提交
610 611
      <pubDate>Fri, 12 Apr 2019 00:00:00 +0000</pubDate>
      
LinuxSuRen's avatar
LinuxSuRen 已提交
612
      <guid>https://jenkins-zh.cn/wechat/articles/2019/04/2019-04-12-brief-analysis-the-encryption-algorithm-of-the-built-in-jenkins-user-database/</guid>
LinuxSuRen's avatar
deploy  
LinuxSuRen 已提交
613 614 615 616 617 618 619 620 621
      <description>认识Jenkins专有用户数据库 Jenkins 访问控制分为:安全域(即认证)与授权策略。
其中,安全域可以采用三种形式,分别为:Jenkins 专有用户数据库、LDAP、Servlet 容器代理。 在哪里看到加密后的用户密码信息? Jenkins 专有用户的数据信息存放位置:$JENKINS_HOME/users/
每个用户的相关信息存放在各自的 config.xml 文件中: $JENKINS_HOME/users/$user/config.xml
在 config.xml 文件中的 passwordHash 节点可以看到用户密码加密后的密文哈希值: 用户密码是用什么算法加密的呢? 那么问题来了,用户密码是用何种加密方式加密的呢?可否通过解密密文得到明文呢?
在 GitHub 上查看其源码,通过关键字 #jbcrypt 搜索定位到 HudsonPrivateSecurityRealm.java 这个文件。 HudsonPrivateSecurityRealm.java 具体路径是:jenkins/core/src/main/java/hudson/security/HudsonPrivateSecurityRealm.java
源码片段如下:
/** * {@link PasswordEncoder} that uses jBCrypt. */ private static final PasswordEncoder JBCRYPT_ENCODER = new PasswordEncoder() { public String encodePassword(String rawPass, Object _) throws DataAccessException { return BCrypt.hashpw(rawPass,BCrypt.gensalt()); } public boolean isPasswordValid(String encPass, String rawPass, Object _) throws DataAccessException { return BCrypt.</description>
    </item>
    
LinuxSuRen's avatar
deploy  
LinuxSuRen 已提交
622 623
    <item>
      <title>Java 应用使用 Docker 的入门指南:建立一个 CI/CD 流水线</title>
LinuxSuRen's avatar
LinuxSuRen 已提交
624
      <link>https://jenkins-zh.cn/wechat/articles/2019/04/2019-04-10-getting-started-with-docker-for-java-applications/</link>
LinuxSuRen's avatar
deploy  
LinuxSuRen 已提交
625 626
      <pubDate>Wed, 10 Apr 2019 00:00:00 +0000</pubDate>
      
LinuxSuRen's avatar
LinuxSuRen 已提交
627
      <guid>https://jenkins-zh.cn/wechat/articles/2019/04/2019-04-10-getting-started-with-docker-for-java-applications/</guid>
LinuxSuRen's avatar
deploy  
LinuxSuRen 已提交
628 629 630 631 632 633 634 635 636
      <description>Docker 已经非常出名并且更多的组织正在转向基于 Docker 的应用开发和部署。这里有一个关于如何容器化现有 Java Web 应用以及使用 Jenkins 为它建立一个端到端部署流水线的快速指南。
为此我使用了非常著名的基于 Spring 的宠物商店应用,它代表了一个很好的示例,因为大多数应用都遵循类似的体系结构。
步骤  构建宠物商店应用。 运行一次 Sonar 质量检查。 使用该 Web 应用准备 Docker 镜像。 运行容器以及执行集成测试。 如果所有测试成功,推送该镜像到一个 dockerhub 账户。  所有的代码都在这里。
这里是可用于以上步骤的 Jenkins 流水线代码:
node { stage &#39;checkout&#39; git &#39;https://gitlab.com/RavisankarCts/hello-world.git&#39; stage &#39;build&#39; sh &#39;mvn clean install&#39; stage(&#39;Results - 1&#39;) { junit &#39;**/target/surefire-reports/TEST-*.xml&#39; archive &#39;target/*.jar&#39; } stage &#39;bake image&#39; docker.withRegistry(&#39;https://registry.hub.docker.com&#39;,&#39;docker-hub-credentials&#39;) { def image = docker.build(&amp;quot;ravisankar/ravisankardevops:${env.BUILD_TAG}&amp;quot;,&#39;.&#39;) stage &#39;test image&#39; image.withRun(&#39;-p 8888:8888&#39;) {springboot -&amp;gt; sh &#39;while !</description>
    </item>
    
    <item>
      <title>介绍:成为一名 Jenkins 贡献者的旅程</title>
LinuxSuRen's avatar
LinuxSuRen 已提交
637
      <link>https://jenkins-zh.cn/wechat/articles/2019/04/2019-04-08-becoming-contributor-intro/</link>
LinuxSuRen's avatar
deploy  
LinuxSuRen 已提交
638 639
      <pubDate>Mon, 08 Apr 2019 00:00:00 +0000</pubDate>
      
LinuxSuRen's avatar
LinuxSuRen 已提交
640
      <guid>https://jenkins-zh.cn/wechat/articles/2019/04/2019-04-08-becoming-contributor-intro/</guid>
LinuxSuRen's avatar
deploy  
LinuxSuRen 已提交
641 642 643 644 645 646 647 648 649 650 651 652 653 654 655 656 657
      <description>作为一名软件工程师,这些年来在我工作过的不同公司里用到过许多开源软件(包括框架、库、工具等)。 然而,在此之前我从没有以一名贡献者的身份参与过开源项目。
自从我向 Jenkins 提交第一个简单又滑稽的 commit 已经过去六个月(2018 年 9 月)了, 我也尝试过作出更多贡献。然而总的来说,向开源项目贡献代码是具有挑战的, 特别是像 Jenkins 这样有着很长生命周期的项目,项目中不乏遗留代码和系统知识。 它通常难以入手,也很难想到一个计划来持续贡献使你的付出从长远看来是有意义的。
对于 Jenkins 社区来说,我在尝试加入社区时所遇到的困难是其它人也有可能会面临的, 因此我决定分享我成为 Jenkins 活跃贡献者的心路历程。
我计划大概每月发布一篇博文来描述我的这段旅程,我将从简单容易入手的项目开始, 随着时间推移再介绍更加复杂的项目。
从哪开始 jenkins.io 要成为 Jenkins 的贡献者,首先会看到的就是 jenkins.io, 在顶部导航中&amp;rdquo;社区&amp;rdquo;下拉列表里第一个&amp;rdquo;参与&amp;rdquo;的链接就能将我们带到&amp;rdquo;参与和贡献&amp;rdquo;这个页面。
在这个页面中列举了我们能够参与 Jenkins 项目和社区的许多方式。尽管它展示了所有可能的选项供读者选择,但一下子看上去令人有些无所适从。
这个页面被分成了左右两个部分,左边提供了参与社区的方法,右边是向社区贡献的方法。
参与社区的建议 在“参与和贡献”页面的左侧是有关参与社区的建议,其中包括结交他人、审阅修改或者提供反馈信息。
这里面最让我困惑的是沟通渠道,里面列出的沟通渠道有 几个邮件列表 还有 IRC 和 Gitter 频道。
当我第一次尝试参与时,我订阅了许多邮件列表和几个 IRC 和 Gitter 频道,但我很快发现里面有重要的讨论正在进行, 并且活跃的讨论中多数是关于特定的用户或开发者的问题。因此,我不建议你一开始在这上面花太多时间, 除非你是要为其他用户提供帮助(当你是经验丰富的 Jenkins 用户时可能会有这种情况)或者你已经有一个明确的问题需要提问。
看一看社区成员如何互相帮助是好事,但是对新人来说它的信息量过于庞大。如果你的兴趣在于向 Jenkins 项目作贡献(不管是翻译、文档还是代码), 这些对话不会对你有太大的帮助。
向社区贡献的建议 在“参与和贡献”页面的右侧有一些关于如何贡献的建议,主要分为:编写代码,翻译,文档和测试。
在之后的博客中,我将介绍所有的这些贡献类型,以及如何参与的建议包括如何审阅 Pull Requests(PRs)或提供反馈 (反馈问题或者复现其它用户反映过的问题,提供额外信息来帮助维护者复现和修复它们。)
开源之旅的第一次贡献 当看到「参与和贡献」页面时,我发现我可以帮助改进这个页面的一些内容。本来我打算选择其中一个作为这篇文章的第一个例子,但当我阅读贡献指南时, 我发现了一个更简单的贡献。我认为它可以更好的说明开始贡献社区是多么的简单,于是我决定就用它来当例子。
网站代码仓库 在「文档」菜单中有一个链接 jenkins.io 的贡献指南, 这个 CONTRIBUTING 文件是大多数开源项目代码仓库的根目录中都会有的常见文件。</description>
    </item>
    
LinuxSuRen's avatar
deploy  
LinuxSuRen 已提交
658 659
    <item>
      <title>持续集成的收益与挑战</title>
LinuxSuRen's avatar
LinuxSuRen 已提交
660
      <link>https://jenkins-zh.cn/wechat/articles/2019/04/2019-04-03-the-benefits-and-challenges-of-continuous-integration/</link>
LinuxSuRen's avatar
deploy  
LinuxSuRen 已提交
661 662
      <pubDate>Wed, 03 Apr 2019 00:00:00 +0000</pubDate>
      
LinuxSuRen's avatar
LinuxSuRen 已提交
663
      <guid>https://jenkins-zh.cn/wechat/articles/2019/04/2019-04-03-the-benefits-and-challenges-of-continuous-integration/</guid>
LinuxSuRen's avatar
deploy  
LinuxSuRen 已提交
664 665 666 667 668 669 670 671 672 673 674 675 676
      <description>毫无疑问,持续集成( CI )已成为一个软件开发的主流原则。CI 的收益在业界众所周知的,并且很难找到反对实施它的人。
在这里,我想把那些收益收集起来放到一个中心化的地方。但是我认为扮演反面角色并试图找出持续集成的弊端或挑战也是很有趣的。
什么是持续集成? 从根本上说, 持续集成( CI )是一种开发实践,开发人员每天都要将代码集成到共享的仓库中。在该仓库中,代码被自动构建进行验证用来在这个流程中检验尽早的发现任何问题。这允许团队花更少的时间回溯,而花更多的时间构建新特性。
持续集成的收益 1、缓解风险 据 Martin Fowler 说,持续集成的最大收益是减轻风险。由于延迟了代码集成,团队将不断增加合并冲突的数量和严重性。当团队频繁集成(使用自动构建),他们减轻了潜在风险的数量,因为他们总是知道系统的当前状态。
2、质量保证 实施持续集成的团队对他们的操作更有信心。他们知道自动构建会立即捕获缺陷,这使他们能够保证质量。 他们也不会猜测系统中 bug 的数量,这允许他们能够向队友提供准确的数量,并为客户提供更好的服务。
3、提高可见性和加强团队合作 自动构建为团队提供了对其系统的完全可见性。他们知道问题的数量,并能快速的解决问题。提高可见性可以让团队有机会在小问题变成大之前通过协作解决。
持续集成的挑战 1、组织文化变革 一些企业更喜欢传统的方法,并且可能很难实施持续集成。 他们必须对员工进行再培训,这就意味着要对现有的业务进行大修。管理者可能会抵制因为持续集成并不能帮助他们实现公司的直接目标(例如:金钱在质量之上)。
2、难以维护 构建一个自动化的代码仓库不是一个简单的任务。 团队必须构建适当的测试套件,并花时间编写测试用例,而不是开发代码。 起初,这可能会让他们放慢速度,让他们对按时完成自己的项目失去信心。如果测试套件不稳定,它可能在某些天内完美地工作,但其他天可能不起作用。 然后团队将不得不花费更多的时间来弄清楚发生了什么。
3、大量的错误信息 对于较大的开发团队,他们可能每天都会看到 CI 错误消息,并开始忽略它们,因为它们还有其他任务和关注点。 他们可能会开始将一个破坏的构建视为一个正常的事情,并且缺陷可能开始堆积在一起。</description>
    </item>
    
    <item>
      <title>Jenkins 更新通知</title>
LinuxSuRen's avatar
LinuxSuRen 已提交
677
      <link>https://jenkins-zh.cn/wechat/articles/2019/03/2019-03-18-weekly-version/</link>
LinuxSuRen's avatar
deploy  
LinuxSuRen 已提交
678 679
      <pubDate>Wed, 20 Mar 2019 00:00:00 +0000</pubDate>
      
LinuxSuRen's avatar
LinuxSuRen 已提交
680
      <guid>https://jenkins-zh.cn/wechat/articles/2019/03/2019-03-18-weekly-version/</guid>
LinuxSuRen's avatar
deploy  
LinuxSuRen 已提交
681 682 683
      <description>Jenkins LTS 2.164.1 更新内容如下:  Java 11 现已全面支持。 自 2.150.x 开始在 Java 11 上运行 Jenkins 的多项改进,包括:支持插件在它们的元数据中申明最小 Java 版本,并拒绝加载不兼容的插件,以及当运行在 Java11 上时安装新的 JAXB 插件后允许使用 JAXB 的 API. (博客发布的申明, 运行在 Java 11, 升级到 Java 11, issue 52012, issue 52282, issue 55076, issue 55048, issue 55980, issue 55681, issue 52285) 当列出一个指定目录时 list-jobs 不再进行递归。 (issue 48220) 增加一个新的 CLI 命令 disable-plugin 来禁用一个或多个已安装的插件,并可以选择同时重启 Jenkins. (issue 27177) 更新 Trilead SSH 库以支持 OpenSSH 使用 AES256-CTR 加密。 (issue 47603, issue 47458, issue 55133, issue 53653) 在 Jenkins CLI 中增加对 ed25519 关键算法的支持。 (issue 45318) 减少以 ZIP 格式下载归档或者工作空间文件时 SECURITY-904 对性能的影响。 (issue 55050) 在插件向导中增加语言分类,并会根据浏览器的语言设置自动安装本地化插件。 (pull 3626) Windows Service Wrapper 从 2.</description>
    </item>
    
LinuxSuRen's avatar
deploy  
LinuxSuRen 已提交
684 685
    <item>
      <title>Jenkins 正在加入持续交付基金会</title>
LinuxSuRen's avatar
LinuxSuRen 已提交
686
      <link>https://jenkins-zh.cn/wechat/articles/2019/03/2019-03-20-cdf-launch/</link>
LinuxSuRen's avatar
deploy  
LinuxSuRen 已提交
687 688
      <pubDate>Wed, 20 Mar 2019 00:00:00 +0000</pubDate>
      
LinuxSuRen's avatar
LinuxSuRen 已提交
689
      <guid>https://jenkins-zh.cn/wechat/articles/2019/03/2019-03-20-cdf-launch/</guid>
LinuxSuRen's avatar
deploy  
LinuxSuRen 已提交
690 691 692 693 694 695 696 697 698 699 700 701 702
      <description>今天Linux 基金会与 CloudBees、Google 和一些其他公司启动了一个新的开源软件基金会,也就是持续交付基金会(CDF). CDF 相信持续交付的力量,它旨在培养与支持开源生态,以及厂商中立的项目。
Jenkins 的贡献者们已经决定,我们的项目应该加入这个新的基金会。 实际上,这样的讨论持续了多年,大致的动机简洁摘要在这里。
此时,作为一名用户,又意味着什么呢?
 首先,不会有大的中断。还是同样的人,URL 地址不会变,也会有正常的发布。决策方式也会延续,pull request 也不会发生变化。改变会逐步的进行。
 这是 Jenkins 项目在这个领域的成熟和重要性的又一证明。在全球有25万个 Jenkins 在运行着,这着实从 IoT 到游戏、从云原生应用到机器学习项目撼动着整个软件研发的世界。对于任何寻求开放异构 DevOps 策略的人来说, Jenkins 是一个显然、安全的选择。
 CDF 创建了一个公平竞争的环境,这被组织中的贡献者所熟知,同时也会带来更多的贡献者,让 Jenkins 发展的更好、更快。在过去的几年里, Jenkins 项目正在稳步地增长,更多的结构使之变得清晰起来,CDF 是这一轨迹中的最新一步。
 任何认真的研发团队都会把多种工具和服务结合起来,以覆盖整个软件研发领域。这些团队为了把这些工具集成起来投入了大量的工作。 Jenkins 将会在 CDF 旗下与其他项目紧密合作,使得这些软件之间减少重复。
 我们的用户作为从业者尝试在他们的组织中改善软件研发流程。他们认为 CI/CD 和自动化可以释放组织所需要的生产力,但对他们的组织而言,并不总是那么显著。因此,我们的用户往往无法得到必要的支持。CDF 将会倡导持续交付的实践,因为这并不是来自某个厂商或项目,它将会联系可以提供帮助的人。
  因此,我希望你能明白为什么我们会对此感到如此兴奋!
实际上,对我们来说,已经为这个想法努力了将近两年。毫不夸张地说,整个 CDF 的想法 源自 Jenkins 项目。
为此,已经有很多人在幕后做了大量的工作。但有些人扮演了举足轻重的角色,我须亲自感谢他们。为 Chris Aniszczyk 的耐心、坚持,R. Tyler Croy 酝酿并推动着这个想法,Tracy Miranda 将这些想法变成事实。</description>
    </item>
    
LinuxSuRen's avatar
deploy  
LinuxSuRen 已提交
703 704
    <item>
      <title>Electron 应用的流水线设计</title>
LinuxSuRen's avatar
LinuxSuRen 已提交
705
      <link>https://jenkins-zh.cn/wechat/articles/2019/03/2019-03-13-electron-pipeline-demo/</link>
LinuxSuRen's avatar
deploy  
LinuxSuRen 已提交
706 707
      <pubDate>Wed, 13 Mar 2019 00:00:00 +0000</pubDate>
      
LinuxSuRen's avatar
LinuxSuRen 已提交
708
      <guid>https://jenkins-zh.cn/wechat/articles/2019/03/2019-03-13-electron-pipeline-demo/</guid>
LinuxSuRen's avatar
deploy  
LinuxSuRen 已提交
709 710
      <description>审校:LinuxSuRen(https://github.com/LinuxSuRen)
 面向读者:需要了解 Jenkins 流水线的基本语法。
LinuxSuRen's avatar
deploy  
LinuxSuRen 已提交
711 712 713 714 715 716
Electron 是由 Github 开发,用 HTML,CSS 和 JavaScript 来构建跨平台桌面应用程序的一个开源库。
本文将介绍 Electron 桌面应用的流水线的设计。
但是如何介绍呢?倒是个大问题。笔者尝试直接贴代码,在代码注释中讲解。这是一次尝试,希望得到你的反馈。
完整代码 pipeline { // 我们决定每一个阶段指定 agent,所以, // 流水线的 agent 设置为 none,这样不会占用 agent agent none // 指定整条流水线的环境变量 environment { APP_VERSION = &amp;quot;&amp;quot; APP_NAME = &amp;quot;electron-webpack-quick-start&amp;quot; } stages { stage(&amp;quot;生成版本号&amp;quot;){ agent {label &amp;quot;linux&amp;quot; } steps{ script{ APP_VERSION = generateVersion(&amp;quot;1.0.0&amp;quot;) echo &amp;quot;version is ${APP_VERSION}&amp;quot; }} } stage(&#39;并行构建&#39;) { // 快速失败,只要其中一个平台构建失败, // 整次构建算失败 failFast true // parallel 闭包内的阶段将并行执行 parallel { stage(&#39;Windows平台下构建&#39;) { agent {label &amp;quot;windows &amp;amp;&amp;amp; nodejs&amp;quot; } steps { echo &amp;quot;${APP_VERSION}&amp;quot; } } stage(&#39;Linux平台下构建&#39;) { agent {label &amp;quot;linux &amp;amp;&amp;amp; nodejs&amp;quot; } // 不同平台可能存在不同的环境变量 // environment 支持阶段级的环境变量 environment{ SUFFIX = &amp;quot;tar.</description>
    </item>
    
LinuxSuRen's avatar
deploy  
LinuxSuRen 已提交
717 718
    <item>
      <title>Jenkins 已经被 Google Summer Of Code 2019 接受!</title>
LinuxSuRen's avatar
LinuxSuRen 已提交
719
      <link>https://jenkins-zh.cn/wechat/articles/2019/03/2019-03-13-gsoc2019-announcement/</link>
LinuxSuRen's avatar
deploy  
LinuxSuRen 已提交
720 721
      <pubDate>Wed, 13 Mar 2019 00:00:00 +0000</pubDate>
      
LinuxSuRen's avatar
LinuxSuRen 已提交
722
      <guid>https://jenkins-zh.cn/wechat/articles/2019/03/2019-03-13-gsoc2019-announcement/</guid>
LinuxSuRen's avatar
deploy  
LinuxSuRen 已提交
723 724 725 726 727 728 729 730 731 732 733 734
      <description>作为 Jenkins GSoC 管理员团队的代表,我很高兴地宣布 Jenkins 在2019年的 Google Summer of Code上 已经被接受。 今年,我们邀请了学生和导师加入 Jenkins 社区,并一起努力增强 Jenkins 生态圈。
这里提供一些数字,这是有史以来最大的一次 GSoC,今年共有206个组织参与。并且,希望对 Jenkins 而言也是最大的一年。 我们有25个项目想法,而且有超过30个准导师(不断增多!)。 这已经超过了2016年以及2018年的总和。 有很多的插件,特别兴趣小组以及子项目已经加入了今年的 GSoC.而且,我们已经收到了十几个学生的消息以及第一次贡献,耶!
下一步? GSoC 已经正式启动,请期待更多的学生在我们的Gitter 频道和邮件列表中联系项目。 在特别兴趣小组和子项目频道中已经有了很多沟通。 我们会努力帮助学生找到他们感兴趣的项目,在这个领域探索,并帮助他们在4月9日的截止日前准备好他们的项目提议。 然后,我们将会继续这个申请,选择项目并分配导师团队。
所有关于 Jenkins GSoC 的信息都可以在子项目页面上找到。
我是一个学生。如何申请? 在/projects/gsoc/students[学生的信息]页面中有完整的申请指导。
我们鼓励感兴趣的学生尽早联系 Jenkins 社区并开始探索项目。所有的项目在对应的页面上都有聊天室与邮件列表。 我们也会为学生组织工作日的会议,在这些会议上你可以见到管理员和导师,并向他们提问。 另外,加入我们的Gitter 频道和邮件列表,以便收到项目中即将到来的事情。
3月25日开放申请,但你现在就可以准备了!利用这段申请前的时间来讨论并改进你的项目提议。 我们也建议你着手熟悉 Jenkins 并开始探索你的提议的领域。项目的想法包括快速开始的指导,以及有助于初期研究时对新手友好的问题。 如果没有看到任何感兴趣的,你可以提出你自己的项目想法或者 查看由其他参与 GSoC 的组织提出的想法。
我想要成为一名导师。会不会太晚了? 不晚!我们正在寻找更多的项目想法,以及 Jenkins 的贡献者或用户中对 Jenkins 富有热情并想要指导学生的人。 无须底层经验,导师可以和学生一起研究项目并给出技术指导。 我们尤其对 Java 技术栈方向感兴趣,以及一些新的技术和领域(例如:Kubernetes, IoT, Python, Go 或者其他的)。
你可以提议一个新项目或者加入已有的。查看博客寻找导师以及导师的信息中的细节。 如果你想要提议一个新项目,那么请在3月11日之前完成,以便学生有时间探索并准备他们的提议。
今年,导师并不必须要有 Jenkins 开发上的很强的专业知识。目标是指导学生参与到 Jenkins 社区。 如果需要特殊的专业知识,GSoC 组织管理员会帮助寻找顾问。</description>
    </item>
    
LinuxSuRen's avatar
deploy  
LinuxSuRen 已提交
735 736
    <item>
      <title>为 Continuous Delivery Foundation 的成立感到兴奋</title>
LinuxSuRen's avatar
LinuxSuRen 已提交
737
      <link>https://jenkins-zh.cn/wechat/articles/2019/03/2019-03-13-ready-for-cdf/</link>
LinuxSuRen's avatar
deploy  
LinuxSuRen 已提交
738 739
      <pubDate>Wed, 13 Mar 2019 00:00:00 +0000</pubDate>
      
LinuxSuRen's avatar
LinuxSuRen 已提交
740
      <guid>https://jenkins-zh.cn/wechat/articles/2019/03/2019-03-13-ready-for-cdf/</guid>
LinuxSuRen's avatar
deploy  
LinuxSuRen 已提交
741 742 743 744 745 746
      <description>大概十一年前,我就开始为现在被称为 Jenkins 的项目做贡献,自己当时其实也并不知道在做什么。但是接下来发生的事情令人感觉难以置信,数以百计的贡献者加入,成千上万的新用户开始使用 Jenkins,每天都会运行数以百万条的流水线。这样的增长是充满挑战性的,用户的增长意味着问题的增长,问题的增长就意味着需要新的解决方式。 在大约两年半之前,我在2017年的 Jenkins World Contributor Summit 大会上面对一大群 Jenkins 的贡献者们,为我的所谓的 &amp;lsquo;Jenkins软件基金会&amp;rsquo; 做了宣传,那就是,不要羞于从 Python 社区汲取思想,在我的朋友 Chris Aniszczyk 和 Linux 基金会的帮助下,这个基金会变成了一个更加全面的 *持续交付基金会*(CDF),我的同事 Tracy Miranda 一直在领导这项工作,帮助推动 CDF 的成立。
Kohsuke 为 jenkinsci-dev@ mailing list 撰写了一篇很好的概述文章,其中列举了如果 Jenkins 项目一旦建立后就应该加入 Continuous Delivery Foundation 的原因。如果你对 Jenkins 项目感兴趣,但是还没有阅读过这边文章的话,那我认为你应该花些时间来阅读 Kohsuke 的这份邮件。但是在 这篇文章 中,我 想分享我愿意帮助建立持续交付基金会(CDF)的原因。
持续交付(CD)已经成为我职业生涯中不可或缺的一部分,甚至在 Jez Humble 将此概念清晰地表述之前,我就开始学习 CD 并且对它一直充满热情。我认为它对软件的开发实践至关重要,当有人说他们没有练习使用 CI 或 CD 时,我感觉这就像回到了原始社会。想象一下,如果有人说 &amp;ldquo;呃,我们在这里有一个采用 Source Control 的项目,但领导们觉得这个东西不太靠谱&amp;rdquo;,我想你肯定会惊掉下巴。&amp;rdquo;在这个时代竟然还有开发团队都不使用源代码管理?&amp;rdquo;。总体来说,我认为CD已经是现代软件开发的基础了。
持续交付也 不是 说只依赖于 Jenkins 这样的单一工具,它也是依赖于其他的用于协同工作的许多工具。虽然我可能觉得 Jenkins 是所有工具中占最中心位置的工具,但也不是说 Jenkins 是这些工具中唯一优秀的一款工具。但是不幸的是,像 Jenkins 这样的许多开源社区往往对他们的世界有着一定的狭隘观点。他们只专注于他们的事情,虽然这是有道理的,但这及可能导致错失交叉合作产生新价值的机会。</description>
    </item>
    
LinuxSuRen's avatar
deploy  
LinuxSuRen 已提交
747 748
    <item>
      <title>MPL - 模块化的流水线库</title>
LinuxSuRen's avatar
LinuxSuRen 已提交
749
      <link>https://jenkins-zh.cn/wechat/articles/2019/03/2019-01-08-mpl-modular-pipeline-library/</link>
LinuxSuRen's avatar
deploy  
LinuxSuRen 已提交
750 751
      <pubDate>Wed, 06 Mar 2019 00:00:00 +0000</pubDate>
      
LinuxSuRen's avatar
LinuxSuRen 已提交
752
      <guid>https://jenkins-zh.cn/wechat/articles/2019/03/2019-01-08-mpl-modular-pipeline-library/</guid>
LinuxSuRen's avatar
deploy  
LinuxSuRen 已提交
753 754 755 756 757 758 759 760 761 762
      <description>MPL - 模块化的流水线库 尽管通过自动化部署加快了开发速度,但由于在 DevOps 方面缺少协作,我们一个客户正因此而放慢产品的上市时间。虽然他们也投入了资源来做 DevOps ,但每条生产流水线都是独立设置的,迫使团队为每个项目重新造轮子。更糟糕的是,由于没有跨团队协作,平台中的任何错误又会出现在每条新的流水线中。许多客户都有类似的问题存在,因此我们决定开发一个既能帮助现有客户,又能适应未来使用需求的通用工具。使用通用框架且标准化的 CI/CD 平台是最显而易见的选择,但这将导致缺少灵活性的单体结构(monolithic structure),最终会变得举步维艰。每个团队都需要在自己的流水线上工作,基于此,我们开发了一个方便 DevOps 流水线的每个可重用部分可供以后使用的解决方案 — Jenkins 驱动的模块化流水线库。
解决方案:模块化流水线库 模块化流水线库(译注:modular pipeline library,简称 MPL)是一个高度灵活的 Jenkins 流水线共享库,它可以轻松将最佳实践共享到整个公司。它具有清晰的模块化结构,先进的测试框架,多级嵌套的能力,流水线配置系统,被改进了的错误处理机制以及许多其他有用的组件。
我们将通过以下几部分内容深入了解并解释 MPL 是如何工作的:
 探索用于构建 MPL 的技术和工具 回顾MPL,并说明它为何有效 一步一步在流水线样例中使用 MPL 深入研究 MPL 的一些重要的组件,例如测试框架和嵌套库  首先,让我们介绍构建 MPL 时使用到的关键技术。
使用共享库和 Jenkins 流水线构建 MPL 我们的 Jenkins 自动化平台最近收到了一些 Jenkins 流水线的更新。这些更新允许我们创建一个 Jenkinsfile 文件来描述整条流水线,并用于执行一系列不言自明的脚本。这提高了最终用户对 CI/CD 自动化流程的可视化程度,并提高了 DevOps 团队对流水线的可支持性。
然而,流水线存在一个很大的问题:很难用唯一的流水线支持多个 Jenkinsfile 文件(因此存在多少个项目就存在多少个 Jenkinsfile 文件)。我们需要一个地方存放公共逻辑,这正是 Jenkins 共享库能够实现的。共享库用于存放流水线公共的部分,它定义在 Jenkinsfile 文件中,并允许在其中使用接口简化自动化脚本。
虽然共享库允许你存储公共逻辑并操作 Jenkins,但它们并没有提供一种好的方式去使用这些公共逻辑。所以,MPL 通过允许用户创建易于理解的流程描述来优化流水线和共享库,然后方便其他团队使用。
MPL 致力于创建跨团队协作 DevOps 流程 通过 MPL,我们现在能够跨团队协作和共享 DevOps 实践,轻松地为特定的项目指定特定的流水线,并能在将它们集成到 MPL 库中之前进行调试和测试。每个团队都可以创建一个嵌套库,在其中增加流水线和模块,并在流水线中使用,这样还可以提高流水线的可视化程度。MPL 能够适用于任何包含 Jenkinsfile 文件的项目,还可以根据项目团队的需要灵活地管理它。</description>
    </item>
    
LinuxSuRen's avatar
deploy  
LinuxSuRen 已提交
763 764
    <item>
      <title>批量修改 Jenkins 任务的技巧</title>
LinuxSuRen's avatar
LinuxSuRen 已提交
765
      <link>https://jenkins-zh.cn/wechat/articles/2019/02/2019-02-27-jenkins-script-console-in-practice/</link>
LinuxSuRen's avatar
deploy  
LinuxSuRen 已提交
766 767
      <pubDate>Wed, 27 Feb 2019 00:00:00 +0000</pubDate>
      
LinuxSuRen's avatar
LinuxSuRen 已提交
768
      <guid>https://jenkins-zh.cn/wechat/articles/2019/02/2019-02-27-jenkins-script-console-in-practice/</guid>
LinuxSuRen's avatar
deploy  
LinuxSuRen 已提交
769 770 771 772 773 774 775
      <description>通过脚本命令行批量修改 Jenkins 任务 最近,笔者所在团队的 Jenkins 所在的服务器经常报硬盘空间不足。经查发现很多任务没有设置“丢弃旧的构建”。通知所有的团队检查自己的 Jenkins 任务有没有设置丢弃旧的构建,有些不现实。
一开始想到的是使用 Jenkins 的 API 来实现批量修改所有的 Jenkins 任务。笔者对这个解决方案不满意,经 Google 发现有同学和我遇到了同样的问题。他使用的更“技巧”的方式:在 Jenkins 脚本命令行中,通过执行 Groovy 代码操作 Jenkins 任务。
总的来说,就两步:
 进入菜单:系统管理 &amp;ndash;&amp;gt; 脚本命令行 在输入框中,粘贴如下代码:
import jenkins.model.Jenkins import hudson.model.Job import jenkins.model.BuildDiscarderProperty import hudson.tasks.LogRotator // 遍历所有的任务 Jenkins.instance.allItems(Job).each { job -&amp;gt; if ( job.isBuildable() &amp;amp;&amp;amp; job.supportsLogRotator() &amp;amp;&amp;amp; job.getProperty(BuildDiscarderProperty) == null) { println &amp;quot; \&amp;quot;${job.fullDisplayName}\&amp;quot; 处理中&amp;quot; job.addProperty(new BuildDiscarderProperty(new LogRotator (2, 10, 2, 10))) println &amp;quot;$job.name 已更新&amp;quot; } } return; /** LogRotator构造参数分别为: daysToKeep: If not -1, history is only kept up to this days.</description>
    </item>
    
LinuxSuRen's avatar
deploy  
LinuxSuRen 已提交
776 777
    <item>
      <title>社区贡献激励活动</title>
LinuxSuRen's avatar
LinuxSuRen 已提交
778
      <link>https://jenkins-zh.cn/wechat/articles/2019/02/2019-02-27-contribution-inspire/</link>
LinuxSuRen's avatar
deploy  
LinuxSuRen 已提交
779 780
      <pubDate>Wed, 27 Feb 2019 00:00:00 +0000</pubDate>
      
LinuxSuRen's avatar
LinuxSuRen 已提交
781
      <guid>https://jenkins-zh.cn/wechat/articles/2019/02/2019-02-27-contribution-inspire/</guid>
LinuxSuRen's avatar
deploy  
LinuxSuRen 已提交
782 783 784 785 786
      <description>自 Jenkins 官方微信公众号开通以来,收到了很多热心、愿意参与开源社区的同学的贡献。这里,包括有 Jenkins 官方博客中的博文翻译,也有 Jenkins 中文站点维护的 Pull Request。我能够看到的是,有些同学从英文技术文章的翻译过程中,对 Jenkins 相关技术的理解更加深入了;而有的则从对 GitHub 不甚了解到逐渐熟悉社区贡献的大致流程;对于深度参与社区贡献的同学,更是能够在“中文本地化”以及 Jenkins 其他的特别兴趣小组(SIG)会议讨论上获得最新的动态。
本着给社区贡献者谋福利的想法,Jenkins 中文社区携手“人民邮电出版社”给大家提供三本技术相关的书籍。从19年3月开始,截止到5月,我们会给予三名贡献者每人一本书。我们会在下次公众号文章中介绍评选规则,欢迎任何一位认可开源、希望参与开源的朋友提出你的建议,不要吝惜你的 PR。获选的同学,按照贡献量可以从下面的列表中依次任选一本:
最后,再次让我们对“人民邮电出版社”给予开源社区的大力支持表示感谢。</description>
    </item>
    
LinuxSuRen's avatar
deploy  
LinuxSuRen 已提交
787 788
    <item>
      <title>Java 11 预览支持已在 Jenkins 2.155&#43; 中可用</title>
LinuxSuRen's avatar
LinuxSuRen 已提交
789
      <link>https://jenkins-zh.cn/wechat/articles/2019/02/2019-02-20-java11-preview-availability/</link>
LinuxSuRen's avatar
deploy  
LinuxSuRen 已提交
790 791
      <pubDate>Wed, 20 Feb 2019 00:00:00 +0000</pubDate>
      
LinuxSuRen's avatar
LinuxSuRen 已提交
792
      <guid>https://jenkins-zh.cn/wechat/articles/2019/02/2019-02-20-java11-preview-availability/</guid>
LinuxSuRen's avatar
deploy  
LinuxSuRen 已提交
793 794 795 796 797 798 799 800 801 802
      <description>NOTE: 这是由 Java 11 支持团队 联合撰写的博客。 在 12 月 18 号(UTC时间下午4点)我们也会在 Jenkins 在线 Meetup 展示对 Java 11 的预览支持。(链接)
 Jenkins 作为领先的开源自动化服务器之一,目前仍然只支持到 Java 8。在 9 月 25 日 OpenJDK 11 发布了。这是一个长期支持版本,并将持续多年,我们想要在 Jenkins 项目中对这个版本进行全面的支持。在过去的一年中,许多贡献者一直致力于在项目中支持 Java 11(Jenkins JEP-211)。这是一条艰辛的道路,但是现在,代表 Jenkins Platform SIG,我们很高兴的宣布在 Jenkins 每周发布提供 Java 11 预览!
为什么我们需要 Java 11 的预览?
这是因为它可以提供给 Jenkins 贡献者和早期使用者一个在明年年初(译者注:此文发布于 2018 年)GA 发布之前尝试这些变化的途径。它也可以帮助我们进行更多的探索性测试,并且有希望在 Jenkins 正式地提供 Java 11 支持之前,解决大部分的问题。
在这篇文章中,我们将会介绍如何在 Java 11 环境下运行 Jenkins,还有如何调查兼容性问题并报告它们。
背景 你可能还记得,在 2018 年 6 月我们举办了一个针对 Java 10+ 支持的在线黑客马拉松。作为黑客马拉松的一部分,我们提供了 Java 11 的实验性支持。这次活动对我们来说非常成功。我们可以在 Java 10 和 Java 11-ea 环境下运行 Jenkins 以及一些主要的功能 —— 包括流水线、JobDSL、Docker/Kubernetes plugin、Configuration as Code、BlueOcean 等。它让我们相信我们可以在 Jenkins 中提供Java 11支持而不会发生破坏性变化。在这场马拉松之后 Oleg Nenashev 创建了 &amp;ldquo;Java 10+ support in Jenkins&amp;rdquo;(之后修改为只针对支持 Java 11)。Jenkins Platform SIG 也已成立,以协调 Java 11 的支持工作和其他平台的支持工作(打包,操作系统支持等)。</description>
    </item>
    
    <item>
      <title>Jenkins 对审计日志的支持</title>
LinuxSuRen's avatar
LinuxSuRen 已提交
803
      <link>https://jenkins-zh.cn/wechat/articles/2019/02/2019-02-13-outreachy-audit-log-plugin/</link>
LinuxSuRen's avatar
deploy  
LinuxSuRen 已提交
804 805
      <pubDate>Wed, 13 Feb 2019 00:00:00 +0000</pubDate>
      
LinuxSuRen's avatar
LinuxSuRen 已提交
806
      <guid>https://jenkins-zh.cn/wechat/articles/2019/02/2019-02-13-outreachy-audit-log-plugin/</guid>
LinuxSuRen's avatar
deploy  
LinuxSuRen 已提交
807 808 809 810 811 812
      <description>今年是 Jenkins 项目首次参与 Outreachy. Outreachy 是一个类似于 Google Summer of Code (GSoC) 的项目, 实习生有偿地为开源项目工作。 关键的不同之处在于,Outreachy 面向那些在他们国家的技术行业中受到歧视或偏见的小众群体。 当我了解到这个项目后,由于它的包容性与社区建设与我的理念相符就立即自愿作为导师来参与。 我很高兴地说,Jenkins 项目和我的雇主 CloudBees 对此非常支持。
基于我们之前在 GSoC 上指导学生的付出,今年我们已经加入 Outreachy 并指导了两个实习生。 在 Outreachy 的这次活动中,我们的实习生 David Olorundare 和 LathaGunasekar 将与我一起研发 Jenkins 对审计日志的支持。 我很高兴欢迎 David 和 Latha, 并期待他们能在软件工程专业和对开源社区的贡献上都有所收获。 请继续关注后续博客对他们的介绍。
该审计日志支持项目在 Jenkins 和 Apache Log4j 之间形成了一个新的链接,这给予我们的实习生学习 更多有关开源治理和认识新朋友的机会。 作为奖金,该项目旨在为支持高级的业务检测提供便利,例如:在认证事件中检测潜在的入侵尝试。 我们也会编写一个 JEP 来描述由插件提供的审计日志 API,以及其他插件如何定义并记录除 Jenkins 核心以外插件的审计事件。
我期待我们将会一起完成了不起的作品,而且我希望在将来能够帮助更多的 Outreachy 实习生!</description>
    </item>
    
LinuxSuRen's avatar
LinuxSuRen 已提交
813 814
    <item>
      <title></title>
LinuxSuRen's avatar
LinuxSuRen 已提交
815
      <link>https://jenkins-zh.cn/wechat/contributing/</link>
LinuxSuRen's avatar
LinuxSuRen 已提交
816 817
      <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
      
LinuxSuRen's avatar
LinuxSuRen 已提交
818
      <guid>https://jenkins-zh.cn/wechat/contributing/</guid>
LinuxSuRen's avatar
LinuxSuRen 已提交
819 820 821 822 823 824 825
      <description>Contributing to Jenkins WeChat This page provides information about contributing articles to the Jenkins WeChat subscription account.
Scope  Translated blogs from jenkins.io Jenkins events Other Jenkins-related articles  How to do Everyone could create a PR what are you hoping to publish to Jenkins WeChat. But you&amp;rsquo;d better do this ahead of schedule one week.
Copy from the sample.md, then change the content and front matter. All files name only can use numbers, alphabets or -.</description>
    </item>
    
    <item>
      <title></title>
LinuxSuRen's avatar
LinuxSuRen 已提交
826
      <link>https://jenkins-zh.cn/wechat/readme/</link>
LinuxSuRen's avatar
LinuxSuRen 已提交
827 828
      <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
      
LinuxSuRen's avatar
LinuxSuRen 已提交
829
      <guid>https://jenkins-zh.cn/wechat/readme/</guid>
LinuxSuRen's avatar
LinuxSuRen 已提交
830
      <description>Jenkins WeChat WeChat is similar to Twitter. Almost everyone has their own account with WeChat in China.
LinuxSuRen's avatar
LinuxSuRen 已提交
831
Jenkins WeChat subscription account will deliver the messages or events from the Jenkins Community.
LinuxSuRen's avatar
LinuxSuRen 已提交
832
All articles should be open-source, every contributor could create a PR. Once we reviewed it, your articles could be released.
LinuxSuRen's avatar
LinuxSuRen 已提交
833
We have a robot who can reply to your messages automatically. Unfortunately, its ability is very limitation. It just can understand a few words from here.</description>
LinuxSuRen's avatar
LinuxSuRen 已提交
834 835
    </item>
    
LinuxSuRen's avatar
LinuxSuRen 已提交
836
    <item>
LinuxSuRen's avatar
deploy  
LinuxSuRen 已提交
837
      <title></title>
LinuxSuRen's avatar
LinuxSuRen 已提交
838
      <link>https://jenkins-zh.cn/wechat/articles/readme/</link>
LinuxSuRen's avatar
LinuxSuRen 已提交
839 840
      <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
      
LinuxSuRen's avatar
LinuxSuRen 已提交
841
      <guid>https://jenkins-zh.cn/wechat/articles/readme/</guid>
LinuxSuRen's avatar
deploy  
LinuxSuRen 已提交
842 843
      <description>这里存放的是 Jenkins 官方微信公众号文章,文件采用 Markdown 格式,但包含一些必要的描述性字段。文章的校对、审核、排期等都通过 Pull Request 来完成。PR 合并后会发布到 Jenkins 中文社区网站。
目录 文章以发布的排期来存放,层级为:年份/月份。如果月份为个位数的话,要以0开头,例如:01。
LinuxSuRen's avatar
deploy  
LinuxSuRen 已提交
844
以文章的文件名前缀作为图片的目录,例如:文章的文件名为 2019-01-01-sample.md,我们需要在同级目录下创建文件夹 2019-05-01-sample , 并在里面保存当前文章中的图片(封面、插图等)。
LinuxSuRen's avatar
LinuxSuRen 已提交
845 846
排期 为了尽可能满足你期望的发布日期,可以自行选择,但同时需要满足如下的条件:
 为保障大家有足够的时间进行 Review,建议排到一周以后 工作日 避免同一天有相同类型的文章  文件名 文件名前缀为“年月日”,中间部分需要以英文来描述。例如:2019-01-01-sample.md。
LinuxSuRen's avatar
deploy  
LinuxSuRen 已提交
847
字段 文件中的字段,是为了描述文章相关的必要信息。具体的说明请参考:sample.md。</description>
LinuxSuRen's avatar
LinuxSuRen 已提交
848 849
    </item>
    
LinuxSuRen's avatar
LinuxSuRen 已提交
850 851
    <item>
      <title></title>
LinuxSuRen's avatar
LinuxSuRen 已提交
852
      <link>https://jenkins-zh.cn/wechat/images/readme/</link>
LinuxSuRen's avatar
LinuxSuRen 已提交
853 854
      <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
      
LinuxSuRen's avatar
LinuxSuRen 已提交
855
      <guid>https://jenkins-zh.cn/wechat/images/readme/</guid>
LinuxSuRen's avatar
LinuxSuRen 已提交
856 857 858 859 860
      <description>这里用来存放图片素材。</description>
    </item>
    
    <item>
      <title></title>
LinuxSuRen's avatar
LinuxSuRen 已提交
861
      <link>https://jenkins-zh.cn/wechat/management/auto-reply/readme/</link>
LinuxSuRen's avatar
LinuxSuRen 已提交
862 863
      <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
      
LinuxSuRen's avatar
LinuxSuRen 已提交
864
      <guid>https://jenkins-zh.cn/wechat/management/auto-reply/readme/</guid>
LinuxSuRen's avatar
LinuxSuRen 已提交
865 866 867 868
      <description>通过微信公众号的 API 接口实现部分功能,这里主要是存放自动回复的消息。
我们的 API 后端代码是基于 Golang 编写的。
支持的消息类型包括:
 文本 图片 文章(公众号中的)  上面提到的消息类型,也就是字段 msgType 的值,包括:text、image、news。 更多的细节可以参考源码。</description>
LinuxSuRen's avatar
LinuxSuRen 已提交
869 870 871 872
    </item>
    
    <item>
      <title></title>
LinuxSuRen's avatar
LinuxSuRen 已提交
873
      <link>https://jenkins-zh.cn/wechat/management/contributors/readme/</link>
LinuxSuRen's avatar
LinuxSuRen 已提交
874 875
      <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
      
LinuxSuRen's avatar
LinuxSuRen 已提交
876
      <guid>https://jenkins-zh.cn/wechat/management/contributors/readme/</guid>
LinuxSuRen's avatar
LinuxSuRen 已提交
877 878 879 880 881 882 883
      <description> 我们在发布原创、翻译等文章时,会首先从该目录下查找是否有对应的文件,没有的话就使用作者的 GitHub ID 作为署名。
如果作者(或译者)希望采用其他的署名,请在当前目录下提交相应的信息。 文件名为小写的 GitHub ID ,例如:linuxsuren.yml。
字段说明  name 唯一标示,与 GitHub ID 一致 github GitHub ID nickname 署名  </description>
    </item>
    
    <item>
      <title></title>
LinuxSuRen's avatar
LinuxSuRen 已提交
884
      <link>https://jenkins-zh.cn/wechat/management/menus/readme/</link>
LinuxSuRen's avatar
LinuxSuRen 已提交
885 886
      <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
      
LinuxSuRen's avatar
LinuxSuRen 已提交
887
      <guid>https://jenkins-zh.cn/wechat/management/menus/readme/</guid>
LinuxSuRen's avatar
LinuxSuRen 已提交
888 889 890 891 892
      <description>这里存存放菜单信息。</description>
    </item>
    
    <item>
      <title></title>
LinuxSuRen's avatar
LinuxSuRen 已提交
893
      <link>https://jenkins-zh.cn/wechat/management/operators/readme.en/</link>
LinuxSuRen's avatar
LinuxSuRen 已提交
894 895
      <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
      
LinuxSuRen's avatar
LinuxSuRen 已提交
896
      <guid>https://jenkins-zh.cn/wechat/management/operators/readme.en/</guid>
LinuxSuRen's avatar
LinuxSuRen 已提交
897 898 899 900 901 902 903 904
      <description>About Records about how can publish the Jenkins WeChat articles.
Request permission If you want to help publish Jenkins WeChat articles, you need to create a PR with the file below. The file name should follow this pattern: githubid-short-term.yaml.
Example file:
wechat: wechatid github: linuxsuren terms: - 2018-11-11  Duty All articles should exist in the current git repo. Your job is just copying it then choose the right date to publish.</description>
    </item>
    
    <item>
      <title></title>
LinuxSuRen's avatar
LinuxSuRen 已提交
905
      <link>https://jenkins-zh.cn/wechat/management/operators/readme/</link>
LinuxSuRen's avatar
LinuxSuRen 已提交
906 907
      <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
      
LinuxSuRen's avatar
LinuxSuRen 已提交
908
      <guid>https://jenkins-zh.cn/wechat/management/operators/readme/</guid>
LinuxSuRen's avatar
LinuxSuRen 已提交
909
      <description>关于 本文描述如何发布 Jenkins 官方微信公众号文章。
LinuxSuRen's avatar
LinuxSuRen 已提交
910
发布时间 我们在每周一、三、五晚上九至十点发布文章。
LinuxSuRen's avatar
LinuxSuRen 已提交
911 912 913 914 915 916 917 918 919 920 921
每次发布,同一类型的文章只能包含一篇。需要在同一天发布多篇文章的话,顺序如下:
 活动、通知 原创 翻译 转载  申请权限 如果您愿意帮忙发布 Jenkins 微信公众号文章,您需要新建(或更新)如下的示例文件,并创建一个 PR 。文件名的格式如:githubid-short-term.yaml.
示例文件:
wechat: wechatid github: linuxsuren terms: - 2018-11-11  根据微信公众号平台的规定,可以绑定5个长期运营者, 20个短期(一个月)运营者。上面的字段 terms 为管理周期。
短期运营者 有至少一篇文章被发布在公众号上,熟悉发布流程,认真负责。
长期运营者 有至少三次的短期运营者经历,并经过小组全体成员同意。
职责 所有的文章,都需要提交到该仓库中。您的任务是从该仓库中拷贝文章,然后在公众号平台上创建,进行必要的排版处理。在发布之前,需要把预览链接发送到给大家进行审查。最后,没问题的话,设置发送时间。注意,公众号中的内容必须与该仓库保持一致。</description>
    </item>
    
    <item>
      <title>2018年 Jenkins 国内使用情况调查问卷</title>
LinuxSuRen's avatar
LinuxSuRen 已提交
922
      <link>https://jenkins-zh.cn/wechat/articles/2018/12/2018-12-19-jenkins-survey/</link>
LinuxSuRen's avatar
LinuxSuRen 已提交
923 924
      <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
      
LinuxSuRen's avatar
LinuxSuRen 已提交
925
      <guid>https://jenkins-zh.cn/wechat/articles/2018/12/2018-12-19-jenkins-survey/</guid>
LinuxSuRen's avatar
LinuxSuRen 已提交
926 927 928 929 930 931 932 933 934 935 936 937 938
      <description>近年来,在数字化转型的压力之下,以 DevOps 和微服务为代表的云原生技术,作为企业数字化转型的重要支撑,活跃于开源技术的舞台。 而 DevOps 作为一种理念,落地交付必然离不开 CI/CD 等工具的支持。 Jenkins 在此方面的重要作用,相信大家也是有目共睹。Jenkins 之所以深受国内用户的喜爱,不仅因为它开源免费、功能强大、插件众多,其背后社区的开放、包容和活跃,更是其生命力之所在!
在新的一年里, Jenkins 社区希望能够更好地推广和传播这项技术,使越来越多的 Jenkins 中文用户能在实际工作中体会它的魅力。正因如此,我们发起了 “2018年 Jenkins 国内使用情况调查问卷”,希望通过这份问卷的互动,我们能够更加清晰 Jenkins 社区2019年的发展方向。
请扫一扫下面的二维码,或者在微信中长按识别,完成下面的问卷。只需要占用您大概1~2分钟的时间。
问卷有效时间,从 2018年12月19日 到 2019年1月9日 截止。
另外,还有两则好消息与大家分享。
第一则好消息是 Jenkins 中文站点已经正式上线,大家可以在上面找到入门教程、使用案例以及优秀的技术博客,我们会不断完善相关文档和教程。当然,无论是贡献文档、代码,还是其他任何形式的贡献,非常欢迎大家参与其中。从来没有参与过开源项目的朋友也不用担心,可以通过微信公众号留言给我们,志同道合的小伙伴们会主动与你联系,助你一同踏入精彩的开源世界。
另一则好消息是我们将通过此官方微信公众号,陆续推出 Jenkins 相关系列视频,由浅入深地为使用者们介绍 Jenkins 相关知识及使用经验。对于“如何构建特定语言的项目”、“如何在 Kubernetes 集群中更好地利用 Jenkins ”以及“如何排查问题”等大家感兴趣的热门话题,都可以从这些视频中得到经验分享。
最后,欢迎订阅 Jenkins 中文邮件组与我们进行交流和互动。衷心希望能够通过更多小伙伴的加入,不断完善开源社区氛围,深度技术互动,协力共建一个更加开放、更加包容、更加活跃的 Jenkins 社区!
有内容、有态度的 Jenkins 社区,期待有你同行!</description>
    </item>
    
    <item>
      <title>Custom WAR Packager</title>
LinuxSuRen's avatar
LinuxSuRen 已提交
939
      <link>https://jenkins-zh.cn/wechat/articles/2018/12/2018-12-5-custom-war-packager/</link>
LinuxSuRen's avatar
LinuxSuRen 已提交
940 941
      <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
      
LinuxSuRen's avatar
LinuxSuRen 已提交
942
      <guid>https://jenkins-zh.cn/wechat/articles/2018/12/2018-12-5-custom-war-packager/</guid>
LinuxSuRen's avatar
LinuxSuRen 已提交
943 944 945 946 947 948 949 950
      <description>我打算给 Jenkins 管理员和开发者介绍一个新的工具 Custom WAR Packager。该工具可以打包 Jenkins 的自定义 WAR 发行版、 Docker 镜像和 Jenkinsfile Runner 包。 它可以打包 Jenkins、插件以及配置为开箱即用的发行版。 Custom WAR Packager 是我们在博客 A Cloud Native Jenkins(/blog/2018/09/12/speaker-blog-a-cloud-native-jenkins/) 中介绍过的无状态 Jenkins master 工具链的一部分。这个工具链已经在 Jenkins X 中被使用,用于构建 serverless 镜像(https://github.com/jenkins-x/jenkins-x-serverless)。
在这篇文章中,我将会介绍几种 Custom WAR Packager 常见的使用场景。
== 历史
正如 Jenkins 本身一样,Custom WAR Packager 开始于一个小的开发工具。在 Jenkins 内运行集成测试很长时间以来都是一个难题。 对此,我们有三个主要的框架: Jenkins Test Harness, Acceptance Test Harness, 和 Plugin Compatibility Tester. 这些框架都需要一个 Jenkins WAR 文件来运行测试。但是假如你想在类似 AWS 一样的自定义环境中进行 Jenkins 测试呢? 或者,你希望基于 Pluggable Storage 的环境也可以复用 Jenkins 流水线测试,来确保没有回归缺陷?</description>
    </item>
    
    <item>
      <title>Docker Hub 上的官方 Jenkins 镜像</title>
LinuxSuRen's avatar
LinuxSuRen 已提交
951
      <link>https://jenkins-zh.cn/wechat/articles/2018/12/2018-12-26-official-docker-image/</link>
LinuxSuRen's avatar
LinuxSuRen 已提交
952 953
      <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
      
LinuxSuRen's avatar
LinuxSuRen 已提交
954
      <guid>https://jenkins-zh.cn/wechat/articles/2018/12/2018-12-26-official-docker-image/</guid>
LinuxSuRen's avatar
LinuxSuRen 已提交
955 956 957 958 959 960 961 962 963 964
      <description>目前,在 Docker Hub 上有三个不同的仓库正(或曾经)被当作“官方” Jenkins 镜像。 本文是为了申明哪个是当前的官方镜像(截至2018年12月).
官方的 docker pull jenkins/jenkins
例如:https://hub.docker.com/r/jenkins/jenkins/ 是正确的仓库。
在我的博客 对于使用 Jenkins 官方 Docker 镜像推荐的方法 上也有一些记录。
废弃的 jenkins 已经废弃了很久。 我们停止使用和更新该镜像的简短原因是,我们每次发版时都需要人工参与。 jenkinsci/jenkins 同样已经废弃了很久,但为了过渡,我们会同时更新 jenkins/jenkins(正确的那个) 和 jenkinsci/jenkins。 2018年12月初,我们停止更新 jenkinsci/jenkins(如果您感兴趣的话,查看 INFRA-1934 可以获取更多详情)。
感谢您的阅读!</description>
    </item>
    
    <item>
      <title>Jenkins Configuration-as-Code: 看,我都不用手动配置</title>
LinuxSuRen's avatar
LinuxSuRen 已提交
965
      <link>https://jenkins-zh.cn/wechat/articles/2018/12/2018-12-12-gasc/</link>
LinuxSuRen's avatar
LinuxSuRen 已提交
966 967
      <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
      
LinuxSuRen's avatar
LinuxSuRen 已提交
968
      <guid>https://jenkins-zh.cn/wechat/articles/2018/12/2018-12-12-gasc/</guid>
LinuxSuRen's avatar
LinuxSuRen 已提交
969 970 971 972 973 974 975 976 977
      <description>NOTE: 这篇文章是 Configuration-as-Code 系列的第一部分。
Jenkins 非常灵活,如今已成为实现 CI/CD 的事实标准,同时拥有一个活跃的社区来维护几乎所有工具和用例的插件。但是灵活也是要付出代价的:除了 Jenkins 核心之外,许多插件需要一些系统级别的设置才能正常工作。
在某些情况下,“Jenkins 管理员”是一个全职职位。 Jenkins 管理员在负责维护基础设施的同时,还要为一个巨大的 Jenkins master 提供数百个已安装的插件和数千个托管作业。 维护最新的插件版本是一项挑战,故障转移(failover)也会是一场噩梦。
这就像几年前系统管理员必须要为每个服务管理特定的机器一样。 在 2018 年,通过使用基础架构自动化工具和虚拟化,一切都可以作为代码进行管理。 需要一个新的应用服务器作为你的应用的暂存环境吗?那你只需要部署一个 Docker 容器。 基础设施缺少资源吗?那就在你喜欢的云服务上分配更多资源来使用 Terraform。
在这种情况下,Jenkins 管理员的角色怎么样?他们是否还要花费数小时来点击网页表单上的复选框?也许他们已经采用了一些自动化、依赖于 Groovy 脚本或一些自己写的 XML 模板。
今年早些时候我们发布了第一个 alpha 版本的 “Jenkins Configuration-as-Code” (JCasC),它是一种基于 YAML 配置文件和自动模型发现的 Jenkins 配置管理新方法。&amp;rdquo;JCasC&amp;rdquo; 已经升级为顶级 Jenkins 项目。 同时,对应的 Jenkins 增强提案已经被接受。
JCasC 能为 Jenkins 管理员做些什么? JCasC 允许我们在启动时或通过 web UI 按需在 Jenkins master 上应用一组 YAML 文件。 与 Jenkins 用于实际储存配置的详细 XML 文件相比,这些配置文件非常简洁易读。 这些文件还有用户友好的命名约定,使管理员能够轻松地配置所有 Jenkins 组件。</description>
    </item>
    
LinuxSuRen's avatar
deploy  
LinuxSuRen 已提交
978 979
    <item>
      <title>Jenkins 中文社区邀您来上海共同参与2019年的国际开源盛宴</title>
LinuxSuRen's avatar
LinuxSuRen 已提交
980
      <link>https://jenkins-zh.cn/wechat/articles/2019/04/2019-04-15-kubecon-cn/</link>
LinuxSuRen's avatar
deploy  
LinuxSuRen 已提交
981 982
      <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
      
LinuxSuRen's avatar
LinuxSuRen 已提交
983
      <guid>https://jenkins-zh.cn/wechat/articles/2019/04/2019-04-15-kubecon-cn/</guid>
LinuxSuRen's avatar
deploy  
LinuxSuRen 已提交
984 985 986 987 988 989 990 991
      <description>KubeCon + CloudNativeCon | Open Source Summit | 持续交付峰会 中国2019 2019年4月10日,旧金山 - Linux基金会是一家以开源促进大众创新的非营利组织,今天公布将于2019年6月24至26日在中国上海举行的 KubeCon + CloudNativeCon + Open Source Summit 中国2019日程。
Open Source Summit 中国2019前身为 LinuxCon + ContainerCon + CloudOpen 中国(LC3),是开源社区寻求合作、共享信息、了解当今最有影响力的开源技术和议题的重要平台,包括:云原生、无服务器、微服务、物联网、人工智能、网络、Linux 等。
2019年,首次将Open Source Summit中国和KubeCon + CloudNativeCon中国整合成一项活动,只需购票一次即可参加KubeCon + CloudNativeCon + Open Source Summit中国。
本届持续交付峰会将由 CNCF 承办在大会的第 0 天举行,汇聚了各个开源 CI/CD 社区。
Jenkins 中文社区成员在大会上将进行分享 Jenkins 中文社区成员夏润泽(北京优帆科技有限公司)将在大会上作为演讲嘉宾为大家带来主题为 Jenkins X 在 kubernetes 之上运行的无服务器 Jenkins 的分享。
Jenkins 中文社区邀您参与社区共同成长 在开源盛会开展的同时,我们希望能够与更多的小伙伴们一同在线上完善开源社区氛围、线下深度互动,努力构建一个有内容、有态度的优质技术社区。</description>
    </item>
    
LinuxSuRen's avatar
deploy  
LinuxSuRen 已提交
992 993
    <item>
      <title>Jenkins 中文语言包</title>
LinuxSuRen's avatar
LinuxSuRen 已提交
994
      <link>https://jenkins-zh.cn/wechat/articles/2019/01/2019-01-16-localization-zh-cn-plugin/</link>
LinuxSuRen's avatar
deploy  
LinuxSuRen 已提交
995 996
      <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
      
LinuxSuRen's avatar
LinuxSuRen 已提交
997
      <guid>https://jenkins-zh.cn/wechat/articles/2019/01/2019-01-16-localization-zh-cn-plugin/</guid>
LinuxSuRen's avatar
deploy  
LinuxSuRen 已提交
998 999 1000 1001 1002 1003
      <description>部分 Jenkins 中文用户可能已经发现,在最近升级 Jenkins 版本,或下载较新的 Jenkins 后,界面上很多部分显示的是英文。对此,我简单介绍一下原因以及如何安装中文插件。
各种语言的本地化资源文件都是集中存放在 Jenkins Core 及其插件中,这对于要做本地化贡献的人来说,需要向很多代码仓库中提交 PR。最明显的一个现象就是,这些仓库不一定都会有熟悉中文的维护者,因此导致 PR 无法真实、及时地进行 Review 以及合并发布。基于以上的考虑,我开发了简体中文插件,并从 Jenkins 2.145 版本中把大部分的中文本地化资源文件迁移到了该插件中。而且,最终会对 Jenkins Core 以及流行的插件中所有的中文本地化资源文件进行迁移。
安装简体中文插件也很简单,只要在 Jenkins 的插件管理界面上,搜索*中文*就能找到该插件。安装并重启后就能看到中文界面。
更多细节请查看 变更记录 。欢迎对中文本地化工作感兴趣的同学加入我们!</description>
    </item>
    
LinuxSuRen's avatar
deploy  
LinuxSuRen 已提交
1004 1005
    <item>
      <title>Jenkins 和 Kubernetes -云上的神秘代理</title>
LinuxSuRen's avatar
LinuxSuRen 已提交
1006
      <link>https://jenkins-zh.cn/wechat/articles/2019/01/2019-01-30-k8s-jenkins-secet-agent/</link>
LinuxSuRen's avatar
deploy  
LinuxSuRen 已提交
1007 1008
      <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
      
LinuxSuRen's avatar
LinuxSuRen 已提交
1009
      <guid>https://jenkins-zh.cn/wechat/articles/2019/01/2019-01-30-k8s-jenkins-secet-agent/</guid>
LinuxSuRen's avatar
deploy  
LinuxSuRen 已提交
1010 1011 1012 1013 1014 1015 1016
      <description>最近我们构建和部署服务的方式与原来相比简直就是突飞猛进,像那种笨拙的、单一的、用于构建单体式应用程序的方式已经是过去式了。我们努力了这么久,终于达到了现在的效果。现在的应用为了提供更好的拓展性和可维护性,都会去拆解成各种相互依赖小、解耦性强的微服务,这些服务有各自的依赖和进度。如果你想去构建你所负责的服务,那么从一开始,就应该使用 CI/CD 的方式;当然,如果你走上了这条路, Jenkins 就是你的良师益友。
如果你是做微服务的话,那让我们在开始之前先花些时间想一想。如果你只在 Jenkins 上构建单体式应用程序,那你肯定每天都会运行很多 Jenkins job, 而且还要不厌其烦地运行很多次。所以,我们应该好好想清楚怎么样来做出一些改变来适应这种事情。其实只需要付出一些努力,Jenkins 就可以帮我们很好地解决这种事情。
我的 Jenkins 的进阶之路 作为一个 Devops 从业者,我遇到的最大问题是如何管理并优化自己的 Jenkins agent 结构。如果只是用 Jenkins 玩玩,实验性地跑一些流水线,那根本不用考虑 agent 的事情。如果你每天要跑成百上千条流水线的话,那考虑怎么去做优化就是一件非常非常重要的事情了。在 Jenkins 进阶之路中,我也尝试了各种不同的方式来寻找最好的 Jenkins agent 的使用方式。相信如果你也和我一样经历过,那下面这些事情你一定会很熟悉喽。
下面是我在这些年中使用 Jenkins 的各个阶段.
 所有的构建都在 master 节点上跑,在这个节点上运行所有的组件. (我给这个阶段起了个可爱的名字, Hello Jenkins) 创建一个 Jenkins EC2 代理,并且在这个代理上运行所有的构建,怎么说呢, 就是大而全,这个节点什么都能做。如果需要同时做多条任务,那就把这个大而全的节点克隆一份。 (这个阶段我起的名字是 Monster Agent.) 为每种服务创建不同的 Jenkins EC2 的节点 (这个阶段我起的名字叫做 Snowflake Agent.) 在容器中运行流水线的所有步骤。 打个比方,在 Jenkins 中使用 Docker Plugin 这个插件将代理挂载到容器中,或者使用 multi-stage Dockerfiles 把所有构建,测试打包的流程都封装起来。这两种方法都是很好的容器抽象化的开端,并且允许您轻松地将制品从一个容器复制到另一个容器。当然了,每一种方法都是需要访问 Docker engine 的。为了让我的 Jenkins 代理能够正常工作,现在我用以下几种方式来管理 docker host 在我的 Jenkins 主容器中运行一个Docker engine - Docker in Docker (DinD) 把主机上的 Docker socket 挂载到我的容器中来,让我的容器能够以 sidecar 的方式运行。 为 Jenkins 主服务器配置单个外部 EC2 Docker 主机,以用于在容器中启动构建 使用 EC2 插件和包含 Docker Engine 的 AMI 动态启动代理,然后运行多阶段 Dockerfile 中的所有步骤  以上这些阶段各有利弊,但都是为了让我们从管理 Jenkins 节点中解放出来。不过,最近我又进阶到了另外一个阶段:Jenkins on Kubernetes.</description>
    </item>
    
LinuxSuRen's avatar
LinuxSuRen 已提交
1017 1018
    <item>
      <title>Jenkins 微信订阅号</title>
LinuxSuRen's avatar
LinuxSuRen 已提交
1019
      <link>https://jenkins-zh.cn/wechat/articles/2018/11/2018-11-14-first-voice/</link>
LinuxSuRen's avatar
LinuxSuRen 已提交
1020 1021
      <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
      
LinuxSuRen's avatar
LinuxSuRen 已提交
1022
      <guid>https://jenkins-zh.cn/wechat/articles/2018/11/2018-11-14-first-voice/</guid>
LinuxSuRen's avatar
LinuxSuRen 已提交
1023 1024 1025 1026 1027 1028 1029 1030 1031 1032 1033
      <description>Jenkins 作为 CI/CD 领域里非常有实力和生命力的平台,不但在国外有很多用户,在国内也有很多的拥趸者。大家拥抱 Jenkins,不仅仅因为它是新的方向,更因为这背后有着一个非常开放、活跃的开源社区。
为了使更多的 Jenkins 中文用户,能够及时、准确地获得来自官方的最新动态,经过社区贡献者的讨论,大家一致认为,开通 Jenkins 微信订阅号是非常必要也非常有意义的一件事情。同时,Jenkins 的创始人 Kohsuke Kawaguchi 先生对这个想法非常认同,他亲自签名并授权,对我们创建 Jenkins 微信订阅号提供了巨大的支持和鼓励。
于是,Jenkins 微信订阅号便在今天,正式与您见面了。
随着 Jenkins 订阅号的开通,我们将有更加直接的平台来与各位分享社区目前在做的一些事情。在这之前,我们早已着手进行 Jenkins 中文本地化的相关工作。目前社区贡献者主要在做的事情包括:创办并维护 Jenkins 以及 Jenkins X 的中文官网、Jenkins Core 以及插件的本地化等。
如果您愿意和其他 Jenkins 用户进行线下面对面的交流和分享,Jenkins Area Meetups(后文简称“JAM”) 将会是一个不错的选择。目前,在社区贡献者和技术爱好者的共同努力下,我们已经在北京、深圳、西安等地成功举办过多次 JAM 活动。在 JAM 上,您除了可以体验到很多有关 Jenkins 的实际应用、最新特性之外,还可以结识社区里的朋友并进行深度互动。
Jenkins 社区贡献者们秉承传播 Jenkins 技术、加强互动交流、推动 Jenkins 中文本地化的理念,将在今后定期举办多种多样的线上线下活动。我们尊重任何形式、任何规模的贡献,并热忱地欢迎新贡献者的加⼊,也欢迎您联系我们来分享您的心得、体会,或者共同举办一次 JAM 活动。Jenkins 官网对如何参与有更加详细的说明,有任何问题,欢迎大家留言给我们。
我们衷心希望,随着 Jenkins 订阅号的开通,能够与更多的小伙伴们一同在线上完善开源社区氛围、线下深度互动,努力构建一个有内容、有态度的优质技术社区。</description>
    </item>
    
    <item>
      <title>Jenkins 的重要安全更新</title>
LinuxSuRen's avatar
LinuxSuRen 已提交
1034
      <link>https://jenkins-zh.cn/wechat/articles/2018/12/2018-12-26-security-updates/</link>
LinuxSuRen's avatar
LinuxSuRen 已提交
1035 1036
      <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
      
LinuxSuRen's avatar
LinuxSuRen 已提交
1037
      <guid>https://jenkins-zh.cn/wechat/articles/2018/12/2018-12-26-security-updates/</guid>
LinuxSuRen's avatar
LinuxSuRen 已提交
1038 1039 1040 1041 1042
      <description>我们刚刚发布了版本 2.154 和 LTS 2.150.1 的 Jenkins 安全更新,修复了多个安全漏洞。 由于 2.150.1 是新的 LTS 中的第一个版本,而且,我们还发布了上一个 LTS 2.138.4 版本的安全更新。 这使得管理员们可以安装今天的安全修复,而不必立即升级到新的 LTS 版本。
查看 link:/security/advisory/2018-12-05[安全报告],了解有哪些被修复。 查看我们的 link:/doc/upgrade-guide/2.138/#upgrading-to-jenkins-lts-2-138-4[LTS 2.138.4 升级指导],了解影响范围。
当前修复中有关之前发布变更的部分 在八月和十月份的 Jenkins 核心安全更新中,包括一项改进,可以通过设置多个系统属性来禁用。 那些变更是 SECURITY-595 修复的重要部分,因此,我们强烈建议禁用。而且,之前发布的文档已更新。</description>
    </item>
    
LinuxSuRen's avatar
deploy  
LinuxSuRen 已提交
1043 1044
    <item>
      <title>Windows 安装程序更新</title>
LinuxSuRen's avatar
LinuxSuRen 已提交
1045
      <link>https://jenkins-zh.cn/wechat/articles/2019/02/2019-02-27-windows-installers/</link>
LinuxSuRen's avatar
deploy  
LinuxSuRen 已提交
1046 1047
      <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
      
LinuxSuRen's avatar
LinuxSuRen 已提交
1048
      <guid>https://jenkins-zh.cn/wechat/articles/2019/02/2019-02-27-windows-installers/</guid>
LinuxSuRen's avatar
deploy  
LinuxSuRen 已提交
1049 1050 1051 1052 1053 1054 1055 1056 1057 1058
      <description>Jenkins 的 Windows 安装程序已经存在很多年了,它是用户在 Windows 上安装 Jenkins Master 作为服务的一种方式。 从被开发出来至今,它还没有什么新特性,但现在是时候做出改变了。
首先,让我们瞧瞧现版本安装程序的使用经验。
第1步 启动安装程序 这是使用 WiX Toolset Windows 安装程序的默认界面外观,算不上太好看,而且没有太多对安装程序进行说明的品牌信息。
第2步 安装目录 同样,没有太多的品牌信息。
第3步 安装 除了选择安装位置外,安装程序大体上没有提供一些安装 Jenkins 的选项。
问题 现在的安装程序存在一些问题,平台特别兴趣小组会修复这些问题,并为用户提供新的安装体验。
 安装程序只支持32位安装。 用户不能选择 Jenkins 作为 Windows 服务启动时的端口以及账户。 安装程序捆绑了32位的 Java Runtime,而没有使用已存在的 JRE。 安装程序不支持 Jenkins for Java 11中的实验性支持。 JENKINS_HOME 目录并不适合现代 Windows。 安装程序中没有品牌。  前进 使用实验性的 Jenkins Windows 安装程序,大部分问题都已解决!
 安装程序将只支持64位系统,这也是如今大多数 Windows 系统的现状,所以能让更多的用户能够使用安装包来安装 Jenkins。 用户能够为服务输入用户信息,同时选择端口以便于 Jenkins 验证端口是否可用。 安装程序不再捆绑 JRE 而是在操作系统中寻找合适的 JRE。如果用户想要使用一个不同的 JRE,可以在安装时指定。 安装程序已经支持 Java 11,包括在 Java 11 预览上面列出的组件。 JENKINS_HOME 目录被放置在启动服务用户的 LocalAppData 目录下,这与现代 Windows 文件系统布局一致。 安装程序已经升级带有品牌了,这让它看起来更酷并能提供一个更好的用户体验。  截图 以下是新安装程序的系列屏幕截图:</description>
    </item>
    
LinuxSuRen's avatar
deploy  
LinuxSuRen 已提交
1059 1060
    <item>
      <title>什么是 CI/CD?</title>
LinuxSuRen's avatar
LinuxSuRen 已提交
1061
      <link>https://jenkins-zh.cn/wechat/articles/2019/04/2019-04-12-what-is-cicd/</link>
LinuxSuRen's avatar
deploy  
LinuxSuRen 已提交
1062 1063
      <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
      
LinuxSuRen's avatar
LinuxSuRen 已提交
1064
      <guid>https://jenkins-zh.cn/wechat/articles/2019/04/2019-04-12-what-is-cicd/</guid>
LinuxSuRen's avatar
deploy  
LinuxSuRen 已提交
1065 1066 1067 1068
      <description>CI/CD 的出现改变了开发人员和测试人员发布软件的方式。本文是描述这一变化的系列文章第一篇, 这些文章将提供各种工具和流程的讲解,以帮助开发人员更好的使用 CI/CD。
从最初的 瀑布模型, 到后来的 敏捷开发, 再到今天的 DevOps, 这是现代开发人员构建出色产品的技术路线。 随着 DevOps 的兴起,出现了持续集成,持续交付(CI/CD)和持续部署的新方法, 而传统的软件开发和交付方式在迅速变得过时。过去的敏捷时代里, 大多数公司的软件发布周期是每月、每季度甚至每年(还记得那些日子吗?), 而在现在 DevOps 时代,每周、每天甚至每天多次都是常态。 当 SaaS 成为业界主流后尤其如此,您可以轻松地动态更新应用程序, 而无需强迫用户下载更新组件。很多时候,用户甚至都不会注意到正在发生变化。
开发团队通过软件交付流水线(Pipeline)实现自动化,以缩短交付周期, 大多数团队都有自动化流程来检查代码并部署到新环境。 我们一直在关注自动化测试流程,但这将在之后的文章中介绍。 今天,我们将介绍什么是 CI/CD/CD ,以及现代软件公司如何使用工具将部署代码的流程自动化。
持续集成注重将各个开发者的工作集合到一个代码仓库中,通常每天会进行几次, 主要目的是尽早发现集成错误,使团队更加紧密结合,更好地协作。 持续交付的目的是最小化部署或发布过程中团队固有的摩擦, 它的实现通常能够将构建部署的每个步骤自动化,以便任何时刻能够安全地完成代码发布(理想情况下)。 持续部署是一种更高程度的自动化,无论何时代码有较大改动, 都会自动进行构建/部署。
LinuxSuRen's avatar
deploy  
LinuxSuRen 已提交
1069
以上的每一个阶段都是交付流水线的一部分。 Humble 和 Ferley 在他们的书作《持续交付:通过自动化构建、测试和部署实现可靠软件版本发布》中解释说: 「对软件的每次更改都要经过一个复杂的过程才能发布,该过程包括多个测试和部署阶段进行软件的构建。 反过来看,这个过程需要许多人之间的合作,甚至可能需要几个团队间合作。 部署流水线对这一过程进行建模,并且它的持续集成和发布管理工具能让您在代码从版本控制转移到各种测试和部署时, 查看和控制每次更改的过程。」
LinuxSuRen's avatar
deploy  
LinuxSuRen 已提交
1070 1071 1072 1073 1074 1075 1076
持续集成(CI) 通过持续集成,开发人员能够频繁地将其代码集成到公共代码仓库的主分支中。 开发人员能够在任何时候多次向仓库提交作品,而不是独立地开发每个功能模块并在开发周期结束时一一提交。
这里的一个重要思想就是让开发人员更快更、频繁地做到这一点,从而降低集成的开销。 实际情况中,开发人员在集成时经常会发现新代码和已有代码存在冲突。 如果集成较早并更加频繁,那么冲突将更容易解决且执行成本更低。
当然,这里也有一些权衡,这个流程不提供额外的质量保障。 事实上,许多组织发现这样的集成方式开销更大,因为它们依赖人工确保新代码不会引起新的 bug 或者破坏现有代码。 为了减少集成期间的摩擦,持续集成依赖于测试套件和自动化测试。 然而,要认识到自动化测试和持续测试是完全不同的这一点很重要,我们会在文章结尾处详细说明。
CI 的目标是将集成简化成一个简单、易于重复的日常开发任务, 这样有助于降低总体的构建成本并在开发周期的早期发现缺陷。 要想有效地使用 CI 必须转变开发团队的习惯,要鼓励频繁迭代构建, 并且在发现 bug 的早期积极解决。
持续交付(CD)实际上是 CI 的扩展,其中软件交付流程进一步自动化,以便随时轻松地部署到生成环境中。 成熟的持续交付方案也展示了一个始终可部署的代码库。使用 CD 后,软件发布将成为一个没有任何紧张感的例行事件。 开发团队可以在日常开发的任何时间进行产品级的发布,而不需要详细的发布方案或者特殊的后期测试。</description>
    </item>
    
LinuxSuRen's avatar
LinuxSuRen 已提交
1077 1078
    <item>
      <title>从 Jenkins Master 扩展网络连接</title>
LinuxSuRen's avatar
LinuxSuRen 已提交
1079
      <link>https://jenkins-zh.cn/wechat/articles/2018/12/2018-12-19-scaling-network-connections/</link>
LinuxSuRen's avatar
LinuxSuRen 已提交
1080 1081
      <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
      
LinuxSuRen's avatar
LinuxSuRen 已提交
1082
      <guid>https://jenkins-zh.cn/wechat/articles/2018/12/2018-12-19-scaling-network-connections/</guid>
LinuxSuRen's avatar
LinuxSuRen 已提交
1083 1084 1085 1086 1087
      <description>Oleg Nenashev 和我今年将在旧金山的 DevOps World | Jenkins World 上,做从 Jenkins Master 扩展网络连接 的演讲。 多年来,我们一直致力于分析、优化和加强 Remoting channel, 才有了现如今 master 能够协调 agent 的活动,并且接收构建的结果。 尽管许多技术可以改进服务,比如优化代理启动器,但是想要有质的改变,只有从根本上改变传播的内容和方式。
3月,JENKINS-27035 引入了一个框架,用于检查 Remoting channel 在高级别上的通信。 以前,开发人员只能使用一般的低级工具,例如 Wireshark, 它不能精确的识别 Jenkins 负责通信的代码片段。
在过去的几个月里,Cloud Native SIG 在解决根本原因方面取得了进展。 Artifact Manager on S3 plugin 已经发布并与 Jenkins Evergreen 整合, 支持在 agent 和 Amazon 服务器之间,进行大制品的上传和下载, 源生插件允许由 agent 生成的所有构建的日志内容(例如在 steps 的 sh 中) 直接定向流到外部存储服务,如 AWS CloudWatch Logs。 与此同时也开始上传 junit 格式的测试结果,这些测试结果有时会变的很大,将直接从 agent 到存储数据库。 所有这些努力都可以减轻 Jenkins Master 和本地网络的负载,而不需要开发人员修改他们的 pipeline 脚本。</description>
    </item>
    
LinuxSuRen's avatar
deploy  
LinuxSuRen 已提交
1088 1089
    <item>
      <title>使用 YAML 文件配置 Jenkins 流水线</title>
LinuxSuRen's avatar
LinuxSuRen 已提交
1090
      <link>https://jenkins-zh.cn/wechat/articles/2019/01/2019-01-23-configuring-jenkins-pipeline-with-yaml-file/</link>
LinuxSuRen's avatar
deploy  
LinuxSuRen 已提交
1091 1092
      <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
      
LinuxSuRen's avatar
LinuxSuRen 已提交
1093
      <guid>https://jenkins-zh.cn/wechat/articles/2019/01/2019-01-23-configuring-jenkins-pipeline-with-yaml-file/</guid>
LinuxSuRen's avatar
deploy  
LinuxSuRen 已提交
1094 1095 1096 1097 1098 1099 1100
      <description>几年前,我们的 CTO 写了一篇关于 使用 Jenkins 和 Docker 为 Ruby On Rails 应用提供持续集成服务 的文章。这些年,我们一直使用这个 CI 流水线解决方案,直到我们最近决定做一次升级。为什么呢?
 Jenkins 的版本过低,已经很难升级 Wolox 过去几年增长显著,一直面临着如何伸缩的问题 只有极少数人如何修复 Jenkins 服务的问题 配置 Jenkins 任务不是一件简单的任务,使我们的项目启动过程变慢 更改每个作业运行的命令也不是一件简单的任务,并且有权限更改的人并不多。 Wolox 拥有广泛的项目,语言种类繁多,使得这个问题尤为突显。  考虑到这些问题,我们开始深入研究最新版的 Jenkins,看看如何提升我们的 CI 服务。我们需要构建一个新的CI服务,至少要解决以下问题:
 支持 Docker 构建。我们的项目依赖的一个或多个 Docker 镜像的执行(应用,数据库,Redis 等) 如有必要,易于配置和复制 易于增加新项目 易于修改构建步骤。工作在项目上的所有人都应该能修改它,如果他们希望执行 npm install 或 yarn install  安装Jenkins和Docker 安装 Jenkins 非常简单,直接从 官方教程 选择一种方式安装。
以下是我们在 AWS 上的安装步骤:
sudo rpm — import https://pkg.jenkins.io/debian/jenkins.io.key sudo wget -O /etc/yum.repos.d/jenkins.repo http://pkg.jenkins.io/redhat/jenkins.repo sudo yum install java-1.</description>
    </item>
    
LinuxSuRen's avatar
LinuxSuRen 已提交
1101 1102
    <item>
      <title>回顾 2018: 革新的一年</title>
LinuxSuRen's avatar
LinuxSuRen 已提交
1103
      <link>https://jenkins-zh.cn/wechat/articles/2018/12/2018-12-25-year-in-review/</link>
LinuxSuRen's avatar
LinuxSuRen 已提交
1104 1105
      <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
      
LinuxSuRen's avatar
LinuxSuRen 已提交
1106
      <guid>https://jenkins-zh.cn/wechat/articles/2018/12/2018-12-25-year-in-review/</guid>
LinuxSuRen's avatar
LinuxSuRen 已提交
1107 1108 1109 1110 1111 1112 1113 1114 1115 1116
      <description>临近年终,是一个思考总结、展望全局的好时机。那就让我们暂时从日常繁复的工作中停下脚步,一起来盘点 Jenkins 在 2018 这一年的得失与喜乐。
在整个行业中,对进一步自动化的不懈追求仍在继续。我们正以前所未有的速度编写软件,与此同时,对于软件的需求似乎越来越高,我觉得越来越多的企业和高管都敏锐地意识到软件和开发者已登基为王。在底层的角度,我遇到的每个团队都认为软件交付自动化是他们的“软件工厂”的关键部分,对这些团队而言,创建、管理具有不可思议的灵活性和可视性的自动化十分重要。
自诞生14年以来,Jenkins 将继续在实现这一目标上发挥重要作用,总之,增长的步伐似乎正在加速。在这个发展飞快的行业里,成为这一成就的一份子着实让我感到自豪。
把 Jenkins 打造为每个人都会使用的工具,这具有很大的责任感。所以在 Jenkins 社区,我们一直都十分努力。事实上,在各个领域和层面上来说,*2018年是整个项目历史上最具有创新性的一年*。
 随着不断发展壮大,我们亟需探索出能使更多人更好地参与其中的方法。JEPs 和 SIGs 便应运而生。2018年,我们看到了这些形式得到了巨大的吸引力。经过一年的运营,我认为我们已经学到了很多东西,希望我们会在此基础上继续改进。 这些新的形式带来了新的协作方式。例如:中文本地化 SIG运营的 微信公众号和本地化网站。平台 SIG 在 Java 11 support 中也给予了不少帮助。 我也很高兴看到新一批领导者。由于害怕遗漏一些人,所以我不打算在此一一列出,我们在今年秋天祝贺他们中的许多人作为 Jenkins 大使(请在明年提名更多人!)。那些领导关键工作的人往往是那些不熟悉这些角色的人。 一些领导者也努力发掘新的贡献者。我们正在有意识地思考,我们哪一部分的潜在贡献者没有被发掘出来,为什么没有被发掘出来。这也是任一个企业都在做的事情。同时我们也是 Google Summer of Code 和 Outreachy 参与者。 今年我们的安全流程和修复速度再次大幅提升,反映出用户对我们的信任也随之增强。例如,我们今年推出了遥测系统,通知我们更快地开发出更好的修复方案。  现在,社区改进的最重要的地方是我们为您使用的软件带来的影响。在这一方面,我认为我们在2018年做得不错,产生了我所谓的“五个超级武器”
 Jenkins X 可能是今年最明显的创新,使得在 Kubernetes 上创建现代云应用程序变得更加容易。这也标志着 Jenkins 社区及其使命的重大扩展。 Jenkins Configuration as Code 在今年达到了一重要的里程碑 &amp;ldquo;1.0&amp;rdquo; ,并且他继续获得更大的动力。 &amp;ldquo;Cloud Native Jenkins&amp;rdquo; 是我为新努力作的术语,把 Jenkins 转换为 Kubernetes 上大规模运行的通用 CI/CD 引擎。这里还有许多东西需要定义,但你已经可以看到如 Serverless Jenkins 这样的好东西了。 Evergreen 是另一个需要推出的新项目,它有着雄心勃勃的主题——大量地简化了 Jenkins 的使用和操作。 流水线方面的努力形成了一个新的 SIG,我期待它在2019年带来的新影响。  Jenkins 社区能够将用户可见的改变与社区的改进结合在一起,这不仅是不算秘密的秘密,也是社区不断发展的能力。 展望2019年,毫无疑问,随着我们不断地学习和实践,上述提到的事情将不断地发展、变化、融合和分裂。</description>
    </item>
    
    <item>
      <title>在 VS Code 中校验 Jenkinsfile</title>
LinuxSuRen's avatar
LinuxSuRen 已提交
1117
      <link>https://jenkins-zh.cn/wechat/articles/2018/11/2018-11-21-validate-jenkinsfile/</link>
LinuxSuRen's avatar
LinuxSuRen 已提交
1118 1119
      <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
      
LinuxSuRen's avatar
LinuxSuRen 已提交
1120
      <guid>https://jenkins-zh.cn/wechat/articles/2018/11/2018-11-21-validate-jenkinsfile/</guid>
LinuxSuRen's avatar
LinuxSuRen 已提交
1121 1122 1123 1124 1125 1126 1127 1128 1129
      <description>在日常工作中,我经常需要创建或修改很多 Jenkinsfile,有时还会发生错误。这是一个非常繁琐的流程——修改 Jenkinsfile,提交、推送,然后等 Jenkins 提醒你少加了一个括号。
Command-line Pipeline Linter(https://jenkins.io/doc/book/pipeline/development/) 可以有效地减少编写 Jenkinsfile 所需要的调试时间,但是它也有一些不方便的地方。你需要使用像 curl 或 ssh 的工具来连接你的 Jenkins,还需要正确地记住验证 Jenkinsfile 的命令。尽管如此,对我来说,这个方案还是不尽如人意。
鉴于每天都会使用 VS Code,于是我开始着手为此研发插件,使得校验 Jenkinsfile 变得更加友好。
Jenkins Pipeline Linter Connector 的作用就是,把当前打开的文件推送到你的 Jenkins,然后在 VS Code 中显示校验结果。
你可以在 VS Code 插件浏览器中或通过下面的地址找到该插件 https://marketplace.visualstudio.com/items?itemName=janjoerke.jenkins-pipeline-linter-connector 。
该插件会在 VS Code 中添加四个配置选项,你必须要使用这些选项来配置用于验证的 Jenkins。
 jenkins.pipeline.linter.connector.url 是 Jenkins 期望的 POST 请求地址,包含你要校验的 Jenkinsfile 文件。通常为 *http:///pipeline-model-converter/validate*。 jenkins.pipeline.linter.connector.user 允许指定你的 Jenkins 用户名。 jenkins.pipeline.linter.connector.pass 允许指定你的 Jenkins 密码。 jenkins.pipeline.linter.connector.crumbUrl 当你的 Jenkins 启用了 CRSF 时必须指定。通常为 *http:///crumbIssuer/api/xml?xpath=concat(//crumbRequestField,%22:%22,//crumb)*。 ​  </description>
    </item>
    
LinuxSuRen's avatar
deploy  
LinuxSuRen 已提交
1130 1131
    <item>
      <title>在安全防火墙内通过 WebHook 触发构建</title>
LinuxSuRen's avatar
LinuxSuRen 已提交
1132
      <link>https://jenkins-zh.cn/wechat/articles/2019/01/2019-01-16-webhook-firewalls/</link>
LinuxSuRen's avatar
deploy  
LinuxSuRen 已提交
1133 1134
      <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
      
LinuxSuRen's avatar
LinuxSuRen 已提交
1135
      <guid>https://jenkins-zh.cn/wechat/articles/2019/01/2019-01-16-webhook-firewalls/</guid>
LinuxSuRen's avatar
deploy  
LinuxSuRen 已提交
1136 1137 1138 1139 1140 1141 1142 1143 1144 1145 1146 1147
      <description>在这篇文章中,我将向大家展示,如何让运行在防火墙内的 Jenkins 依然可以实时地收到 GitHub 的 WebHook。当然,你也可以把这个方法应用到如 BitBucket、 DockerHub 或任何可以推送 WebHook 的其他服务中。但是,下面的步骤仅适用于托管在 GitHub 上的项目。
什么是 WebHook 简单地描述下什么是 WebHook:事件消息(通常是 JSON,也可以是其他的)由服务端以 HTTP(S) 协议发送到监听的客户端。
事件流自左到右,Jenkins 会监听类似 /github-webhook/ 或 /dockerhub-webhook/ 等路径上的 HTTP 请求,唤醒并执行一些任务。
GitHub 或 BitBucket 可能会报告一个新的提交或 PR,DockerHub 报告一个上游的镜像发生了变更。这些事情的共同之处在于,它们会推送给 Jenkins,并期待可以推送成功(例如:可以访问到 Jenkins)。在网络是开放的情况下时,例如 GitHub 企业版 或 Jenkins 在监听公网时,这是可以正常工作的。
内网环境 当有东西挡在中间时,也就是防火墙:
(_按照行业标准,所有防火墙都必须能起到屏障的作用。因此,无论如何,请不要在你的组织内搞破坏_)
当你在笔记本电脑上运行 Jenkins 并希望从 GitHub 接收 WebHook 时,这也是一样的。可能是为了测试你的设置,也可能是为了在 Mac 上运行 iOS 版本构建,又或者是部分网络没有暴露在互联网中,这都是合理的。 除非你的笔记本电脑可以让整个互联网访问到(这当然不太可能),或者你的网络配置得恰到好处,否则网络连接将无法流动,此时 WebHook是不可用的。
没关系,我们可以退而求其次,使用轮询变更的方式。只是这样很糟糕。你会用尽 API 配额,还无法实时地获取变更,这真的不是一个好方法。
问题可能也是机会 我们可以解决这个问题,但也可以把这个视为一个机会。有的东西在互联网中不可访问,或者以某些默认的方法锁定是一个特色,不是一个 Bug。你可以很大程度上减少你的攻击面,同时可以进行深度防护:
一个 WebHook 转发服务 输入 link:https://smee.io/[Smee] 这个很容易记住的名字。这是一个由 GitHub 提供的 link:https://github.</description>
    </item>
    
LinuxSuRen's avatar
LinuxSuRen 已提交
1148 1149 1150 1151 1152 1153 1154 1155 1156 1157 1158 1159 1160 1161 1162 1163 1164 1165 1166 1167
    <item>
      <title>成为一名 Jenkins 贡献者:对新手友好的工单</title>
      <link>https://jenkins-zh.cn/wechat/articles/2019/06/2019-06-24-becoming-contributor-newbie-tickets/</link>
      <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
      
      <guid>https://jenkins-zh.cn/wechat/articles/2019/06/2019-06-24-becoming-contributor-newbie-tickets/</guid>
      <description>两个月前,我发表了一篇介绍性文章, 成为一名 Jenkins 贡献者的旅程。在那篇第一次发表的文章 review 过后,学习到了我们可以参与和贡献的多种途径。 因此,在这个站点仓库中有对首次、基础的贡献的描述。
现在,我们将会在这篇文章中探索更多高级的贡献,向 Jenkins 核心中提交代码。
从工单和过程开始 新手贡献指导以及 Jenkins Jira 查看位于 jenins.io 上的开发者章节可能是最好的起点, 参考链接也很方便。同时,向 Jenkins 贡献的新手指导也很有用,因为它指出了不同的仓库、工具(例如问题跟踪系统)以及治理文档。 此外,它还描述了提交消息、代码风格约定、PR 指导等的最佳实践。
一旦我们对之前描述的有了一般性的了解,并想要真正地开始编码,我们可能会对该做些什么感到困惑。
似乎浏览Jenkins 问题跟踪系统是顺其自然 的下一步,因为那里充满了已经由社区报告了的潜在的缺陷和待改进的部分。然而,你很容易被无数的可能性列表所淹没。 请记住一点,对于一个像这样有十年历史之久的项目,很多是为新手准备的。因此,通过newbie-friendly tickets来过滤可能是最好的主意。
选择一个工单 在我案例中,我花了一些时间来浏览带 newbie-friendly 标签的工单,直到发现了一个我似乎感兴趣并看起来有能力修复的:
过程 在这个阶段,当我们准备接手这个工单时,最好让社区中的其他人知道我们正在开始解决它。我们可以很容易做到这一点, 只要把工单分配给我们自己即可(查看工单概览下的 “_Assign_” 按钮)。
在 Jenkins 的 Jira 中把工单分配给我们自己的话,可以让其他的贡献者知道我们正在处理;另外,为了保证其他人有兴趣对此一起做贡献时,可以知道 该去联系谁或者如何询问状态。也就是说,把工单分配给你自己,并不意味着其他贡献者就无法继续推进。Jenkins 是一个开源项目,欢迎任何人创建他们自己 的 PR,因此,任何人都可以在工单中提出自己的方案。但是,你也能想到,如果工单分配给某个人的话,大多数人在开始工作前也可能会去联系承接人。
与之相关的是,请牢记当我们把工单分配给自己时,不应该在这个工作上拖延太久。其他的贡献者,可能会由于工单已被分配而忽略。
当我们马上就要开始工作时,推荐的做法是先点击&amp;rdquo;Start Progress&amp;ldquo;按钮。这个动作,会把状态修改为“_In progress_”,对社区而言, 意味着我们正在处理这个工单。
在我们的电脑设置必要的工具 配置,安装和测试 正如在该旅程的第一篇文章中描述的,开始为某个仓库做贡献的第一步 是首先派生到我们自己的 GitHub 账号下,然后,克隆到你的电脑上。
正如,在 Jenkins Core 仓库中的CONTRIBUTING 文件里 所描述的,让仓库在本地运行的必要步骤。它包括,安装必要的开发工具:Java Development Kit (https://adoptopenjdk.net/[OpenJDK] 为推荐的选择),Maven 以及任意支持 Maven 项目的 IDE。注意,安装 JDK 和 Maven 的步骤在贡献指南中有链接。</description>
    </item>
    
LinuxSuRen's avatar
deploy  
LinuxSuRen 已提交
1168 1169
    <item>
      <title>春季安全清查</title>
LinuxSuRen's avatar
LinuxSuRen 已提交
1170
      <link>https://jenkins-zh.cn/wechat/articles/2019/04/2019-04-15-security-spring-cleaning/</link>
LinuxSuRen's avatar
deploy  
LinuxSuRen 已提交
1171 1172
      <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
      
LinuxSuRen's avatar
LinuxSuRen 已提交
1173
      <guid>https://jenkins-zh.cn/wechat/articles/2019/04/2019-04-15-security-spring-cleaning/</guid>
LinuxSuRen's avatar
deploy  
LinuxSuRen 已提交
1174 1175 1176 1177 1178 1179
      <description>今天我们公布了一个 安全报告, 主要是关于 Jenkins 的插件中 还没有被修复 的问题。 发生了什么?
Jenkins 安全团队将 漏洞反馈分类发布在 Jira 和我们的非公开邮件列表中。 一旦我们确定它不是由 Jenkins 安全团队成员维护的插件,我们会尝试将该问题通知插件维护者,以帮助我们开发,审查和发布修复。
这种情况下,我们会发布 安全报告,将这些问题告知用户,即使没有发布修复版本。 这样可以让管理员作出决定,是否继续使用具有未解决的安全漏洞的插件。 今天发布的报告里大多数都是这样的安全问题。
在这个列表中看到您感兴趣的插件并且想要帮忙?了解如何 认领一个插件。</description>
    </item>
    
LinuxSuRen's avatar
deploy  
LinuxSuRen 已提交
1180 1181
    <item>
      <title>自动更新、易于使用的 Jenkins</title>
LinuxSuRen's avatar
LinuxSuRen 已提交
1182
      <link>https://jenkins-zh.cn/wechat/articles/2019/01/2019-01-09-jenkins-evergreen/</link>
LinuxSuRen's avatar
deploy  
LinuxSuRen 已提交
1183 1184
      <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
      
LinuxSuRen's avatar
LinuxSuRen 已提交
1185
      <guid>https://jenkins-zh.cn/wechat/articles/2019/01/2019-01-09-jenkins-evergreen/</guid>
LinuxSuRen's avatar
deploy  
LinuxSuRen 已提交
1186 1187 1188 1189 1190 1191 1192 1193
      <description>当我第一次 写 Jenkins Evergreen 相关的文章 , 后来被称为 &amp;ldquo;Jenkins Essentials&amp;rdquo;,我提到的一系列的未来的发展在接下来的几个月里已经变成了 现实 。 今年在旧金山举办的 DevOps World - Jenkins World 会议上,我会介绍 Jenkins Evergreen 背后哲学的更多细节,展示我们已经做了什么,并且讨论这个激进的 Jenkins 发行版的走向。
正如我在第一篇博客以及 JEP-300 中所讨论的 Jenkins Evergreen 的前两大支柱是我们关注的要点.
自动更新的发行版 不出所料, 实现安全、自动地更新Jenkins发行版(包括核心和插件)所需的机制需要很多的工作。在 Baptiste 的演讲中 他将讨论如何使 Evergreen &amp;ldquo;走起来&amp;rdquo;,而我会讨论 为何 自动更新的发行版很重要。
持续集成和持续交付变得越来越普遍,并且是现代软件工程的基础 ,在不同的组织当中有两种不同的方式使用 Jenkins 。在一些组织当中,Jenkins 通过 Chef ,Puppet 等自动化工具有条不紊的被管理和部署着。然而在许多其他组织当中, Jenkins 更像是一个 设备 ,与办公室的无线路由器不同。当安装完毕,只要它能继续完成工作,人们就不会太多的关注这个设备。
Jenkins Evergreen 发行版通过确保最新的功能更新,bug 修复以及安全性修复始终能安装到 Jenkins 当中,&amp;ldquo;让 Jenkins 更像是一个设备&amp;rdquo;。
除此之外, 我相信 Evergreen 能够向一些我们现在没有完全服务的团队提供良好的服务:这些团体希望能够以 服务 的形式使用 Jenkins 。我们暂时没有考虑提供公有云版本的 Jenkins 。我们意识到了自动接收增量更新,使用户可以在无需考虑更新 Jenkins 的情况下进行持续开发的好处。</description>
    </item>
    
LinuxSuRen's avatar
LinuxSuRen 已提交
1194 1195
  </channel>
</rss>