详解 Jenkins 自动化部署平台

原文来源:Jenkins自动化部署

Jenkins介绍

Jenkins是一个开源的、可扩展的持续集成、交付、部署(软件/代码的编译、打包、部署)的基于web界面的平台。前身是Hudson是一个可扩展的持续集成引擎。可用于自动化各种任务,如构建,测试和部署软件。允许持续集成和持续交付项目,无论用的是什么平台,可以处理任何类型的构建或持续集成。

Jenkins能实时监控持续集成过程中所存在的问题,提高详细的日志文件和提醒功能,用图表的形式,形象地展示项目构建的趋势和稳定性。

CI/CD:持续集成,持续交付/持续部署

持续集成

CI(Continuous Integration):软件工程流程,可以帮助开发人员更加频繁地将代码更改合并到共享分支或“主干”中。一旦开发人员对应用所做的更改被合并,系统就会通过自动构建应用并运行不同级别的自动化测试(通常是单元测试和集成测试)来验证这些更改,确保这些更改没有对应用造成破坏。这意味着测试内容涵盖了从类和函数到构成整个应用的不同模块。如果自动化测试发现新代码和现有代码之间存在冲突,CI 可以更加轻松地快速修复这些错误。

就是说只要开发人员提交新的代码,Jenkins就会立刻将新代码与旧代码进行合并构建测试。确定新代码与原代码是否可以集成在一起。

持续交付

CD(Continuous delivery):软件工程手法,在持续集成的基础上,将集成后的代码部署到更贴近真实运行环境(类生产环境)中。比如,我们完成单元测试后,可以把代码部署到连接数据库的Staging环境中更多的测试。如果代码没有问题,可以继续手动部署到生产环境。

持续部署

CD(Continuous Deployment):是持续交付的下一步,如果代码通过评审以后自动部署到生产环节中。在持续交付的基础上,自动部署到生产环境中。处于业务考虑,也可以选择不部署。要想持续部署,必须先实施持续交付。

Maven介绍

Maven项目对象模型(POM),可以通过一小段描述信息来管理项目的构建,报告和文档的项目管理工具软件。(用于在java项目中构建war包)

Maven 除了以程序构建能力为特色之外,还提供高级项目管理工具。由于 Maven 的缺省构建规则有较高的可重用性,所以常常用两三行 Maven 构建脚本就可以构建简单的项目。由于Maven的面向项目的方法,许多Apache Jakarta项目发文时使用Maven,而且公司项目采用Maven的比例在持续增长。

Maven这个单词来自于意第绪语(犹太语),意为知识的积累,最初在Jakata Turbine项目中用来简化构建过程。当时有一些项目(有各自Ant build文件),仅有细微的差别,而JAR文件都由CVS来维护。于是希望有一种标准化的方式构建项目,一个清晰的方式定义项目的组成,一个容易的方式发布项目的信息,以及一种简单的方式在多个项目中共享JARs。

安装Jenkins

Jenkins的rpm包下载

https://mirrors.tuna.tsinghua.edu.cn/jenkins/redhat/jenkins-2.183-1.1.noarch.rpm
[root@Jenkins ~]# rpm -ivh jenkins-2.183-1.1.noarch.rpm
[root@Jenkins ~]# /etc/init.d/jenkins start
[root@Jenkins ~]# netstat -anpt | grep java
tcp6 0 0 :::8080 :::* LISTEN 1635/java
[root@Jenkins ~]# cat /var/lib/jenkins/secrets/initialAdminPassword
71f1cd3fbe504d10b61504cab1cc8288

配置Jenkins

浏览器访问:http://192.168.225.112:8080

安装推荐的插件

也有可能出现部分插件没有安装成功,重试安装即可。


创建管理员用户


安装Jenkins必要插件

访问:http://192.168.225.112:8080

安装Publish Over SSH、Maven Integration插件,直接安装。


插件管理安装Maven Integration插件。


配置Jenkins并发执行数量

用于提高执行效率
Manage Jenkins >> Configure System>> Maven 项目配置

部署Tomcat

实验环境

192.168.225.111     git服务器
192.168.225.112     jenkins服务器
192.168.225.113     web(tomcat)服务器

1.配置git主机

安装git配置git用户

[root@git ~]# yum -y install git
[root@git ~]# useradd git
[root@git ~]# echo "123456" | passwd --stdin git`在这里插入代码片`

创建本地仓库probe

[root@git ~]# su - git
[git@git ~]$ mkdir probe.git
[git@git ~]$ cd probe.git/
[git@git probe.git]$ git --bare init

初始化空的 Git 版本库于 /home/git/probe.git/

[git@git probe.git]$ exit

克隆项目代码同步到自己创建的仓库中

[root@git ~]# git clone https://github.com/psi-probe/psi-probe
[root@git ~]# git clone git@192.168.225.111:/home/git/probe.git
正克隆到 'probe'...
git@192.168.225.111's password:
warning: 您似乎克隆了一个空版本库。
[root@git ~]# cp -rf psi-probe/* probe/
[root@git ~]# cd probe/
[root@git probe]# git add .
[root@git probe]# git config --global user.name “kun”
[root@git probe]# git config --global user.email kun@163.com
[root@git probe]# git commit -m "all probe"
…
create mode 100644 web/src/site/site.xml
create mode 100644 web/src/test/resources/logback-test.xml
[root@git probe]# git push origin master
git@192.168.225.111's password:
Counting objects: 1164, done.
Compressing objects: 100% (1118/1118), done.
Writing objects: 100% (1164/1164), 2.01 MiB | 0 bytes/s, done.
Total 1164 (delta 398), reused 0 (delta 0)
To git@192.168.225.111:/home/git/probe.git
* [new branch] master -> master

2.配置Jenkins主机

1)添加验证凭据
在Jenkins首页中点击“凭据”—系统—添加域

添加凭据

添加后的web主机

2)添加Publish Over SSH远程主机
在web主机创建远程目录

[root@web ~]# mkdir /data

Manage Jenkins >> Configure System >>往下翻最底部找到Publish over SSH —>> SSH Servers–“新增”选项



3)配置Maven、JDK、Git环境

[root@jenkins ~]# which java
/usr/bin/java
[root@jenkins ~]# rm -rf /usr/bin/java
[root@jenkins ~]# tar xf jdk-8u191-linux-x64.tar.gz
[root@jenkins ~]# mv jdk1.8.0_191/ /usr/bin/java
[root@jenkins ~]# vim /etc/profile
export JAVA_HOME=/usr/bin/java/
export PATH=$PATH:$JAVA_HOME/bin/
[root@jenkins ~]# source /etc/profile
[root@jenkins ~]# javac -version
javac 1.8.0_191


Jdk的实际安装路径

设置maven

[root@jenkin ~]# tar xf apache-maven-3.6.1-bin.tar.gz
[root@Jenkins ~]# mv apache-maven-3.6.1 /usr/local/maven-3.6.1


配置Git

[root@Jenkins ~]# which git
/usr/bin/git


基本配置完成保存

  1. 配置web主机
[root@web ~]# tar xf apache-tomcat-8.5.16.tar.gz
[root@web ~]# tar xf jdk-8u191-linux-x64.tar.gz
[root@web ~]# mv jdk1.8.0_191/ /usr/local/java
[root@web ~]# mv apache-tomcat-8.5.16 /usr/local/tomcat
[root@web ~]# vim /etc/profile
export JAVA_HOME=/usr/local/java
export CLASSPATH=$JAVA_HOME/lib/tools.jar:$JAVA_HOME/lib/dt.jar
export PATH=$JAVA_HOME/bin:$PATH
[root@web ~]# source /etc/profile
[root@web ~]# java -version
java version "1.8.0_191"
Java(TM) SE Runtime Environment (build 1.8.0_191-b12)
Java HotSpot(TM) 64-Bit Server VM (build 25.191-b12, mixed mode)

web主机生成密钥
发布公钥给Jenkins主机,后边项目构建后需要scp文件到本地

[root@web ~]# ssh-keygen
[root@web ~]# ssh-copy-id 192.168.225.112
  1. 新建Maven项目
    1)新建ltem

    2)选择源码管理—选择git
    添加为:git@192.168.225.111:/home/git/probe.git

    图中的警告因为没有生成密钥对给git,Jenkins默认用Jenkins用户去git拉下来代码,需要连接git用户主机

Jenkins用户生成密钥对

[root@Jenkins ~]# id jenkins
uid=988(jenkins) gid=982(jenkins) 组=982(jenkins)
[root@jenkins ~]# grep jenkins /etc/passwd
jenkins:x:988:982:Jenkins Automation Server:/var/lib/jenkins:/bin/false

因为jenkin用户的shell是/bin/false,su不过去,所以使用-s指定shell切换到Jenkins用户

[root@Jenkins ~]# su -s /bin/bash jenkins
bash-4.2$ ssh-keygen
bash-4.2$ ssh-copy-id git@192.168.225.111

尝试连接git,验证密钥对是否成功

bash-4.2$ ssh git@192.168.225.111
[git@git ~]$ exit

3)选择build

4)构建后操作


当Jenkins利用maven打包成war包,web主机去Jenkins主机上下载war包到本地

Build构建

查看控制台输出

5.验证自动打包部署结果
注意:
有些项目的war包不能删除,删除war包,项目也就没有了

[root@web ~]# ls /usr/local/tomcat/webapps/
docs examples host-manager manager probe probe.war ROOT
[root@web ~]# ls /usr/local/tomcat/webapps/probe
css flags index.jsp js META-INF WEB-INF
[root@web ~]# netstat -anpt | grep 8080
tcp6 0 0 :::8080 :::* LISTEN 63947/java

访问tomcat

访问项目

详解 Jenkins 自动化部署平台相关推荐

  1. 基于Gitlab Jenkins Docker集群 微服务搭建自动化部署平台

    随着公司应用系统的不断增多,原有手工部署流程越来越不满足上线的需求.为了各个系统能快速迭代与测试,减少上线流程时间和人为出错,迫切需要一套自动化部署系统. 转载原文:https://luoji.liv ...

  2. jenkins+gitlab实现自动化部署平台

    文章目录 jenkins+gitlab实现自动化部署平台 git gitlab gitlab介绍 安装 jenkins jenkins介绍 CI/CD介绍 Jenkins安装 gitlab+jenki ...

  3. Jenkins 自动化部署上线 ​

    Jenkins 自动化部署上线 Jenkins 自动化部署上线 由于51cto格式问题,可以直接访问https://www.abcdocker.com/abcdocker/3174 查看原文 [TOC ...

  4. java部署平台_开源Java自动化部署平台JDeploy

    JDeploy是Java + Shell实现的基于Linux系统的自动化.可视化的项目部署平台,能部署Java服务.Java Web项目,可以简化项目部署操作,无需繁琐的黑窗口SSH指令及Jenkin ...

  5. Jenkins 自动化部署上线

    转载于互联网 jenkins自动化部署项目,通过jenkins 部署来节省运维时间,不需要手动cp上线及版本发布 Jenkins 自动化部署上线 Jenkins Jenkins 自动化部署上线一.Je ...

  6. Jenkins自动化部署-配置项目(下)

    一.新建项目,设置Git地址,账号密码. 多种方式,ssh方式,需要配置私钥. 第1个错误:Git没安装 Linux机器上,先安装Git软件. CentOs系统,yum install git git ...

  7. jenkin swindows启动_Windows环境下实现Jenkins自动化部署

    详见:https://blog.csdn.net/Try_harder_every_day/article/details/79170065 Jenkins自动化部署: 几条具体的思路:1.开发人员将 ...

  8. Jenkins自动化部署前端Vue项目

    Jenkins自动化部署前端Vue项目 前言 安装NodeJs 下载NodeJs 安装NodeJs npm配置 Jenkins配置NodeJs 安装NodeJs插件 配置NodeJs 新建及配置任务 ...

  9. 详解音视频直播平台搭建中的低延时

    详解音视频直播平台搭建中的低延时 音视频实时通讯的应用场景已经随处可见,从"吃鸡"的语音对讲.直播连麦.直播答题组队开黑,再到银行视频开户等.对于开发者来讲,除了关注如何能快速实现 ...

最新文章

  1. 探索c#之递归APS和CPS
  2. 逆转线性单链表 c语言,单链表的逆转,不会做啊
  3. 如何使用Tmux提高终端环境下的效率
  4. Aiiage Camp Day4 A Board game
  5. python中的成员运算符_在Python中使用成员运算符的示例
  6. 服务发现技术是如何演进出来的?
  7. 深度ip转换器手机版app_房串串经纪人版app下载-房串串经纪人版app手机版 v1.0.0...
  8. LeetCode - Medium - 114. Flatten Binary Tree to Linked List
  9. GStreamer基础教程01 - Hello World
  10. MySQL命令窗口下中文显示乱码的解决过程
  11. python文件之间的相互调用_「Python 系列」 Python 生成器函数详解
  12. mysql:多表查询方式
  13. Hadoop 与 HBase 版本对应
  14. 经典算法题-----猴子吃桃的问题
  15. ASURO机器人电机干扰造成MCU误报电量低(LVLV)问题
  16. 微软bing每日壁纸API接口
  17. window版ELK搭建
  18. 送您一份《学编程笔记本电脑选购指南》,建议收藏!
  19. 【MD】markdown符号表
  20. 微信小程序预览文件,word、xlsx文件打不开?

热门文章

  1. QT QString转16进制
  2. gitlab代码管理
  3. 一个语法分析器的实现
  4. SAP-ABAP-OOALV进阶-子屏幕;各种方法示例;
  5. Vue warn]: Computed property XXXl was assigned to but it has no setter.错误
  6. 蓝牙BLEBLEcc2540开启广播的过程
  7. 【博弈】叉圈棋永远都是平局
  8. 【LeetCode】跳跃游戏Ⅰ~Ⅵ(我真的跳晕了@_@)
  9. js压缩图片--可以控制分辨率以及压缩后的图片质量
  10. CPU运行功耗和什么相关?消耗的电能都去哪了?