云服务器价格_云数据库_云主机【优惠】最新活动-搜集站云资讯

域名注册_个人企业邮箱怎么申请_稳定性好

小七 141 0

cdn加速_关于_云服务器的租用

编者按:这是一篇来自andrescidoncha的客座博客,DevOps工程师,System73。安德烈斯将于下周在里斯本DevOps World | Jenkins World里斯本举行一场会议,云服务器好还是,他的同事Airam Gonzalez也是System73的DevOps工程师。他们将在12月4日星期三下午4:15向詹金斯介绍我们的无服务器应用的DevOps周期。过来看!您必须从零开始管理不断增长的应用程序的部署,直到您拥有多个环境。你怎么能遵循接吻原则?我来举个小例子,物联网是什么意思,希望能对你有所帮助任务。你手头有一个新项目,现在是时候将第一个版本部署到Dev以测试组件集成。你的应用程序有两个主要组件:后端和前端-结束。每个人组件使用管道管理其依赖项和部署步骤,但您必须协调常规应用程序部署。考虑到这一点,大数据网,您的管道可能看起来像这个:管道{任何探员选项{禁用ConcurrentBuilds()时间戳()}阶段{stage('部署后端'){台阶{构建(job:'DeployBackend')}}阶段("部署FE"){台阶{生成(作业:'DeployFrontend')}}}岗位{成功{slackNotification('Deployed!!')//这个方法就是一个例子}失败{emailErrorNotification()//这个方法就是一个例子}清理{清洁()}}}您可以为每个组件调用部署管道(您可以从子流程需求中抽象此管道),因此常规管道非常简单。现在想象一下,你的应用程序在增长,数据库迁移进入游戏中……因为迁移可以与前端部署并行执行(两者都依赖于后端),这个过程可能看起来像这样这个:管道{任何探员选项{禁用ConcurrentBuilds()时间戳()}阶段{stage('部署后端'){台阶{构建(job:'DeployBackend')}}阶段('迁移和FE'){平行{阶段('运行DDBB迁移'){台阶{构建(job:'DBMigrations')}}阶段("部署FE"){台阶{生成(作业:'DeployFrontend')}}}}}岗位{成功{slackNotification('Deployed!!')//这个方法就是一个例子}失败{emailErrorNotification()//这个方法就是一个例子}清理{清洁()}}}酷!一切都在控制之中。现在你可以说你有你的应用程序部署管道!可以添加参数以选择展开环境。但是…少了点东西…测试!你只需点击一下就可以部署你的应用,但在告诉大家你的部署没问题之前,你应该先检查一下!假设您有一些应用程序测试,它们有自己的管道来管理依赖工具、步骤和其他东西。为了让QA团队满意,您应该将测试集成到工作流.pipeline{任何探员选项{禁用ConcurrentBuilds()时间戳()}参数{choice(name:'environment',选项:['develop','staging','production',description:'环境')}阶段{部署('后台'){台阶{生成(作业:'DeployBackend',参数:[string(名称:'environment',值:环境参数)])}}阶段('迁移和FE'){平行{阶段('运行DDBB迁移'){台阶{构建(作业:'DBMigrations',参数:[string(name:'environment',值:环境参数)])}}阶段("部署FE"){台阶{生成(作业:'DeployFrontend',参数:[string(名称:'environment',值:环境参数)])}}}}阶段("应用测试"){台阶{生成(作业:"ApplicationTests",参数:[string(名称:'environment',值:环境参数)])}}}岗位{成功{slackNotification("已部署${环境参数}!!") //这个方法就是一个例子}失败{emailErrorNotification()//这个方法就是一个例子}清理{清洁()}}}您已经部署了环境并验证了部署。但是将代码从Dev升级到STA(和生产)仍然需要手动执行。。。你不想那样。为什么?因为您已经完成了足够的测试来验证您的部署,而且您不怕将更改转移到生产环境中!那么,你得在这两种选择中做出选择选项:创建每个部署作业的Jenkins文件。这是没有意义的,因为管道代码在99%中是相同的。对所有部署作业使用相同的Jenkins文件,管理下一个要调用密码。你应该选择选项2(重复代码永远不是好朋友)。但是等等,还有更多的选择!对每个部署作业使用相同的作业。根据您的"disableConcurrentBuilds"conf,这有两个问题配置:并发生成:允许管道无限制地并行运行。这意味着您可以在同一环境中部署两个版本!没有并发构建:每个构建都必须等到上一个构建结束。这意味着当另一个构建正在部署开发时,您不能将修补程序部署到生产环境中!对每个部署作业使用独立作业,禁用并发作业建造。你再次选择选项2。但是,人工智能是,如果对每个作业使用相同的Jenkins文件,如何管理每个作业的某些特定于环境的选项(例如,要在应用程序测试中运行的测试套件)?使用作业基名称!别担心,我给你看例子:明白了? 如果答案是"否",让我解释一下:您将每个作业称为。这样,只需创建一个变量awsEnvironment=JOB\BASE,就可以轻松地了解有关您正在部署什么环境的信息_名称.拆分(''')[1]!部署作业名称=环境作业基名称.拆分(''''[0]awsEnvironment=环境作业基名称.split(''')[1]nextEnvironment=['develop':'staging','staging':'production','production':null]管道{任何探员选项{禁用ConcurrentBuilds()时间戳()}阶段{部署('后台'){台阶{build(value:'deploy awname',environment:'environment')}}阶段('迁移和FE'){平行{阶段('运行DDBB迁移'){台阶{构建(作业:'DBMigrations',参数:[string(name:'environment',值:awsEnvironment)])}}阶段("部署FE"){台阶{构建(作业:'DeployFrontend',参数:[string(name:'environment',值:awsEnvironment)])}}}}阶段("应用测试"){台阶{构建(作业:'ApplicationTests',参数:[string(name:'environment',值:awsEnvironment)])}}阶段("提升到下一个环境"){什么时候{表达式{nextEnvironment[awsEnvironment]}}台阶{构建(作业:"${deployJobName}}${nextEnvironment[awsEnvironment]}",传播:false,怎么成为淘客,等待:false)}}}岗位{成功{slackNotification("Deployed${awsEnvironment}!!")//这个方法就是一个例子}失败{emailErrorNotification()//这个方法就是一个例子}清理{清洁()}}}这样,您就可以在另一个构建在dev中更新时部署到生产环境中……甚至与代码升级到STA并行!你可以用同一个Jenkins文件完成所有这些,这真的很简单(KISS!)。这个管道可以很容易地扩展到添加自定义环境支持、通用应用程序版本控制、依赖关系检查、自动生成变更日志…等等!2019年12月4日,Airam Gonzalez和我将在DevOps World | Jenkins World Lisbon就这一主题发表更多演讲。如果你想听更多的话,加入我们吧!使用JWFOSS可享受30%的注册折扣。