CICD中的Jenkins和Ansible解决方案

这篇具有很好参考价值的文章主要介绍了CICD中的Jenkins和Ansible解决方案。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

每一次重装系统或者是需要在服务器上正确运行软件,我们都需要重新安装所有的package、dependency并进行相应配置的微调。而这一过程可能就会因为疏忽导致错误,因此需要自动化部署

持续整合,持续交付(CI/CD)的实践,我们能够周期性的对产品进行各种专业测试,如果出现问题我们也能快速找到发生问题的最近位置。同时我们还能进行报表分析和自动通知等其他操作

Ansible

ansible就是这样一款主流的自动化部署工具,要通过ansible在被控节点(managed node)上配置环境,我们需要安装Pyhton然后通过SSH连线。

安装过程

Ansible当中,所有机器分为以下两类:

  • 控制主机(Control Machine): 这类主机能通过Ansible的playbook(剧本)对被控节点进行部署
  • 被控节点(Managed Machine):又称Remote Node,这类节点就是我们通过Ansible进行部署的对象

值得注意的是,Ansible并不用安装在被控主机上,只需要保证能通过SSH与Control Machine沟通就可以了

playbook

我们使用playbook,这一由YAML编写的程序,来告诉Ansible需要做什么。

---
- hosts: server
  tasks:
    # task 1
    - name: test connection
      ping:
      register: message

    # task 2
    - name: print debug message
      debug:
        msg: "{{ message }}"

task1中,调用了ansible内置模块-ping,用于测试控制主机能否与被控节点连线。如果正常,会回传“pong”信息,然后我们能通过register将被控主机回传的消息存贮在message变量中

task2中,利用debug方法将message输出到终端上

如何运行playbook

ansible-playbook playbook.yml

但是这样ansible并不会做任何task,因为ansible应该对hosts指定的server来执行task。但是我们并没有告诉ansible哪一台是server,因此需要一个inventory来让ansible参考,具体编写需要先在ansible的config中指定inventory路径。

但是呢,不同的部署环境(比如test、development、producting)需要不同的配置细节,因此我们就可以定义多个inventory file,然后通过以下指令来实现部署

$ ansible-playbook -i devl-inventory devl-playbook.yml
$ ansible-playbook -i prod-inventory prod-playbook.yml

当然也可以写在同一文件中使用[]标识

[test]
127.0.0.1 ansible_port=2222 ansible_user=test_user

[test:vars]
email_receivers=test@gmail.com

[devl]
127.0.0.1 ansible_port=2222 ansible_user=devl_user

[devl:vars]
email_receivers=devl@gmail.com

Ansible Role

我们可以通过自定义的role来使playbook重复使用,以此来是一部分部署资源能被重复使用

Ansible会在下列路径寻找可执行roles:

  1. 与playbook同一层额roles文件夹
  2. /etc/ansible/roles

例如

workspace
├── inventory
├── playbook.yml
└── roles
    └── pip
        └── tasks
            └── main.yml

表示pip是第一个role的名称,然后工作流程定义在tasks/main.yml中

playbook中改为以下内容

---
  - hosts: server
    roles:
      - { role: pip, become: yes }

Jenkins

当前安装Jenkins的方法有许多,其中一种比较好的是利用docker来进行。因为容器本身比较轻量,资源远少于启动虚拟机;而且容器之间资源相互隔离,不存在相互污染。

Jenkins Job

Job(任务)是构建持续集成流程的基本单元,Job 可以包括多个构建步骤,例如源码管理、构建、测试和发布等。

Job 的用途主要包括以下几个方面:文章来源地址https://www.toymoban.com/news/detail-430019.html

  1. 构建持续集成流程:通过 Job,可以将代码拉取、构建、测试和部署等步骤串联起来,从而构建出一个完整的持续集成流程。这样可以实现快速、自动化的构建和部署,提高软件开发的效率和质量。
  2. 自动化测试:Job 中可以包含自动化测试步骤,例如单元测试、集成测试和端到端测试等。自动化测试可以在构建过程中自动运行,从而及早发现代码错误,减少测试成本和时间。
  3. 构建报告和通知:Job 运行后,可以生成各种构建报告,例如测试报告、代码覆盖率报告和构建日志等。同时,Jenkins 还支持各种通知方式在构建失败或成功后通知相关人员。
  4. 构建流水线:多个 Job 可以通过 Jenkins 提供的 Pipeline 功能串联起来,形成一个完整的构建流水线,实现多个 Job 的协同工作

到了这里,关于CICD中的Jenkins和Ansible解决方案的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 记一次前端Vue项目国际化解决方案

    有一个vue项目,要实现国际化功能,能够切换中英文显示,因为该项目系统的用户包括了国内和国外用户。 1、页面表单上的所有中文标签要国际化,包括表单属性标签、表格列头标签等, title=“数量”; 2、输入框的提示内容需要国际化,如 placeholder=“选择日期” 3、js代码

    2024年02月20日
    浏览(50)
  • 【Jenkins】使用java -jar jenkins.war --httpPort=XXXX启动Jenkins报错【解决方案】

    👉欢迎关注博主【米码收割机】 👉一起学习C++、Python主流编程语言。 👉机器人、人工智能等相关领域开发技术。 👉主流开发、测试技能。 在cmd中,执行启动命令行: 报错信息如下: 5月 06, 2023 4:55:49 下午 Main verifyJavaVersion 严重: Running with Java class version 63 which is not in th

    2024年02月07日
    浏览(47)
  • SkyEye与Jenkins的DevOps持续集成解决方案

    在技术飞速发展的当下,随着各行各业的软件逻辑复杂程度提升带来的需求变更,传统测试已无法满足与之相对应的一系列测试任务,有必要引入一个自动化、可持续集成构建的DevOps平台来解决此类问题。本文将主要介绍SkyEye与Jenkins的持续集成解决方案。 何谓DevOps?DevOps是

    2024年02月15日
    浏览(46)
  • 记一次阿里云被入侵的解决方案(小白攻略欢迎大佬指点)

    目录 前言: 寻找挖矿进程之旅: 我的处理思路: 故事就发生在2022年11月23日,一个舒适的下午。我不知怎的突然想在企业网络环境下通过我的Xshell7 连接我的阿里云ESC服务器。顺便检查一下我1年前自己搭的小破站是否还健在(域名备案失效了,我本想去检查一下服务在不在

    2024年01月18日
    浏览(42)
  • 记一次由于操作失误致使数据库瘫痪的故障分析与解决方案

    2023年8月27日,随着新业务的接入,我们开始进行项目的灰度发布。然而,直到2023年8月31日下午,我们才发现一个新字段并没有进行字段刷新,导致所有数据都是默认值,从而无法继续进行灰度测试。在业务方的要求下,我们需要进行批量更新字段。鉴于我们已经知道了时间

    2024年02月09日
    浏览(47)
  • jenkins构建UNSTABLE原因及解决方案一二三四五(不断更新中。。。)

    最近,项目构建老是出现:jenkins构建UNSTABLE问题(一般构建按钮为黄色)。 构建不稳定的情况有好多种,总结几个小编遇到过并已成功解决的方案: 情况一: 问题截图: 问题详情: 分析原因: 这句话的意思是:构建步骤“通过SSH发送文件或执行命令”将生成结果更改为不

    2023年04月08日
    浏览(53)
  • 『DevOps最佳实践』使用Jenkins和Harbor进行持续集成和交付的解决方案

    📣读完这篇文章里你能收获到 全文采用图文形式讲解 学会使用Harbor配置项目 学会在Jenkins中配置Harbor推送权限 使用Jenkins和Harbor进行持续集成的实践 感谢点赞+收藏,避免下次找不到~ 在现代软件开发中,自动化部署是提高效率和可靠性的关键。本文将带你深入探索如何使用

    2024年02月08日
    浏览(58)
  • 【Git】第一次将本地项目仓库推代码到空的远程仓库方法以及报错的解决方案

    完成上述三步之后,在弹出来的对话框中选择自己的项目目录, 点确定,就可以在文件管理器中看到目录下生成了一个隐藏目录 “ .git ” 右键项目目录,找到Git,根据图示找到remote 在弹出来的对话框中,输入自己远程仓库的地址 点击ok,输入验证信息,连接完毕。 点击p

    2024年02月15日
    浏览(53)
  • 记一次pip下载包报错ERROR: No matching distribution found for xxx时的解决方案

    前言 当我们使用python自带的pip安装一些包时,可能会报以下错误: 出现这种情况有三种可能: 第一种可能: pip的版本过低,需要升级一下,可以执行以下命令进行尝试 第二种可能: 考虑可能是网速的原因,这时可以采用国内的镜像源来加速 第三种可能: 检查下是否开启

    2024年02月11日
    浏览(63)
  • .NET Core部署到linux(CentOS)最全解决方案,入魔篇(使用Docker+Jenkins实现持续集成、自动化部署)

    通过前面三篇: .NET Core部署到linux(CentOS)最全解决方案,常规篇 .NET Core部署到linux(CentOS)最全解决方案,进阶篇(Supervisor+Nginx) .NET Core部署到linux(CentOS)最全解决方案,高阶篇(Docker+Nginx 或 Jexus) 通过前面三篇文章的介绍,我们已经对.net core多方案部署到linux下有了非常全面的认识

    2024年02月02日
    浏览(45)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包