必威国际有限公司
  • 提供什么? 必威国际有限公司詹金斯X Tekton 大三角帆
  • 博客
  • 用户指南 ——安装詹金斯必威国际有限公司 - 必威国际有限公司- - - - -詹金斯管道 ——管理詹金斯必威国际有限公司 ——确保詹金斯必威国际有限公司 - - -系统管理 -术语和定义 解决方案的页面 2018必威体育下载 ——导游 2018必威体育下载 58必威 贡献者指南
  • 插件
  • 概述 满足 2020刀塔必威赛事 问题跟踪器 路线图 特殊利益集团 -宣传和外展 ——中国本地化 ——原生云 ——文档 谷歌代码之夏 365必威 ——管道创作 ——平台 ——用户体验
  • 概述 常青树 谷歌詹金斯的代码之夏必威国际有限公司 基础设施 CI/CD和Jenk必威国际有限公司ins区域聚会 必威国际有限公司Jenkins配置代码 必威国际有限公司詹金斯运营商 必威国际有限公司詹金斯远程 记录下詹金斯和库伯必威国际有限公司内特的关系
  • 路线图 安全 新闻 奖 行为 艺术作品
  • 中中国文
  • 下载

推特

发布于2016-08-10r·泰勒突堤
  • 教程
  • 红宝石
  • 管道
  • rails
  • 司闸员
  • continuousdelivery

这是一个由r·泰勒突堤他是Jenkins的长期贡献者,也是Jenkins项目基础架构的主要联系必威国际有限公司人。他也是詹金斯布道家必威国际有限公司CloudBees公司。

当Ruby on Rails它在两个值得注意的方面改变了行业:它创造了一种自以为是的web应用框架的趋势(Django,玩,Grails)它也强烈鼓励成千上万的开发人员接受测试驱动开发以及许多其他现代最佳实践(源代码控制、依赖项管理等)。因为Ruby, Rails下面的语言,是解释的而不是编译的,所以它本身并不是一个“构建”,而是几十个,甚至上百个测试,检查和扫描,这些都是用来确保应用程序的质量的。随着Rails的流行,应用程序托管服务与易于使用的部署工具的流行,如Heroku或Engine Yard也会上升。

这种良好的组合测试覆盖率,很容易自动化部署使用Jenkins使Rails易于连续交付。在本文中,我们将介绍如何使用必威国际有限公司必威国际有限公司詹金斯管道而且,作为额外的奖励,我们将增加安全扫描通过司闸员和司闸员插件.

cfpapp舞台视图">
      </div>
     </div>
     <div class=

主题

  • 准备应用程序

  • 准备詹金斯必威国际有限公司

  • 编写管道

  • 安全扫描

  • 部署好东西

  • 总结

在这次演示中,我使用了Ruby中央的cfp-app:

一个Ruby on Rails应用程序,可以让你管理你的会议的提议(CFP),程序和时间表。它是由Ruby Central编写的,用于运行RailsConf和RubyConf的cfp。

我选择这个Rails应用程序,不仅因为它是一个庞大的应用程序,有很多测试,但它实际上是我们用来收集谈话的提议,为“社区追踪“在今年的必威国际有限公司詹金斯世界.在大多数情况下,cfp-app是一个标准的Rails应用程序。它使用PostgreSQL的数据库,RSpec用于测试Ruby 2.3.x作为其运行时。

如果您只想查看代码,可以直接跳到必威国际有限公司Jenkinsfile.

准备应用程序

为大多数Rails应用程序很少(如果有的话)需要更改来支持Jenkins的持续交付。必威国际有限公司在…的情况下cfp-app,我添加了两个宝石,以获得最佳的集成到Jenkins:必威国际有限公司

  1. ci_reporter,用于测试报告集成

  2. 司闸员,用于安全扫描。

添加这些很简单,我只需要更新Gemfile和Rakefile在存储库的根目录中包含:

Gemfile
# . .剪. .集团:测试做# RSpec等宝石'ci_reporter'宝石'ci_reporter_rspec'宝石"司闸员",:要求=>假结束
Rakefile
# . .剪. .需要'ci /记者/耙/ rspec'#确保在执行RSpec示例之前设置了ci_reporter任务:规范=>'置信区间:设置:rspec'

准备詹金斯必威国际有限公司

cfp-app项目设置好后,接下来要做的就是确保Jenkins本身已经准备好了。必威国际有限公司一般来说,我建议运行最新LTS詹金斯必威国际有限公司;在这个演示中,我使用了Jenkins 2.7.1和以下插件:必威国际有限公司

  • 管道插件

  • 司闸员插件

  • CloudBees Docker管道插件

我还使用了GitHub组织文件夹插件在Jenkins实例中自动创建管道项;必威国际有限公司这不是演示所必需的,但是使用必威国际有限公司Jenkinsfile会自动出现在Jenkins中,所以我推荐它!必威国际有限公司

除了插件上面列出的,我也需要至少一个必威国际有限公司詹金斯探员码头工人在其上安装并运行守护进程。我用“docker”标记这些代理,以便将来更容易地将基于docker的工作负载分配给它们。

任何安装了Docker的基于linux的机器都可以工作,在我的例子中,我使用Azure插件就像EC2插件,帮助我降低了测试成本。

如果您正在使用Amazon Web Services,您可能也会感兴趣这篇博客从今年早些时候开始EC2舰队插件与EC2现货船队合作。

编写管道

来理解各种各样的东西必威国际有限公司Jenkinsfile我发现简单地定义我的管道的阶段更容易开始。这有助于我从广义上考虑我的管道应该有什么样的操作顺序。例如:

/*将我们的工作分配给一个标记为'docker'的代理*/节点('码头工人'){阶段'准备容器'阶段'安装的宝石'阶段'准备数据库'阶段'调用耙'阶段'安全扫描'阶段'部署'}

正如前面提到的,这必威国际有限公司Jenkinsfile会严重依赖于CloudBees Docker管道插件.该插件提供了两个非常重要的特性:

  1. 执行步骤的能力内部正在运行的Docker容器

  2. 能够在“后台”运行容器。

与大多数Rails应用程序一样,可以使用两个命令有效地测试应用程序:包安装紧随其后的是包exec耙.我已经准备了一些Docker图像数位视讯并安装了Ruby 2.3.0,这确保了一个公共和一致的起点:

节点('码头工人'){/ / . .“舞台”步骤移除docker.image('rtyler /数位视讯tripwire').里面{(1)数位视讯'包安装'(2)数位视讯'包exec耙'}(3)}
1 运行命名容器。的内部方法可以接受可选的附加标志码头工人运行命令。
2 使用我们的tiny上海一步包装数位视讯.这确保了shell代码在正确的RVM环境中执行。
3. 当闭合完成时,容器将被销毁。

不幸的是,在这个应用程序中包exec耙如果进程启动时PostgreSQL不可用,命令将失败。这就是第二个CloudBees Docker Pipeline插件的重要特性开始生效:在“后台”运行容器的能力。

节点('码头工人'){/ / . .“舞台”步骤移除/*取出最新的' postgres '容器并在后台运行*/docker.image('postgres').> . withRun(1)回声"运行在容器中的PostgreSQL$ {container.id}"(2)}(3)}
1 有效地运行容器码头工人postgres运行
2 任意数量的步骤都可以进入闭包
3. 当闭合完成时,容器将被销毁。

运行测试

结合詹金斯管道的这两个片段,在我看来,是力量必威国际有限公司DSL亮点:

节点('码头工人') {docker.image ('postgres').withRun{容器-> docker.image('rtyler /数位视讯tripwire') .inside ("——链接=$ {container.id}: postgres"){(1)阶段'安装的宝石'数位视讯"包安装"阶段'调用耙'withEnv (['DATABASE_URL = postgres: / / postgres@postgres: 5432 /') {(2)数位视讯"包exec耙"} junit'规范/报告/ * . xml'(3)}}}
1 通过——链接参数,Docker守护进程将允许RVM容器以主机名'postgres'与PostgreSQL容器通信。
2 使用withEnv步骤为闭包中的所有内容设置环境变量。在这种情况下,cfp-app DB脚手架将查找DATABASE_URL变量来覆盖DB host/user/dbname的默认值。
3. 将生成的测试报告归档ci_reporter以便Jenkin必威国际有限公司s能够显示测试报告和趋势分析。
cfpapp测试">
        </div>
       </div>
       <div class=

完成这些之后,就具备了在每次管道执行时在新鲜Docker容器中一致运行cfp-app测试的基础。

安全扫描

使用司闸员, Ruby on Rails的安全扫描器,在Jenkins Pipeline中几乎非常简单,这要归功于必威国际有限公司司闸员插件这实现了publishBrakeman的一步。

基于以上示例,我们可以实现“安全扫描”阶段:

节点('码头工人'){/*——8<——8<——snipsnipip——8<——8<——*/阶段'安全扫描'数位视讯'司闸员- o brakeman-output。选项卡——没有任何进展——独立的模型'(1)publishBrakeman'brakeman-output.tabs'(2)/*——8<——8<——snipsnipip——8<——8<——*/}
1 运行司闸员用于Rails的安全扫描程序,并存储输出,以备将来使用brakeman-output.tabs
2 存档由Brakeman生成的报告,以便Jenkins可以显示带有趋势分析的详细报告。必威国际有限公司
cfpapp司闸员">
       </div>
      </div>
      <div class=

在撰写本文时,有一些工作正在进行(必威国际有限公司詹金斯- 31202)来在管道项目的主页上呈现类似于Brakeman的插件的趋势图。

部署好东西

一旦测试和安全扫描都正常工作,我们就可以开始设置部署阶段了。必威国际有限公司Jenkins Pipeline提供了这个变量currentBuild我们可以用它来确定我们的管道到目前为止是否成功。这允许我们添加逻辑,只在一切都经过时才部署,正如我们所期望的:

节点('码头工人'){/*——8<——8<——snipsnipip——8<——8<——*/阶段'部署'如果(currentBuild。结果= ='成功'){(1)上海'。/ deploy.sh'(2)}其他的{邮件主题:"有问题$ {env。JOB_NAME}$ {env。BUILD_ID}",来:'nobody@example.com',身体:'你应该把它修好'}/*——8<——8<——snipsnipip——8<——8<——*/}
1 currentBuild有结果也就是“成功”,“失败”,“不稳定”,“失败”
2 只有在currentBuild.result如果我们需要调用部署脚本(例如。Git push heroku master)

总结

我毫无理由地评论了全部内容必威国际有限公司Jenkinsfile我希望这是对上述工作的有益总结。在过去的Rails应用中,Docker和Jenkins Pipeline提供的一致性肯定会改善这些项目的交付时间。必威国际有限公司但仍有改进的空间,留给读者作为练习。例如:准备新的容器与所有的内置的依赖而不是在运行时安装它们。或利用平行步骤,用于同时跨多个Jenkins代理执行RSpec。必威国际有限公司

在代码中定义持续交付和持续安全的管道的美妙之处在于,您可以继续对其进行迭代!

cfpapp舞台视图"></a>
       </div>
      </div>
     </div>
     <b class=关于作者
r·泰勒突堤"class= r·泰勒突堤

r·泰勒·克罗伊(R. Tyler Croy)在过去七年一直是詹金斯项必威国际有限公司目的一部分。在避免贡献任何Java代码的同时,Tyler参与了项目保持运行的许多其他方面,比如这个网站、基础设施、治理等。

  • GitHub
  • 推特
  • 博客

betway必威足彩|

知识共享署名共享许可证"src=

驱动本网站的内容是在知识共享署名-共享相似4.0许可下许可的。

资源
  • 下载
  • 博客
  • 文档
  • 插件
  • 安全
  • 贡献
项目
  • 结构和治理
  • 问题跟踪器
  • 路线图
  • GitHub
  • 必威国际有限公司詹金斯在詹金斯
社区
  • 2020刀塔必威赛事
  • 邮件列表
  • 聊天
  • 特殊利益集团
  • 推特
  • Reddit
其他
  • 的行为准则
  • 新闻信息
  • 商品
  • 艺术作品
  • 奖