使用Jenkins,GitHub和Docker的最先进的持续集成和部署管道

搭建舞台

在过去的两年中,我一直在从事Node.js项目。 我们使用GitHub进行源管理,使用Jenkins进行持续集成。 我们还有一个基于Docker和Terraform的部署工具 。

在此期间,我们对配置进行了一些改进。 产生积极影响的更改之一是在分支上运行CI管道,并在GitHub上查看反馈。

在合并PR之前检查构建的结果可以防止由于微小错误而造成的大量损坏。 就像忘记运行lint或添加新文件一样。 一旦我们决定自动执行依赖关系的更新,反馈将使其变得快速,安全。

在这篇文章中,我将解释如何使用以下方法配置Continuos集成和部署管道:

  • Jenkins用于构建配置。 用于创建构建的多分支管道。 Jenkinsfile,用于决定在每个构建中执行什么
  • GitHub用于存储源代码,检查构建输出以及将分支合并到master
  • Docker将构建与执行环境隔离。 无论是开发人员机器还是Jenkins节点

特征

构建管道的配置与源代码一起进行版本控制。 这给您:

  • 旧配置的历史和回滚功能
  • 配置和源的原子更改
  • 使用分支来尝试配置本身

分支机构的建立和反馈意味着您可以:

  • 在代码审查期间查看构建结果
  • 如果分支破坏了构建,则防止分支合并
  • 自动合并不间断的更改

其他小事:

  • 该构建被定义为一系列步骤而不是作业,因此一旦开始就不会重新进入队列
  • 您可以通过编辑文件而不是使用Jenkins Web UI来执行大多数构建配置

缺点

  • 您需要学习Jenkinsfile的语法
  • 您需要注意两种不同的语法选项(脚本式和声明式)
  • 有关如何使用插件的文档并不总是很清楚,并且通常没有任何示例

该应用程序

我创建了一个Node.js Web应用程序作为示例。 为了简化构建,该应用程序没有外部运行时依赖项,例如数据库或服务。 可以扩展此配置以应对外部依赖性,而不会影响隔离性。 例如通过使用Docker Compose设置依赖关系。

Dockerfile

 FROM node:lts-slim  WORKDIR /opt/app  COPY package .json yarn.lock ./  RUN yarn  COPY . .  EXPOSE 8080  CMD yarn start 

Docker是最流行的应用程序容器化解决方案。 有关Docker的完整介绍,我推荐Andre Torres的Docker容器 。

在此CI管道中,Docker将应用程序代码与Jenkins节点隔离。

隔离启用复制。 如果在Jenkins中构建失败,并且我们需要调查失败,则可以在开发人员机器上将其复制,因为Jenkins节点及其软件的状态在容器内不起作用。

隔离还解决了具有不同运行时环境的问题。 每个应用程序可以在Dockerfile中指定不同版本的Node.js,以用于测试和部署。

詹金斯档案

 pipeline { agent any stages { stage( 'Build' ) { steps { sh 'docker build -t codurance/jenkins-pipeline-blog:latest .' } } stage( 'Test' ) { steps { sh 'docker run codurance/jenkins-pipeline-blog:latest yarn test' } } stage( 'Deploy' ) { when { branch 'master' } steps { sh 'docker push codurance/jenkins-pipeline-blog:latest' } } } post { failure { echo 'build is broken. notify team!' 'build is broken. notify team!' } }  } 

该常规文件替换了通常用于在Jenkins中配置作业的长Web表单。 此示例中的管道具有三个阶段(构建,测试,部署),每个阶段均由步骤实现。

部署阶段仅在主分支或中继分支受到影响时运行。 在此示例中,它将映像发布到hub.docker.com,但您可能会将其替换为用于部署应用程序的基础结构命令。

管道还具有一个称为post的部分,其中包含在构建完成后触发的诸如alwaysfailure步骤。 这些扩展点可以在您的工作流中集成消息传递系统,例如Slack。

Jenkins设置

Jenkins需要访问GitHub。 在我的情况下,有效的方法是使用新的GitHub个人令牌作为密码,在Jenkins中创建用户名和密码凭据。 这取决于在GitHub中设置用户的方式,因此它可能不适用于您的帐户。 我在CloudBees知识库中找到了详细的解释

配置完凭据后,就可以在Jenkins中创建新作业了。 当询问类型时,选择“多分支管道”

部署管道

Jenkins提供的默认设置对我的工作流程很明智,因此我对其进行了很少的修改。 如果您习惯了Jenkins的自由职业,您可能会对少量可用选项感到惊讶。 那是因为我们已经在Jenkinsfile中定义了整个构建管道。

部署管道

您可以配置哪些提交,分支或PR触发管道。 使用上面显示的设置,在推送到主节点,推送到分支以及创建PR时将触发管道。

保存配置后,最好在GitHub中检查webhook。 Jenkins将在存储库中配置一个Webhook,以在推送提交或创建PR后立即触发管道。 它要求Jenkins可以从Internet进行访问,最好使用有效的SSL证书。

部署管道

单击自由样式的Jenkins作业时,熟悉的景象就是减少内部版本号的列表。 现在,只需单击一下即可,因为每个分支和PR都有自己的内部编号序列。

GitHub中分支的构建状态通过链接到Jenkins的叉和刻度线报告。

部署管道

对于PR,管道是在与master合并之后运行的,并且与PR对话一起可见。

部署管道

也可以将GitHub配置为网守,以便无法合并测试失败的PR。 此功能称为受保护分支 。

部署管道

根据您的工作流程配置管道之后,您就可以开始开发应用程序了。

然后去哪儿?

最先进的技术并不意味着完美。 这是我目前所知道的最好的事情,我想学习更多,并回顾这是迈向更好的一步。

Jenkins是我在该领域使用最多的工具。 使用不同的工具很有可能会获得更好的结果。 我狭窄的经验是限制因素。

这篇文章中未涉及的领域是如何使用具有外部依赖项的应用程序。 我将在以后的文章中介绍。

在@jaramir或@codurance上发推文,让我知道您的想法。

快乐黑客!

资源资源

  • 示例Node.js项目https://github.com/codurance/jenkins-pipeline-blog
  • Jenkinsfile语法https://jenkins.io/doc/book/pipeline/syntax/
  • Jenkinsfile步骤参考https://jenkins.io/doc/pipeline/steps/
  • 多分支管道https://jenkins.io/doc/book/pipeline/multibranch/

翻译自: https://www.javacodegeeks.com/2019/05/continuous-integration-deployment-pipeline-jenkins-github-docker.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/342555.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

zigbee与WiFi模块和蓝牙模块的区别是什么?

先说无线吧。市面主流三大协议Wifi,Zigbee,蓝牙。(协议可以理解为控制通信方式)如果使用Wifi协议接入,那如果家里网断了怎么办?显而易见,语音控制远程控制全部瘫痪。所以不管有线还是无线的设备…

[渝粤教育] 上海立信会计金融学院 公司战略与风险管理案例 参考 资料

教育 -公司战略与风险管理案例-章节资料考试资料-上海立信会计金融学院【】 随堂测试 1、【填空题】公司战略的现代概念更强调战略的 、 和 。 A、 参考资料【 】 战略与战略管理单元作业 战略与战略管理单元测验 1、【单选题】公司战略的现代概念不包括( &#xff…

工业级交换机的5个常见的优点解析

随着科技的不断发展,越来越多的工业级交换机逐渐取代了普通交换机。是因为工业级交换机有着普通交换机没有的优势。下面飞畅科技就来为大家详细说说工业级交换机最常见的5个优点,一起来看看吧! 一、超强抗干扰性 工业级交换机具有很强的抗干…

[渝粤教育] 东北大学 大学生心理健康漫谈 参考 资料

教育 -大学生心理健康漫谈-章节资料考试资料-东北大学【】 第一周:第一讲 认识心理健康(上) 1、【单选题】人有计划有目的地用感官来考察事物或现象的能力叫做( )。 A、观察力 B、记忆力 C、认识力 D、感知力 参考资料…

zigbee物联网模块标准:LTE标准Cat.1和nbiot无线通信模块差异

2021年LTE Cat.1出货量同比增长3倍以上,超过NB-IoT出货量成为最大标准。LTE Cat.1 从 2020 年到 2021 年在中国市场飞速发展,取代 2G 和部分 LTE Cat.4。 最初,据说 NB-IoT 可以解决广泛的用例。然而,它的主要应用保持不变&#…

[渝粤教育] 东北大学 现代科学运算—MATLAB语言与应用 参考 资料

教育 -现代科学运算—MATLAB语言与应用-章节资料考试资料-东北大学【】 01-01 本课程的主要内容 1、【判断题】 A、正确 B、错误 参考资料【 】 2、【判断题】 A、正确 B、错误 参考资料【 】 01-02 为什么学习计算机数学语言 1、【判断题】 A、正确 B、错误 参考资料【 】 2、…

zigbee物联网模块市场:LTE标准Cat.1和nbiot无线通信模块差异

2021 年对于zigbee物联网模块行业来说是忙碌的一年。zigbee模块需求快速增长,但半导体供应短缺导致模块供应紧张。zigbee物联网模组市场将在2021年实现显着的量增长。基于目前的供应情况,2022年将继续强劲的市场增长。但是,供过于求的担忧出现…

springmvc jpa_使用JavaConfig的SpringMVC4 + Spring Data JPA + SpringSecurity配置

springmvc jpa在本文中&#xff0c;我们将看到如何使用JavaConfig配置和集成SpringMVC4&#xff0c;带有Hibernate的Spring Data JPA和SpringSecurity。 1.首先让我们在pom.xml中配置所有必需的依赖项 <project xmlns"http://maven.apache.org/POM/4.0.0" xmlns…

工业交换机常见问题汇总!

我们在使用工业交换机的时候&#xff0c;有时候会碰到自己不理解的问题&#xff0c;一般我们是通过网上搜索或者直接找技术客服人员来解决的。今天飞畅科技的小编给大家整理了一些工业交换机的常见的问题&#xff0c;希望能帮助到大家&#xff01; 1、什么是数据交换&#xff…

lora无线模块基于LoRaWAN网关技术在国家物联网应用

该网路将由Lorawan无线网关模块运营&#xff0c;并将逐步部署在全国各地的Cellnex网络上。 物联网应用网路为提升居民生活水平质量和多产业链产业互联网提拱更有效的改进方案和服务质量是重中之重。 例如&#xff0c;物联网应用服务质量允许开发国家改进方案来监控物体的位置…

[渝粤教育] 东北财经大学 财务管理 参考 资料

教育 -财务管理-章节资料考试资料-东北财经大学【】 1.1.1资产负债表式的财务管理内容框架 1、【单选题】根据资产负债表模式&#xff0c;可将公司财务管理分为长期投资管理、长期融资管理和营运资本管理三部分&#xff0c;股利政策应属于( )。 A、营运资本管理 B、长期投资管理…

全球最大的LoRaWAN智能路灯项目刚刚启动

NNNCo 与技术提供商 Wellness TechGroup 合作推出 LoRaWAN无线网关模块在世界上最大的物联网应用智能街道照明项目之一。 该项目将覆盖200平方公里&#xff0c;为超过130万人提供物联网智能应用智能路灯&#xff0c;改善社区和道路安全&#xff0c;减少高达80%的碳排放。该计划…

LoRaWAN 巩固了其作为低功耗广域网主导技术的地位

LoRa大联盟是支持物联网应用(IoT)低功耗广域网(LPWAN)对外开放LoRaWAN标准规范的全世界机构行业协会&#xff0c;已发布了其2021年年度总结报告&#xff0c;全方位深入分析其活动内容和造就2021年。该报告书特别强调了该大联盟在过去的1年中推进规模性扩展的造就。 LoRa大联盟…

[渝粤教育] 东南大学 工程热力学 参考 资料

教育 -工程热力学-章节资料考试资料-东南大学【】 测试 01-01 热力系的概念 1、【单选题】以下说法正确的是&#xff1a; A、可以选择太阳系作为热力系 B、可以选择一个原子作为热力系 C、可以选择一个教室或教室内的一个学生作为热力系 D、以上都不对 参考资料【 】 测验 01-0…

工业交换机的日常维护保养该怎么做?

如今工业交换机的使用越来越广泛了&#xff0c;作为数据通信传输设备&#xff0c;工业交换机在日常的维护保养上该怎么做呢&#xff1f;接下来飞畅科技就给大家详细介绍一下工业交换机的日常维护保养&#xff0c;一起来看看吧&#xff01; 一、日常环境维护 工业交换机对于机房…

物联网蓝牙模WiFi无线模块技术和ZigBee技术再智能家具领域发展对比?

从物联网无线通信模块长远来看&#xff0c;很难说蓝牙模块、WiFi模块和zigbee模块三中通信协议哪种好&#xff0c;但目前这三种通信协议的适用相对明确&#xff0c;选择相对容易。 如果你想要一个中高端的无线智能家居系统&#xff0c;骨干仍然不能考虑Blemesh&#xff0c;主要…

zigbee协议技术无线模块对智能家居市场前景分析

Zigbee无线传输技术Zigbee被众多企业选择智能家居营销手段&#xff0c;无论是海尔、ZTE等传统大企业&#xff0c;还是未知的小公司&#xff0c;Zigbee技术也被认为是最有可能改变我们当前生活的通信技术之一&#xff0c;如WiFi无线模块技术和蓝牙无线模块技术&#xff0c;但现在…

[渝粤教育] 东南大学成贤学院 电工电子实践初步 参考 资料

教育 -电工电子实践初步-章节资料考试资料-东南大学成贤学院【】 第一章测试 1、【单选题】交流毫伏表直接读数为&#xff08; &#xff09; A、正弦交流电压的有效值 B、正弦交流电压的平均值 C、正弦波、方波、三角波的有效值 D、三角波的有效值 参考资料【 】 2、【单选题】…

如何在同一台计算机上安装多个Java版本

一段时间以前&#xff0c;我写了一篇文章《 用示例解释Java Lambda表达式》&#xff0c;但是我很容易浏览Java 8&#xff0c;因为我在项目中使用了Java 8&#xff0c;并且允许我安装和使用它。 但是在我当前的项目中&#xff0c;我们仍在使用Java 8&#xff0c;现在我想升级自己…

物联网ZigBee3.0协议E18-2G4U04B模块无线数据抓包调试的方法

ZigBee3.0无线抓包简介 ZigBee3.0是ZigBee联盟推出的可以互联互通的标准协议&#xff0c;用之前的Packet Sniffer抓包工具是无法解析ZigBee3.0的数据包&#xff0c;因ZigBee3.0的安全机制所有的数据包都是加密的&#xff0c;无法解析每个数据包含义&#xff0c;所以此抓包方法在…