文档章节

了解如何使用 Jenkins-X UpdateBot

Jenkins中文社区
 Jenkins中文社区
发布于 2019/11/19 09:40
字数 1254
阅读 72
收藏 0

本文首发于:Jenkins 中文社区

原文链接    作者:Ryan Dawson

译者:wenjunzhangp

cover

Jenkins-X UpdateBot 是用于在项目源代码中自动更新依赖项版本的工具。假设您正在构建两个项目 A 和 B,B 使用 A 作为依赖项。A 的发布过程可以使用 UpdateBot 更新项目 B 的源,以使用 A 的新版本。在 pull request 中使用 UpdateBot,可以测试和检查更改或自动合并更改。

在 Jenkins-X platform 中,UpdateBot 由 Jenkinsfile 中的 UpdateBot 命令自动显示和调用。但是 UpdateBot 也可以在 Jenkins-X 之外使用,并且单独运行它可以帮助了解它可以做什么并测试版本替换。因此,让我们用一个简单的测试项目来尝试一下。

配置演示 

UpdateBot 可以为各种不同的文件类型设置版本-我们不会在这里对它们进行全部测试,但是我们希望一个项目具有多个功能。因此,我们可以使用 JHipster sample app 示例应用程序,因为它具有 Maven pom.xml,npm package.json 和 Dockerfile。我们将对其运行 UpdateBot,以查看 UpdateBot 可以替换这些资源文件中哪些内容。

我们可以下载 UpdateBot jar file(v1.1.31),并为要更新的项目设置指向 GitHub 存储库的简单 UpdateBot 配置文件:

github:
  organisations:
  - name: ryandawsonuk
    repositories:
    - name: jhipster-sample-app
      useSinglePullRequest: true

useSinglePullRequest 标记意味着将创建一个包含我们所做的所有更改的 PR。但是我们实际上并不会进行任何更改-我们将在本地运行它,这样我们就不需要 GitHub 对存储库的写权限。通过设置环境变量,我们可以在不推送到 GitHub 的情况下运行:

export UPDATEBOT_DRY_RUN=true

然后,我们仍然需要使用 UPDATEBOT_GITHUB_USER 和 UPDATEBOT_GITHUB_PASSWORDToken)的其他环境变量设置 git 凭据。

然后,我们可以运行一些 UpdateBot 命令,并查看从 Git 克隆的项目中替换了什么。为此,我们可以在 GitHub 上使用一个包含预配置脚本演示项目

运行演示 

首先,脚本更新了 maven pom.xml,要求更改 Spring Boot 版本:

java -jar updatebot-1.1.31.jar push-version --kind maven org.springframework.boot:spring-boot-starter-data-jpa 2.1.0.RELEASE

然后检查更改并输出 git diff,我们可以看到以下结果:screen-shot-2018-11-07-at-091421

因此版本被替换了。请注意,在依赖项引用的属性中将其替换,在这种情况下,pom.xml 在属性中具有此版本。UpdateBot 还可以用于直接在依赖项或父项插件中进行的更改。

对 package.json 的更改是将 ngx-cookie 版本更改为 2.0.2:

java -jar updatebot-1.1.31.jar push-version --kind npm ngx-cookie 2.0.2

这正是我们所期望的:screen-shot-2018-11-06-at-192924

对 Dockerfile 的更改是将 openjdk 版本/标签更改为 jdk8:

java -jar updatebot-1.1.31.jar push-version --kind docker openjdk 8-jdk

这表明我们可以抓取出来。Dockerfile 实际上使用两个不同的 openjdk 镜像,每个镜像都有一个不同的标签,并且此命令将替换这两个镜像:screen-shot-2018-11-06-at-193341

我在运行命令之前没有考虑过这一点,因此在这里我需要确定我真正要替换的内容。

实际运行 

如果我们在没有 dry-run 标记的情况下运行,则将创建一个真实的 pull request,前提是我们有权创建它。

screen-shot-2018-11-06-at-193558-58

UpdateBot 具有自动合并 pull request 的功能,例如通过轮询 GitHub 来检查 PR 状态并合并是否一切正常(命令为updatebot update-loop)。但是,GitHub 确实对这些请求进行了速率限制,因此 UpdateBot 也可以将其批准添加到 PR 中,以使其通过与 GitHub 直接集成的工具进行合并。当使用诸如 prow 或 mergify 之类的工具进行自动合并时,这可能会很好地工作。

UpdateBot 可以尝试仅通过使用 updatebot push 而不是带有显式参数的 updatebot push-version 来推断要作为提交触发管道的一部分进行的更改。但是,通常管道作业将有权访问要推送的版本,而 push version 使更改更明确且更易于跟踪。

本示例使用单个 UpdateBot YAML 文件将一组依赖项/版本推送到一个下游项目。YAML 文件还支持将一组更改推送到多个下游存储库。UpdateBot 推送其能够进行的所有替换,以便每个下游存储库都获得适用于它的所有更改。

例如,在构建没有快照的 Maven 项目时,UpdateBot 可用于在 CI/CD 设置中传播版本。但是,正如我们已经看到的那样,它不仅限于 Maven,而且可以对产生各种不同类型制品的项目进行一系列更改。

© 著作权归作者所有

Jenkins中文社区

Jenkins中文社区

粉丝 82
博文 83
码字总数 121318
作品 2
海淀
私信 提问
加载中

评论(0)

Jenkins X将自动化管道引入Kubernetes

Jenkins持续集成服务器一直是DevOps浪潮中的重要组成部分。作为持续集成与持续部署环境中自动化任务的中央协调服务器,全球的开发和运营团队已经积极接纳Jenkins,并为之构建了多种扩展及构建...

Docker
2018/04/14
0
0
Jenkins 文档特别兴趣小组

本文首发于:Jenkins 中文社区 我们很高兴地宣布 Jenkins 文档特别兴趣小组的成立。 文档特别兴趣小组鼓励贡献者和外部社区创建和 review Jenkins 文档。 更多详情和计划,请参见:文档特别兴...

Jenkins中文社区
2019/05/27
36
0
使用 Jenkins X、Kubernetes 和 Spring Boot 实现 CI/CD

本文首发于:Jenkins 中文社区 过去五年中的变化,如迁移到公有云以及从虚拟机向容器的转变,已经彻底改变了构建和部署软件的意义。 以 Kubernetes 为例。Google 于2014年开源,现在所有主流...

Jenkins中文社区
2019/05/27
140
0
用 Jenkins 构建 CI/CD 流水线

通过这份 Jenkins 分步教程,构建持续集成和持续交付(CI/CD)流水线。 在我的文章《使用开源工具构建 DevOps 流水线的初学者指南》中,我分享了一个从头开始构建 DevOps 流水线的故事。推动...

作者: Bryant Son
2019/11/07
0
0
关于 Jenkins master 共享 JENKINS_HOME 目录的实验

本文首发于:Jenkins 中文社区 作者:翟志军 审校:王冬辉,linuxsuren Jenkins master 的高可用是个老大难的问题。和很多人一样,笔者也想过两个 Jenkins master 共享同一个 JENKINS_HOME 的...

Jenkins中文社区
2019/04/23
59
0

没有更多内容

加载失败,请刷新页面

加载更多

C++ Binder机制学习

核心内容 Binder机制的核心实际上和Android中的Handler发送消息的机制很像,在Binder中负责发消息的是继承了BpInterface的子类,负责处理消息的是BnInterface的子类 发送消息的具体函数是 st...

天王盖地虎626
29分钟前
66
0
正式学习linux-5

1.while条件循环语句 [root@linuxprobe ~]# vim Guess.sh#!/bin/bashPRICE=$(expr $RANDOM % 1000)TIMES=0echo "商品实际价格为0-999 之间,猜猜看是多少?"while truedoread......

嗨豆
30分钟前
62
0
Java 项目编译错误 Error:java: java.lang.ExceptionInInitializer

错误提示信息为: Error:java: java.lang.ExceptionInInitializerError com.sun.tools.javac.code.TypeTags 如果使用 Maven 错误信息是一样的。 [INFO] ---------------------------------......

honeymoose
32分钟前
44
0
使用ViewModel、Observable和LiveData管理Activity视图状态

使用ViewModel、Observable和LiveData管理Activity视图状态 http://tommwq.tech/blog/%e4%bd%bf%e7%94%a8viewmodel%e3%80%81observable%e5%92%8clivedata%e7%ae%a1%e7%90%86activity%e8%a7%......

tommwq
41分钟前
80
0
Linux 常用终端快捷键 - 不看后悔系列

Ctrl + A 该快捷键将移动光标到所在行首。 假如你在终端输入了一个很长的命令或者路径,但是你想要回到它的开头时, 使用方向键移动光标将花费大量时间(ps:我之前经常这样做)。 效果图: ...

nimo10050
49分钟前
33
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部