微服务轮子项目(45) -Jenkins自动化部署(上)

简介: 微服务轮子项目(45) -Jenkins自动化部署

1. 安装部署

1.1 环境准备

本说明是针对使用需要Java 8的Jenkins发行版。还建议使用超过512MB RAM的系统,并且在安装jenkins的服务器先装好以下环境

  • Java 8(JRE或JDK)
  • git
  • maven 3.5+
  • 512MB可用内存
  • 1GB +可用磁盘空间

下载Jenkins:

http://mirrors.jenkins.io/war/latest/jenkins.war

1.2 启动与访问

1.创建启动文件start.sh

nohup  java -Dhudson.util.ProcessTree.disable=true -jar jenkins.war --httpPort=8080 >> nohup.out 2>&1 &

-Dhudson.util.ProcessTree.disable=true 参数意思为:禁止Jenkins在Job构建过程结束后认为将kill掉未执行完的子进程


https://wiki.jenkins.io/display/JENKINS/ProcessTreeKiller

2.启动

sh start.sh

3.访问

http://192.168.28.134:8080

1.3 插件安装

1.首次登录时候的插件安装,进入选择插件安装界面,选择第一个(Install suggested plugins):

2.另外的推荐安装的插件

进入系统管理 -> 插件管理 -> 可选插件

  • Blue Ocean:pipeline流水线的增强插件
  • Gitee Plugin:支持码云的插件
  • Extended Choice Parameter Plug-In:参数化构建参数扩展

1.4 全局工具配置

1.Maven 配置,配置maven的settings.xml路径:

2.Jdk 配置

3.Git 配置

4.Maven 配置

1.5 安全配置

1.配置匿名可读权限

2.取消跨站请求伪造保护

1.6 踩坑

Jenkins中无法启动子进程的解决办法

场景如下:

  • 在Jenkins中新建了一个Job,假设你在一些列Build Step之前/之后,启动了一个进程,打个比方说启动一个Jboss进程。等到Build完成,你去Console Output中查看显示启动成功,甚至PID也有了。但是当你去后台查看的时候,发现其实这个进程根本不存在,并没有启动成功。因为它没有关闭继承的文件描述符,Jenkins在Job构建过程结束后认为Jboss进程未终止,因而将其kill掉了。

解决办法(启动时添加禁用参数):

nohup  java -Dhudson.util.ProcessTree.disable=true -jar jenkins.war --httpPort=8080 >> nohup.out 2>&1 &

2. ssh免密登录

在centos里配置免密登录之后,方便Jenkins通过ssh连接服务器操作

2.1 获取本地客户端机器的公钥

1.先看看是不是已经有了,如果有内容就忽略第二步

cat ~/.ssh/id_rsa.pub

2.如果上一步没有这个文件我们就创建一个,运行下面命令生成(邮箱改成自己的),一路回车就好了

ssh-keygen -t rsa -C "youremail@example.com"

2.2 把生成的公钥发送到对方的主机上去

用ssh-copy-id命令,自动保存在对方主机的/root/.ssh/authorized_keys文件中去,ip地址改成需要免密登录的服务器地址

ssh-copy-id -i 

2.3 测试

ssh 192.168.28.130

2.4 免密登录不生效问题解决

一般来讲失败的原因有两个:目录文件的权限和目录的属主

1,目录文件的权限

  • .ssh父目录的权限是755(我的是/root),.ssh目录权限是700,authorized_keys文件 600
chmod 755 /root
chmod 700 /root/.ssh
chmod 600 /root/.ssh/authorized_keys

2.目录的属主

  • 如果上面方法还没有解决问题,那可能是.ssh父目录的属主存在问题。
[root@node1 ~]# ls -al .ssh
total 12
drwx------   2 root root    80 Nov  3 10:07 .
drwxr-xr-x. 11 hdfs users 4096 Nov  3 09:38 ..
-rw-------   1 root root     0 Nov  3 10:06 authorized_keys
-rw-------   1 root root  1679 Nov  3 09:38 id_rsa
-rw-r--r--   1 root root   390 Nov  3 09:38 id_rsa.pub
-rw-r--r--   1 root root     0 Nov  3 10:07 known_hosts

这里发现.ssh父目录(…)的属主存在问题,修改如下:

[root@node1 ~]# chown root:root /root
[root@node1 ~]# ls -al .ssh
total 16
drwx------   2 root root   80 Nov  3 10:07 .
drwxr-xr-x. 11 root root 4096 Nov  3 09:38 ..
-rw-------   1 root root 1135 Nov  3 10:11 authorized_keys
-rw-------   1 root root 1679 Nov  3 09:38 id_rsa
-rw-r--r--   1 root root  390 Nov  3 09:38 id_rsa.pub
-rw-r--r--   1 root root    0 Nov  3 10:07 known_hosts

3. 流水线简单例子

Jenkins从根本上讲是一种支持多种自动化模式的自动化引擎。Pipeline在Jenkins上添加了一套强大的自动化工具,支持从简单的连续集成到全面的连续输送Pipeline的用例。通过建模一系列相关任务,用户可以利用Pipeline 的许多功能:

  • 代码:Pipeline以代码的形式实现,通常被检入源代码控制,使团队能够编辑,审查和迭代其传送流程。
  • 耐用:Pipeline可以在计划和计划外重新启动Jenkins管理时同时存在。
  • Pausable:Pipeline可以选择停止并等待人工输入或批准,然后再继续Pipeline运行。
  • 多功能:Pipeline支持复杂的现实世界连续交付要求,包括并行分叉/连接,循环和执行工作的能力。
  • 可扩展:Pipeline插件支持其DSL的自定义扩展 以及与其他插件集成的多个选项。

3.1 新建任务

新建任务 -> 流水线

General:通常情况下默认就行了

构建触发器:如果需要通过git触发构建的话需要勾选触发远程构建和填写身份验证令牌,详细的git触发配置请看 webhook配置。


目录
相关文章
|
3天前
|
监控 jenkins 测试技术
Ansible与Jenkins:自动化工具的对比
Ansible和Jenkins是自动化领域的两大巨头。Ansible专注于配置管理和任务自动化,采用无代理架构,使用YAML定义配置,具有幂等性和可扩展性。Jenkins则擅长持续集成和持续交付(CI/CD),支持丰富的插件生态系统,适用于自动化构建、测试和部署。两者各有优势,Ansible适合配置管理与大规模部署,Jenkins则在CI/CD方面表现出色。结合使用可创建更强大的自动化工作流,提升团队生产力和软件质量。选择工具时应根据具体需求决定。
|
6月前
|
消息中间件 监控 开发工具
微服务(三)-实现自动刷新配置(不重启项目情况下)
微服务(三)-实现自动刷新配置(不重启项目情况下)
|
3月前
|
运维 jenkins Java
Jenkins 自动化局域网管控软件构建与部署流程
在企业局域网管理中,Jenkins 作为自动化工具,通过配置源码管理、构建及部署步骤,实现了高效、稳定的软件开发与部署流程,显著提升局域网管控软件的开发与运维效率。
74 5
|
4月前
|
关系型数据库 MySQL Java
【Docker最新版教程】一文带你快速入门Docker常见用法,实现容器编排和自动化部署上线项目
Docker快速入门到项目部署,MySQL部署+Nginx部署+docker自定义镜像+docker网络+DockerCompose项目实战一文搞定!
|
5月前
|
测试技术
自动化测试项目学习笔记(五):Pytest结合allure生成测试报告以及重构项目
本文介绍了如何使用Pytest和Allure生成自动化测试报告。通过安装allure-pytest和配置环境,可以生成包含用例描述、步骤、等级等详细信息的美观报告。文章还提供了代码示例和运行指南,以及重构项目时的注意事项。
424 1
自动化测试项目学习笔记(五):Pytest结合allure生成测试报告以及重构项目
|
5月前
|
运维 监控 jenkins
运维自动化实战:利用Jenkins构建高效CI/CD流程
【10月更文挑战第18天】运维自动化实战:利用Jenkins构建高效CI/CD流程
|
5月前
|
Kubernetes 持续交付 Docker
探索DevOps实践:利用Docker与Kubernetes实现微服务架构的自动化部署
【10月更文挑战第18天】探索DevOps实践:利用Docker与Kubernetes实现微服务架构的自动化部署
144 2
|
5月前
|
测试技术 Python
自动化测试项目学习笔记(四):Pytest介绍和使用
本文是关于自动化测试框架Pytest的介绍和使用。Pytest是一个功能丰富的Python测试工具,支持参数化、多种测试类型,并拥有众多第三方插件。文章讲解了Pytest的编写规则、命令行参数、执行测试、参数化处理以及如何使用fixture实现测试用例间的调用。此外,还提供了pytest.ini配置文件示例。
107 2
|
5月前
|
运维 jenkins 持续交付
自动化部署的魅力:如何用Jenkins和Docker简化运维工作
【10月更文挑战第7天】在现代软件开发周期中,快速且高效的部署是至关重要的。本文将引导你理解如何使用Jenkins和Docker实现自动化部署,从而简化运维流程。我们将从基础概念开始,逐步深入到实战操作,让你轻松掌握这一强大的工具组合。通过这篇文章,你将学会如何利用这些工具来提升你的工作效率,并减少人为错误的可能性。
|
5月前
|
测试技术 Python
自动化测试项目学习笔记(二):学习各种setup、tearDown、断言方法
本文主要介绍了自动化测试中setup、teardown、断言方法的使用,以及unittest框架中setUp、tearDown、setUpClass和tearDownClass的区别和应用。
148 0
自动化测试项目学习笔记(二):学习各种setup、tearDown、断言方法