Jenkins部署发布

Jenkins部署发布

一 jenkins介绍

Jenkins是一个广泛用于持续构建的可视化web工具,持续构建说得更直白点,就是各种项目的"自动化"编译、打包、分发部署。jenkins可以很好的支持各种语言(比如:java, c#, php等)的项目构建,也完全兼容ant、maven、gradle等多种第三方构建工具,同时跟svn、git能无缝集成,也支持直接与知名源代码托管网站,比如github、bitbucket直接集成。

提到持续集成免不了谈及Hudson,Hudson是SunMicrosystems 开发的一个非常流行的开源的基于Java 的持续集成工具,后来Sun被Oracle收购,从Hudson 源代码的分支诞生了Jenkins。

jenkins其实就是大的框架集,可以整个任何你想整合的内容,实现公司的整个持续集成体系!如:自动化,性能,打包,部署,发布&发布结果自动化验证,接口测试,单元测试。

二 特点

——开源的java语言开发持续集成工具,支持CI,CD。

——易于安装部署配置:可通过yum安装,或下载war包以及通过docker容器等 快速实现安装部署,可方便web界面配置管理。

——消息通知及测试报告:集成RSS/E-mail通过RSS发布构建结果或当构建完成时通过e-mail通知,生成JUnit/TestNG测试报告。

——分布式构建:支持Jenkins能够让多台计算机一起构建/测试。

——文件识别:Jenkins能够跟踪哪次构建生成哪些jar,哪次构建使用哪个版本的jar等。

——丰富的插件支持:支持扩展插件,你可以开发适合自己团队使用的工具,如git,svn,maven,docker等。

三 CI持续集成

什么是持续集成?

软件开发中,集成是一个很可能发生未知错误的过程。持续集成是一种软件开发实践,希望团队中的成员频繁提交代码到代码仓库,且每次提交都能通过自动化测试进行验证,从而使问题尽早暴露和解决。

特点

——通过自动化测试可以提早拿到回归测试的结果,避免将一些问题提交到交付生产中。

——发布编译将会更加容易,因为合并之初已经将所有问题都规避了。

减少工作问题切换,研发可以很快获得构建失败的消息,在开始下一——个任务之前就可以很快解决。

测试成本大幅降低,你的CI服务器可以在几秒钟之内运行上百条测试。

——团队花费在测试上面的时间会大幅缩短,将会更加侧重于质量文化的提升上面

四 CD持续交付

持续交付(CD)通常是指整个流程链(管道),它自动监测源代码变更并通过构建、测试、打包和相关操作运行它们以生成可部署的版本,基本上没有任何人为干预。

持续交付在软件开发过程中的目标是自动化、效率、可靠性、可重复性和质量保障(通过持续测试)。

持续交付包含持续集成(自动检测源代码变更、执行构建过程、运行单元测试以验证变更),持续测试(对代码运行各种测试以保障代码质量),和(可选)持续部署(通过管道发布版本自动提供给用户)

特点

——发布频率更快,因为你不需要停下来等待发布。每一处提交都会自动触发发布流

——在小批量发布的时候,风险降低了,发现问题也可以很轻松的修复

客户每天都可以看到我们的持续改进和提升,而不是每个月或者每季度,或者每年

五 持续部署(CD)

持续部署扩展了持续交付,以便软件构建在通过所有测试时自动部署。在这样的流程中, 不需要人为决定何时及如何投入生产环境。CI/CD 系统的最后一步将在构建后的组件/包退出流水线时自动部署。 此类自动部署可以配置为快速向客户分发组件、功能模块或修复补丁,并准确说明当前提供的内容。采用持续部署的组织可以将新功能快速传递给用户,得到用户对于新版本的快速反馈,并且可以迅速处理任何明显的缺陷。 用户对无用或者误解需求的功能的快速反馈有助于团队规划投入,避免将精力集中于不容易产生回报的地方。

六 Jenkins部署

[root@103 ~]# wget https://get.jenkins.io/war-stable/2.303.2/jenkins.war

[root@103 ~]# wget https://archive.apache.org/dist/tomcat/tomcat-9/v9.0.54/bin/apache-tomcat-9.0.54.tar.gz

[root@102 ~]# yum -y install java-11-openjdk*

[root@102 ~]# tar xf apache-tomcat-9.0.54.tar.gz -C /usr/local/

[root@103 ~]# cd /usr/local/

[root@103 local]# mv apache-tomcat-9.0.54/ tomcat

[root@103 local]# cd tomcat/

[root@103 tomcat]# ls

bin conf lib logs README.md RUNNING.txt webapps

BUILDING.txt CONTRIBUTING.md LICENSE NOTICE RELEASE-NOTES temp work

[root@103 tomcat]# ./bin/catalina.sh start

Using CATALINA_BASE: /usr/local/tomcat

Using CATALINA_HOME: /usr/local/tomcat

Using CATALINA_TMPDIR: /usr/local/tomcat/temp

Using JRE_HOME: /usr

Using CLASSPATH: /usr/local/tomcat/bin/bootstrap.jar:/usr/local/tomcat/bin/tomcat-juli.jar

Using CATALINA_OPTS:

Tomcat started.

[root@103 tomcat]# ss -atnl

State Recv-Q Send-Q Local Address:Port Peer Address:Port Process

LISTEN 0 128 0.0.0.0:22 0.0.0.0:*

LISTEN 0 100 *:8080 *:*

LISTEN 0 128 [::]:22 [::]:*

LISTEN 0 1 [::ffff:127.0.0.1]:8005 *:*

访问ip地址加8080

[root@103 tomcat]# ls webapps/

docs examples host-manager manager ROOT

[root@103 tomcat]# mv webapps/ROOT/ /opt/

[root@103 tomcat]# rm -rf webapps/*

[root@103 tomcat]# mv /opt/ROOT/ webapps/

[root@103 tomcat]# cd webapps/

[root@103 webapps]# ls

ROOT

[root@103 local]# ./tomcat/bin/catalina.sh stop

Using CATALINA_BASE: /usr/local/tomcat

Using CATALINA_HOME: /usr/local/tomcat

Using CATALINA_TMPDIR: /usr/local/tomcat/temp

Using JRE_HOME: /usr

Using CLASSPATH: /usr/local/tomcat/bin/bootstrap.jar:/usr/local/tomcat/bin/tomcat-juli.jar

Using CATALINA_OPTS:

NOTE: Picked up JDK_JAVA_OPTIONS: --add-opens=java.base/java.lang=ALL-UNNAMED --add-opens=java.base/java.io=ALL-UNNAMED --add-opens=java.base/java.util=ALL-UNNAMED --add-opens=java.base/java.util.concurrent=ALL-UNNAMED --add-opens=java.rmi/sun.rmi.transport=ALL-UNNAMED

[root@103 local]# mv tomcat/ jenkins

[root@103 local]# ls

bin etc games include jenkins lib lib64 libexec sbin share src

[root@103 local]# cd jenkins/

[root@103 jenkins]# ls

bin conf lib logs README.md RUNNING.txt webapps

BUILDING.txt CONTRIBUTING.md LICENSE NOTICE RELEASE-NOTES temp work

[root@103 jenkins]# cd webapps/

[root@103 webapps]# cd ROOT/

[root@103 ROOT]# rm -rf *

[root@103 ROOT]# cd ..

[root@103 webapps]# cp ~/jenkins.war .

[root@103 webapps]# ls

jenkins.war ROOT

[root@103 webapps]# ../bin/catalina.sh start

Using CATALINA_BASE: /usr/local/jenkins

Using CATALINA_HOME: /usr/local/jenkins

Using CATALINA_TMPDIR: /usr/local/jenkins/temp

Using JRE_HOME: /usr

Using CLASSPATH: /usr/local/jenkins/bin/bootstrap.jar:/usr/local/jenkins/bin/tomcat-juli.jar

Using CATALINA_OPTS:

Tomcat started.

[root@103 webapps]# ls

jenkins jenkins.war ROOT

七 web页面安装与功能介绍

发布历史

用户视图My Views

New view新建视图

错误信息显示

关于jenkins

负载状态

配置菜单 重新加载 命令行 脚本命令行 关闭jenkins

管理用户

用户视图

凭据

拉代码,记录账号和密码就叫凭证

全局安全

不要记住我

ssh 端口指定

插件

插件管理

代理设置

切换站点

https://mirrors.tuna.tsinghua.edu.cn/jenkins/updates/update-center.json

全局配置 扳手图案

工具配置安装

询问开发打包工具

手动安装需要填写目录路径或自动安装

配置系统

主目录

系统管理员邮箱

使用统计取消勾选

邮箱认证

八 使用jenkins进行java代码打包发布案例

确认开启服务端状态

[root@103 ~]# cd /usr/local/jenkins/

bin/ conf/ lib/ logs/ temp/ webapps/ work/

[root@103 ~]# cd /usr/local/jenkins/webapps/

[root@103 webapps]# ../bin/catalina.sh start

Using CATALINA_BASE: /usr/local/jenkins

Using CATALINA_HOME: /usr/local/jenkins

Using CATALINA_TMPDIR: /usr/local/jenkins/temp

Using JRE_HOME: /usr

Using CLASSPATH: /usr/local/jenkins/bin/bootstrap.jar:/usr/local/jenkins/bin/tomcat-juli.jar

Using CATALINA_OPTS:

Tomcat started.

[root@103 webapps]# ss -atnl

State Recv-Q Send-Q Local Address:Port Peer Address:Port Process

LISTEN 0 128 0.0.0.0:22 0.0.0.0:*

LISTEN 0 100 *:8080 *:*

LISTEN 0 128 [::]:22 [::]:*

[root@103 webapps]#

创建一个流水线项目

选择功能Hello World

点击 Build Now立即构建

查看命令行输出

返回到项目

视图输出结果

拉到自己的仓库Fork

// 目标主机

[root@106 ~]# cd /usr/local/tomcat/webapps/

[root@106 webapps]# ss -atnl

State Recv-Q Send-Q Local Address:Port Peer Address:Port Process

LISTEN 0 128 0.0.0.0:22 0.0.0.0:*

LISTEN 0 128 [::]:22 [::]:*

[root@106 webapps]# ../bin/

catalina.sh configtest.sh digest.sh setclasspath.sh startup.sh version.sh

ciphers.sh daemon.sh makebase.sh shutdown.sh tool-wrapper.sh

[root@106 webapps]# ../bin/catalina.sh start

Using CATALINA_BASE: /usr/local/tomcat

Using CATALINA_HOME: /usr/local/tomcat

Using CATALINA_TMPDIR: /usr/local/tomcat/temp

Using JRE_HOME: /usr

Using CLASSPATH: /usr/local/tomcat/bin/bootstrap.jar:/usr/local/tomcat/bin/tomcat-juli.jar

Using CATALINA_OPTS:

Tomcat started.

[root@106 webapps]# ss -atnl

State Recv-Q Send-Q Local Address:Port Peer Address:Port Process

LISTEN 0 128 0.0.0.0:22 0.0.0.0:*

LISTEN 0 100 *:8080 *:*

LISTEN 0 128 [::]:22 [::]:*

// 免密登入

ssh-keygen -t rsa

ssh-copy-id root@192.168.143.106

[root@103 opt]# yum install -y git

[root@103 opt]# git clone https://gitee.com/hyhxy0206/tomcat-java-demo.git

正克隆到 'tomcat-java-demo'...

remote: Enumerating objects: 558, done.

remote: Counting objects: 100% (558/558), done.

remote: Compressing objects: 100% (316/316), done.

remote: Total 558 (delta 217), reused 558 (delta 217), pack-reused 0

接收对象中: 100% (558/558), 5.08 MiB | 434.00 KiB/s, 完成.

处理 delta 中: 100% (217/217), 完成.

[root@103 opt]# ls

tomcat-java-demo

[root@103 opt]# yum install -y maven-1:3.5.4-5.module_el8.0.0+39+6a9b6e22.noarch

[root@103 opt]# cd tomcat-java-demo/

[root@103 tomcat-java-demo]# mvn clean package

[root@103 tomcat-java-demo]# cd target/

[root@103 target]# ls

classes ly-simple-tomcat-0.0.1-SNAPSHOT maven-archiver

generated-sources ly-simple-tomcat-0.0.1-SNAPSHOT.war maven-status

[root@103 target]# mv ly-simple-tomcat-0.0.1-SNAPSHOT.war myapp.war

[root@103 target]# ls

classes generated-sources ly-simple-tomcat-0.0.1-SNAPSHOT maven-archiver maven-status myapp.war

[root@103 target]# cd ..

[root@103 tomcat-java-demo]# scp target/myapp.war root@192.168.143.106:/usr/local/tomcat/webapps

myapp.war

// 目标主机

[root@106 webapps]# ls

docs examples host-manager manager myapp myapp.war ROOT

jenkins自动化部署

点击配置

选择github模式

清除m3命令

只保留拉代码与打包多余删除

替换代码https://gitee.com/hyhxy0206/tomcat-java-demo.git

保存构建

点击视图,打包结果如下

#打包结果

[root@103 tomcat-java-demo]# cd /root/.jenkins/workspace/

[root@103 workspace]# ls

demo demo@tmp

[root@103 workspace]# ls demo

db deploy.yaml Dockerfile jenkinsfile LICENSE pom.xml README.md src target

[root@103 workspace]# cd demo

[root@103 demo]# ls

db deploy.yaml Dockerfile jenkinsfile LICENSE pom.xml README.md src target

[root@103 demo]# ls target/

classes ly-simple-tomcat-0.0.1-SNAPSHOT maven-archiver

generated-sources ly-simple-tomcat-0.0.1-SNAPSHOT.war maven-status

[root@103 demo]#

自动改名称

mv ly-simple-tomcat-0.0.1-SNAPSHOT.war myapp.war 放到流程线

##查看结果

[root@103 demo]# ls target/

classes generated-sources ly-simple-tomcat-0.0.1-SNAPSHOT maven-archiver maven-status myapp.war

##备份操作

[root@106 myapp]# mkdir -p /opt/backup

// 手动操作

[root@103 demo]# ssh root@192.168.143.106 'tar -Jcf /opt/backup/myapp-$(date +%Y%m%d%H%M).tar.xz /usr/local/tomcat/webapps/myapp'

tar: 从成员名中删除开头的“/”

[root@103 demo]# ssh root@192.168.143.106 'tar -Jcf /opt/backup/myapp-$(date +%Y%m%d%H%M).tar.xz /usr/local/tomcat/webapps/myapp'

tar: 从成员名中删除开头的“/”

[root@103 demo]#

// 查看

[root@106 myapp]# ls /opt/backup/

myapp-202110190504.tar.xz

[root@106 myapp]# ls /opt/backup/

myapp-202110190504.tar.xz myapp-202110190505.tar.xz

[root@106 myapp]#

pipeline {

agent any

stages {

stage('Build') {

steps {

// Get some code from a GitHub repository

git 'https://gitee.com/hyhxy0206/tomcat-java-demo.git'

// Run Maven on a Unix agent.

sh "mvn -Dmaven.test.failure.ignore=true clean package"

sh "mv target/ly-simple-tomcat-0.0.1-SNAPSHOT.war target/myapp.war"

// To run Maven on a Windows agent, use

// bat "mvn -Dmaven.test.failure.ignore=true clean package"

}

}

stage("publish"){

steps{

sh "ssh root@192.168.143.106 'tar -Jcf /opt/backup/myapp-\$(date +%Y%m%d%H%M).tar.xz /usr/local/tomcat/webapps/myapp'"

sh "scp target/myapp.war root@192.168.143.106:/usr/local/tomcat/webapps/"

sh "ssh root@192.168.143.106 '/usr/local/tomcat/bin/catalina.sh stop'"

sh "sleep 3"

sh "ssh root@192.168.143.106 '/usr/local/tomcat/bin/catalina.sh start'"

}

}

}

}

点击流水线语法

git高级用法la私有仓库

添加凭证

选择凭据生成脚本

添加到流水线

点击流水线语法

点击在线文档

在线文档jenkins入门

点击创建流水线

执行多个步骤

定义执行环境

使用变量环境

记录测试

清理和通知

部署

相关推荐

dnf英雄联盟腾讯哪个赚得多 DNF、英雄联盟、腾讯:哪个赚得多?
刘思琦的个人资料中有哪些关于她的出生地和家庭背景的信息?
《命运2》异域装备全收集指南:掉落机制与获取途径
best365官网投注链接

《命运2》异域装备全收集指南:掉落机制与获取途径

📅 08-10 👍 839