\

看新闻很累?看技术新闻更累?试试下载InfoQ手机客户端,每天上下班路上听新闻,有趣还有料!

\

\\

James Strachan和CloudBees团队发布了开源的“Jenkins X”平台,它是针对部署到Kubernetes上的现代云应用所提供的持续集成和持续交付(CI/CD)解决方案。Strachan正在赞助JEP 400,它是一个正式的提议,用作“占位(stake on the ground)”。该提议申请Jenkins X成为Jenkins基金会的子项目。

\\

Jenkins X使用分发版本的Jenkins作为核心的CI/CD引擎,并倡导一个特殊的Git分支和存储库模型。在分发版本中,还构建了一些额外的工具和服务用来适应该模型。在Jenkins最近的一篇博客文章中,CloudBees的高级架构师Strachan认为Jenkins X开发模型代表了“开发Kubernetes应用的最佳实践”。这是基于他和他的团队开发Fabric8的经验得出的结论,Fabric8项目是具有类似使命的项目,它试图根据DevOps报告的现状提供工具和支撑进程的具体实现。

\\

如果开发人员遵循建议的最佳实践,那么Jenkins X会组合所需的各个组成部分,比如Jenkins、Kubernetes、Git、CI/CD等,这样的话,它们就能“马上具备生产能力”。Strachan认为这类似于Maven所带来的优于Ant构建工具的特性,Maven鼓励开发人员使用标准的生命周期模型(DRY),以便于实现更高的生产效率。

\\

与之相关联的Jenkins增强提议(Jenkins Enhancement Proposal,JEP)为JEP 400,它提供了一些推荐最佳实践的样例,这些样例都是通过CI/CD将云原生应用部署到Kubernetes中:

\\

  • 主分支应该始终是整洁的并且可以随时发布。不允许使用长时间的特性分支,以便于“保持精简”; \\
  • Pull request(PR)用于处理新的变更,然后它会提交到主分支上。当PR变更的时候,会触发CI测试。只有当所有的CI检查都通过并且所需的代码审查都满足的时候,PR才能合并到主分支上。 \\
  • 释放版本是基于主分支生成的,它会生成不可变的制件(JAR、二进制、Docker镜像、Helm charts等)。释放版本的生成可以是手动触发的,也可以是新PR合并后自动生成的,甚至还可以基于一定的间隔频率生成。 \\
  • 哪个版本的服务运行在哪个环境之中是在一个单独的环境Git存储库中以声明式的方式进行管理的。将变更push到环境Git存储库中就会引发部署,该存储库会进而触发环境管道。这种方式通常又被称为“GitOps”(其灵感来源于Weaveworks的Alexis Richardson),它类似于人们利用Git开发Chef recipes和Ansible playbooks的方式。\

Web应用开发人员在实践CD的过程中,所带来的“环境”的概念是一个非常棒的实践,例如,“dev”、“staging”和“production-1”。Strachan指出,这种方式允许“开发人员的变更能够通过测试和staging以有序的工作流程进入到生产环境中”,但是他认为传统的Jenkins模型并没有将环境的概念作为第一等的公民。Jenkins X通过引入“环境(environment)”的理念弥补了这一空白,环境是构建在更通用的Kubernetes概念之上的,这些通用的概念包括命名空间(namespace)和标签(label)。然后,开发实践可以建模为按照级联的方式从一个环境提升到另一个环境。

\\

为了让通用的任务更加容易,Jenkins X定义了一个命令行工具jx,它封装了一些高层级的操作。Jenkins X CLI不仅能够允许开发人员在本地开发机器上使用,还能在Jenkins管道的执行中使用,这是一种声明式指定和实现CI/CD构建管道的机制。

\\

Jenkins X CLI是Jenkins X的主控制工具,它能够实现如下的功能:

\\

  • 在任意Kubernetes集群中安装Jenkins X; \\
  • 在公有云上从头开始创建新的Kubernetes集群; \\
  • 为每个团队创建环境; \\
  • 导入已有的项目,或创建新的Spring Boot应用。除此之外,该工具还能:\\
    • 自动创建CI / CD管道和webhooks; \\
    • 当一个分支合并到主分支时,创建新的发布版本并将其提升到各个环境中; \\
    • 当出现PR时,支持基于此构建“预览环境(preview environment)”。\

    \

Jenkins博客建议“Helm charts是在Kubernetes上安装和更新应用的标准打包机制”(但是,值得一提的是最近发布的Google Kubernetes开发工具“Skaffold”并没有基于Helm进行构建)。与之对应的是,Jenkins X提供了一个Helm chart,它允许在任何Kubernetes集群上安装Jenkins X。在项目的构建和部署过程中,Jenkins X重用了来自Azure的Draft。这允许语言和框架特定的“构建包(build packs)”能够很好地得以维护,在构建包中会包含构建、测试、发布和部署不同类型的应用所需的默认Dockerfile、Jenkinsfile和Helm Chart文件。

\\

\

开发人员和团队不需要花精力研究如何将软件打包为docker镜像、为了在kubernetes上运行应用而创建Kubernetes YAML文件、创建预览环境,甚至不需要学习如何使用声明式的pipeline-as-code Jenkinsfiles文件实现CI/CD管道。它全是开箱即用的自动化过程!所以,你只需要专注于如何交付应用本身的价值就可以了!

\

\\

Jenkins X并不是通用的Jenkins,无法对它进行修改做任何想做的事情。它是专门针对Kubernetes和云原生使用场景的,因此在JEP 400提案中,Jenkins X定义为“Kubernetes的原生Jenkins”。

\\

\

随着时间的推移,我们看到能够基于在Jenkins X上学到的知识,改善Jenkins的核心,所以Jenkins本身可以用到更多的云原生配置中。这不仅有利于Jenkins X,还有利于Jenkins的其他使用场景。这些变更将会形成单独的JEP提案。

\

\\

关于Jenkins X的其他信息可以在项目的站点上获取,“Getting Started”指南提供了安装平台的详细信息,其中既包括本地安装也包括在已有的Kubernetes集群中安装。

\\

查看英文原文:CloudBees Release \"Jenkins X\

CloudBees发布“Jenkins X”:面向部署到Kubernetes中的现代云应用的CI/CD解决方案相关推荐

  1. k8s与CICD--将drone部署到kubernetes中,实现agent动态收缩

    前言 本文主要讲如何把drone部署到k8s集群当中,本身drone这种基于容 器的pipeline方式,和k8s是相当契合的.这样的好处有: k8s集群守护drone-server 和drone-a ...

  2. ci/cd heroku_在Heroku上部署Dash或Flask Web应用程序。 简易CI / CD。

    ci/cd heroku First, we'll transform the animated scatter map built in my previous article into a bas ...

  3. 使用 Kubernetes 和滴滴云 Docker 仓库构建 CI/CD 流水线

    写在前面:<Kubernetes Tutorials> 系列文章旨在帮助您从入门到高阶逐步了解并掌握kubernetes技术栈的实操.理论和最佳实践.主题将包括 Docker 基础与实操. ...

  4. 万字长文带你全面认识 Kubernetes 中如何实现蓝绿部署、金丝雀发布和滚动更新...

    Kubernetes 中的部署策略 在本文中,我们将学习使用 Kubernetes 容器编排系统部署容器时的部署策略.在本文的最后,我们将学习如何在 Kubernetes 集群中使用不同的方式进行部署 ...

  5. (五)自动化MLOps部署到Kubernetes

    目录 开发Python脚本 运行脚本 结论 在这里,我们为我们的CI/CD MLOps管道开发了一个半自动化的生产部署. 在之前的系列文章中,我们解释了如何编写要在我们的Docker容器组中执行的脚本 ...

  6. 为 Kubernetes 提供 CI/CD 服务 Jenkins X

    Jenkins X 是一个高度集成化的 CI/CD 平台,基于 Jenkins 和 Kubernetes 实现,旨在解决微服务体系架构下的云原生应用的持续交付的问题,简化整个云原生应用的开发.运行和部 ...

  7. Kubernetes 的 CI/CD 管道概述

    An Overview of CI/CD Pipelines With Kubernetes Take a look at CI/CD approaches in a Kubernetes ecosy ...

  8. 一文搞懂 Kubernetes 中数据包的生命周期

    公众号关注 「奇妙的 Linux 世界」 设为「星标」,每天带你玩转 Linux ! 即使是对于具备一定虚拟网络和路由知识的人来说,Kubernetes 集群的网络也是个颇为麻烦的事情.本文尝试帮助读 ...

  9. Jenkins和GitLab CI/CD:CI/CD工具之战

    持续集成(CI)和持续交付(CD)在过去十年左右时间里取得了长足的进步.DevOps测试的兴起引发了针对CI/CD工具的强烈需求.现有的解决方案一直在与时俱进,无数的新产品或新版本正在进入质量检查领域 ...

最新文章

  1. AMD and CMD are dead之js模块化黑魔法
  2. [python skill]利用python计算T分布下的置信区间
  3. 中控指纹采集器开发指纹识别项目(说明)
  4. 卡尔曼滤波实例之系统逆辨识
  5. 如何使用Android Studio把自己的Android library分享到jCenter和Maven Central
  6. mongodb和SQL语句对应查找表
  7. 读书笔记_中国期货市场量化交易(李尉)01
  8. 这个机器人不学数据集,“纯玩”get各类家务技能,LeCun觉得很赞
  9. java properties null_正确使用Java Properties - Java综合 - Java - JavaEye...
  10. 计算机技术运用家具,计算机技术在家具企业中的应用与控制管理
  11. .net导出Excel设置颜色font.ColorIndex 各颜色编号
  12. 如何把几张图片合成一个pdf?
  13. 3Ds MAX 百度网盘免费下载
  14. python 画图十大工具_Python画图工具matplotlib的使用(图形并茂)
  15. 论文阅读——Don‘t Stop Pretraining: Adapt Language Models to Domains and Tasks
  16. NYOJ-108-士兵杀敌(一)
  17. heka 配置 一个go语言实现轻量级logstash 干掉ELK
  18. win10 1050Ti 笔记本配置 TensorFlow-gpu 过程(多图超详细)
  19. eclipse项目修改后浏览器不更新
  20. 微信小程序----第二天(小程序 - 模板与配置)

热门文章

  1. 谷歌时间晶体登上Nature,诺奖得主重大猜想成为现实
  2. 6小时完成,Jeff Dean领衔AI设计芯片方案登Nature,谷歌第四代TPU已用 芯快递 今天...
  3. 人工智能的现状与未来
  4. Intel和IBM押重注的神经模态计算,会给行业带来什么样的变化
  5. 中美5G竞争的未来路线图
  6. 报告解读 | 实现智能制造的五大关键环节和四大赋能路径
  7. 空间简史-人类认识空间的旅程与其对强化学习的启示
  8. 刚刚、Gartner发布物联网技术十大战略和趋势
  9. 该如何对「半监督学习算法」实际性应用进行评估?Google给出了新答案
  10. 预测性智能的力量:AI 和机器学习将如何改变美国政府决策?