Jenkins+Maven+Gitlab+Tomcat 自动化构建打包、部署
1|0Jenkins+Maven+Gitlab+Tomcat 自动化构建打包、部署笔记
2|0版本控制概念
-
记录开发文件的时间机器
- 更好的开发,挽回代码错误带来的损失
-
分类
-
产品
3|0gitlab部署
gitlab-LOGO
-
system
-
支持的类UNIX系统
- Ubuntu
- Debian
- CentOS
- Red Hat Enterprise Linux (please use the CentOS packages and instructions)
- Scientific Linux (please use the CentOS packages and instructions)
- Oracle Linux (please use the CentOS packages and instructions)
-
不支持的类UNIX系统
- OS X
- Arch Linux
- Fedora
- Gentoo
- FreeBSD
-
3|1环境准备
服务器一台:CentOS7
内存:8G
CPU:2核以上
主要是关防火墙和selinux
3|2Install and configure the necessary dependencies
sudo yum install curl policycoreutils openssh-server openssh-clients //安装和配置必要的依赖关系
sudo yum install postfix //安装邮件程序 sudo systemctl enable postfix sudo systemctl start postfix sudo systemctl stop firewalld //防火墙关上! sudo systemctl disable firewalld
3|3Add the GitLab package server and install the package
由于官网安装比较慢,这里直接上传安装包gitlab-ce-9.1.0-ce.0.el7.x86_64.rpm
链接: https://pan.baidu.com/s/1N0GqYnd5UHXQo0_V9O1YPQ?pwd=gjmb 提取码: gjmb
//离线安装
yum -y install gitlab-ce-9.1.0-ce.0.el7.x86_64.rpma //官网安装 curl -sS https://packages.gitlab.com/install/repositories/gitlab/gitlab-ce/script.rpm.sh | sudo bash
3|4Configure and start GitLab
sudo gitlab-ctl reconfigure //自动配置文件权限,安装数据库….安装的时间会很长!!!
3|5Browse to the hostname and login
gitlab服务器的地址:http://server_IP Gitlab占用80端口,访问时直接访问IP就可以(第一次会让你确认root账户登录的密码)
登陆图示
欢迎界面
创建8位新密码 然后使用root登录即可
创建项目
推送密钥
粘贴这个地址,用于下载项目
查看秘钥
➜ ssh-keygen
Generating public/private rsa key pair. Enter file in which to save the key (/Users/echo/.ssh/id_rsa): Enter passphrase (empty for no passphrase): Enter same passphrase again: Your identification has been saved in /Users/echo/.ssh/id_rsa Your public key has been saved in /Users/echo/.ssh/id_rsa.pub The key fingerprint is: SHA256:eL/4ra3L1AQpYKy3zQWC+6bec0+vgfUqlqWXiG43Ecg echo@bogon The key's randomart image is: +---[RSA 3072]----+ | oo | | ..o.. . | | + o..o | | o E..... | | o.+So. . | | +.++.+ | | o ..*=.o | | ..+ X=oB | | ..oo=.*@=+ | +----[SHA256]-----+ ➜ cat ~/.ssh/id_rsa.pub ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABgQDDh1o1h80mo9ulEP6TvmuCDez5hSXPohewY8gm6x77iF/2gXg6qxtDWxNDSAEwbIrW8kxfWkVpPJBFmTYjjCyI8lbWLf4wt926KLtAt1irBnS3IBt2AZDl1MRllEbl8OvXELnUQo7fnKxfzoYbBE8+fg3fTXd+sxQeMs53U3wcZiz35Sbobd2bMK2HcO7kTsQX8M+pYIzopeMdoeitr0rwAIUWHuxU5jZjfpRX5Qhu+QVM4KGj/bs0eIaY9inho3UQSkZC10vfNFboFnuW3qlUm2ekkPdONokIjiEQOqSbUg6y9eHg9cJaKRfdr+UZ1YuR1MGPtmyuQJ6fRMemaMklc3Zpl0ZF+RrU0mCjXSPuv6ud9aFmuCezoB+g3VEg8mh4lrWCPdSoet9WWP5ns9KAOfK1RRKo4ncrbvrfTUA2iBso+EgP14lZC+0Ay5tYcw/QUe48rezvEOOuNz9jzl3wTAbXj3qP6gO1Z6WW73Ai8GmPxOioQV6pxfk4HLq1fvc= echo@bogon
上传密钥
查看密钥
链接地址
用于命令行,或客户端程序进行下载使用
4|0使用gitlab
4|1图形操作
上传文件到gitlab
下载文件到gitlab客户端
4|2命令行操作
克隆服务器的文件
[root@web1 ~] yum -y install git
[root@web1 ~] git --version git version 1.8.3.1 [root@web1 ~] git config --global user.name "root" [root@web1 ~] git config --global user.email git@qq.com [root@web1 ~] git clone git@192.168.23.26:root/project1.git //把项目克隆到当前服务器上,192.168.23.26 gitlab主机地址
上传文件
[root@web1 ~] cd project1/ //进入工作目录
[root@web1 project1] echo 123456 > 2.sh //新建文件 [root@bogon my.test] git init //初始化 [root@web1 project1] git remote add origin git@192.168.23.26:root/project1.git //配置远程服务器地址 如果远程服务器配置报错,因为之前已经配置过其他远程服务器。可以用命令清除掉 git remote rm origin [root@web1 project1] git add . //建立当前文件夹下所有的文件,为准备上传的文件 [root@web1 project1] git commit -m "add client.txt" //提交上传说明 [root@web1 project1] git push -u origin master //上传
5|0Jenkins理解
5|1简介
-
CI/CD
- 持续集成/持续发布 开发(git) -->git主库-->jenkins(git+jdk+tomcat+maven打包+测试)-->发布到tomcat服务器
-
jenkins
- Jenkins是帮我们将代码进行统一的编译打包、还可以放到tomcat容器中进行发布。
意思是我们通过配置,将以前:编译、打包、上传、部署到Tomcat中的过程交由Jenkins,Jenkins通过给定的代码地址URL,将代码拉取到其“宿主服务器”(Jenkins的安装位置),进行编译、打包和发布到web容器中
- Jenkins是帮我们将代码进行统一的编译打包、还可以放到tomcat容器中进行发布。
5|2jenkins概述
是一个开源的、提供友好操作界面的持续集成(CI)工具,起源于Hudson(Hudson是商用的),主要用于持续、自动的构建/测试软件项目、监控一些定时执行的任务。Jenkins用Java语言编写,可在Tomcat等流行的servlet容器中运行,也可独立运行。
jenkins通常与版本管理工具(SCM)、构建工具结合使用;常用的版本控制工具有SVN、GIT。jenkins构建工具有Maven、Ant、Gradle。
-
CI
- 英文全称:Continuous Integration
中文全称:持续集成工具
持续集成是一种软件开发实践。在持续集成中,团队成员频繁集成他们的工作成果,一般每人每天至少集成一次,也可以多次。每次集成会经过自动构建(包括自动测试)的检验,以尽快发现集成错误。
- 英文全称:Continuous Integration
-
SCM
-
英文全称:Source Control Management (Software Version Control)
中文全称:源码控制管理软件 版本控制
-
5|3jenkins目标
是监控软件开发流程 快速显示问题 提高开发效率 过程控制
5|4jenkins特性
-
易于安装
- 不需要安装、不需要数据库,只需通过java -jar jenkins.war或部署到一个servlet容器中
-
易于配置
- 所有的配置都可能通过jenkins提供的web界面完成,当然如果你喜欢,也可以通过手动修改xml文件进行配置
-
测试报告
- 生成JUnit或TestNG的测试报告.集成RSS/E-mail通过RSS发布构建结果或当构建完成时通过e-mail通知
-
文件识别
- jenkins能跟踪每次构建生成哪些jar包以及使用哪个版本的jar包
-
分布式构建
- 支持Jenkins能够让多台计算机一起构建/测试
-
插件支持
- jenkins可以通过第三方插件扩展,也可以根据团队需要开发插件
-
任务(Job)和构建(build)
- 任务:(Job)是Jenkins的一个执行计划,是一系列操作的集合
构建:是Jenkins的任务的一次运行
- 任务:(Job)是Jenkins的一个执行计划,是一系列操作的集合
-
工作流程图
- CI系统会为每一个项目创建了一个单独的工作区。当预设或请求一次新的构建时,它将把源代码仓库的源码存放到对应的工作区。
- CI系统会在对应的工作区内执行构建过程。
- (配置如果存在)构建完成后,CI系统会在一个新的构件中执行定义的一套测试。完成后触发通知(Email,RSS等等)给相关的当事人。
- (配置如果存在)如果构建成功,这个构件会被打包并转移到一个部署目标(如应用服务器)或存储为软件仓库中的一个新版本。软件仓库可以是CI系统的一部分,也可以是一个外部的仓库,诸如一个文件服务器或者像Java.net、 SourceForge之类的网站。
- CI系统通常会根据请求发起相应的操作,诸如即时构建、生成报告,或者检索一些构建好的构件。
Jenkins就是这么一个CI系统。之前叫做Hudson。
6|0Jenkins部署
6|1环境
Github | https://github.com/ |
---|---|
192.168.23.27 | 部署Jenkins |
192.168.23.28 | Tomcat网站服务器 |
6|2部署Git
192.168.23.27执行
#安装依赖包
[root@tomcat ~] yum install curl-devel expat-devel gettext-devel openssl-devel zlib-devel gcc perl-ExtUtils-MakeMaker -y #git官网下载最新版本GIT,如果网速慢可下载提供的安装包 链接: https://pan.baidu.com/s/1kRYq6hVa1K1C0dHMK1l7Ww?pwd=ijxw 提取码: ijxw wget https://mirrors.edge.kernel.org/pub/software/scm/git/git-2.9.5.tar.gz //安装Git [root@tomcat soft] tar xf git-2.9.5.tar.gz -C /usr/local/ #解压并cd到解压目录 [root@tomcat local] mv git-2.9.5/ git [root@tomcat /] cd /usr/local/git #进入解压目录 [root@tomcat git-2.9.5] make prefix=/usr/local/git all #编译源码包 [root@tomcat git-2.9.5] make prefix=/usr/local/git install #源码安装 #修改环境变量 [root@tomcat git-2.9.5] vim /etc/bashrc PATH=$PATH:$HOME/bin:/usr/local/git/bin #添加内容 [root@tomcat local] source /etc/bashrc [root@tomcat local] git --version #测试是否安装成功 git version 1.8.3.1
-
关于bashrc和profile
-
/etc/profile:此文件为系统的每个用户设置环境信息,当用户第一次!!!登录!!!时,该文件被执行. 并从/etc/profile.d目录的配置文件中搜集shell的设置.
/etc/bashrc:为每一个运行bash shell的用户执行此文件.当bash shell被打开时,该文件被读取
6|3jdk环境部署
192.168.23.27执行
#下载软件
jdk-11.0.17_linux-x64_bin.rpm #注意:因为版本原因不能用jdk9和jdk10 链接: https://pan.baidu.com/s/1VBm6-WF-Wx-aMxF79JeZdw?pwd=17ey 提取码: 17ey #解压安装 [root@jenkins soft]# tar xv openjdk-11+28_linux-x64_bin.tar.gz -C /usr/local/ [root@jenkins local]# mv jdk-11/ jdk #添加环境变量 [root@jenkins local]# vim /etc/bashrc JAVA_HOME=/usr/local/jdk export PATH=$PATH:$JAVA_HOME/bin #测试jdk [root@jenkins soft]# java -version java version "11.0.17" 2022-10-18 LTS Java(TM) SE Runtime Environment 18.9 (build 11.0.17+10-LTS-269) Java HotSpot(TM) 64-Bit Server VM 18.9 (build 11.0.17+10-LTS-269, mixed mode)
6|4部署maven
192.168.23.27执行
#下载和解压Maven
链接: https://pan.baidu.com/s/1RVJO4HscAuZ1ontIJrpx3g?pwd=x3q3 提取码: x3q3 #网盘提取 wget http://mirror.bit.edu.cn/apache/maven/maven-3/3.5.3/binaries/apache-maven-3.5.3-bin.tar.gz #官网下载 [root@tomcat soft] tar zxvf apache-maven-3.5.3-bin.tar.gz -C /usr/local/ [root@tomcat soft] mv /usr/local/apache-maven-3.5.3/ /usr/local/maven #修改环境变量 [root@tomcat local] vim /etc/bashrc #添加如下内容 export M2_HOME=/usr/local/maven export M2=$M2_HOME/bin PATH=$M2:$PATH:$HOME/bin:/usr/local/git/bin export JAVA_HOME=/usr/local/jdk export PATH [root@tomcat local] source /etc/bashrc #测试maven [root@tomcat local] mvn -version Apache Maven 3.5.3 (3383c37e1f9e9b3bc3df5050c29c8aff9f295297; 2018-02-25T03:49:05+08:00) Maven home: /usr/local/maven Java version: 1.8.0_151, vendor: Oracle Corporation Java home: /usr/local/jdk/jre Default locale: zh_CN, platform encoding: UTF-8 OS name: "linux", version: "3.10.0-1127.el7.x86_64", arch: "amd64", family: "unix"
6|5部署tomcat
192.168.23.27执行
#官网下载tomcat
apache-tomcat-9.0.1.tar.gz #网盘提取 链接: https://pan.baidu.com/s/1e6TSpN7d1yvH6dXLSoSVsA?pwd=7smt 提取码: 7smt #解压部署 [root@tomcat soft] tar -zxvf apache-tomcat-9.0.1.tar.gz -C /usr/local/ [root@tomcat soft] mv /usr/local/apache-tomcat-9.0.1/ /usr/local/tomcat #定义Tomcat所需环境变量 [root@tomcat soft] vim /etc/profile #插入如下内容 CATALINA_HOME=/usr/local/tomcat export CATALINA_HOME [root@tomcat soft] source /etc/profile #启动Tomcat [root@tomcat soft] /usr/local/tomcat/bin/startup.sh #测试tomcat http://192.168.23.27:8080/
6|6部署Jenkins
192.168.23.27执行
#官网下载jenkins
http://updates.jenkins-ci.org/download/war/2.319 #下载最新版 #部署jenkins.war到tomcat下 [root@tomcat soft] cp jenkins.war /usr/local/tomcat/webapps/ #注释 #jenkins密码忘了,可以重置它 #重置jenkins 关闭tomcat /usr/local/tomcat/bin/shutdown.sh rm -rf /usr/local/tomcat/webapp/jenkins* rm -rf ~/.jenkins* cp jenkins.war /usr/local/tomcat/webapps/ 启动tomcat即可访问jenkins #启动tomcat: 注意启动tomcat会自动解压webapps下的war包 [root@tomcat soft]# /usr/local/tomcat/bin/startup.sh
6|7登陆Jenkins
http://192.168.23.27:8080/jenkins
如果访问报错执行
有两种方式解决:
1.卸载原来的jdk,安装官方的jdk版本。
2.在服务器额外配置插件,根据自己服务器的版本安装,如下:
#Ubuntu9以上
apt-get install ttf-dejavu #CentOS 6 yum install dejavu-sans-fonts #CentOS 7 yum install fontconfig
添入以下文件密码到上图页面中
[root@tomcat soft]# cat /root/.jenkins/secrets/initialAdminPassword
bdc164a2206145668fc378ca0ba7a1af #点击继续
选择suggested的插件进行下载
等待安装完成
7|0Jenkins插件管理
7|1简介
我们配置的是 git + maven 方式的 自动化部署 所以git和maven的相关插件是必须的 还有一个ssh用于机器间的文件传送
7|2安装插件Deploy to container
-
作用
- 支持自动化将代码部署到tomcat容器
-
安装过程
- 系统管理-->插件管理-->可选插件-->过滤Deploy to container-->勾选,点击下边的按钮:直接安装,这个可能时间较久,等待即可
7|3安装插件Maven Integration
- 作用
- jenkins 利用maven编译,打包,所需插件
7|4安装git相关3个插件
- GIT plugin
- GitHub Authentication
- GitHub Branch Source
- GitHub Organization Folder
安装过程中如可选插件里没有,就多个模块点一点可能已经安装过了
7|5安装插件:Publish Over SSH
7|6检查错误配置
左侧:点击“系统管理”
如果有“编码问题”错误,在Tomcat–>conf–>server.xml文件中修改即可
[root@localhost ~]# head -1 /usr/local/tomcat/conf/server.xml
<?xml version="1.0" encoding="UTF-8"?> 如果有”反向代理设置有误“错误,请忽略
8|0Jenkins系统设置
-
注意
- 这里没有强调的都设置为默认即可
-
路径
- 系统管理->(全局工具配置)Global Tool Configuration,配置jdk,git,maven的根目录
8|1配置jdk目录
8|2配置git目录
8|3配置maven
8|4关于重启jenkins
- http://server_ip:8080/jenkins/restart
- http://server_ip:8080/jenkins/exit
- http://server_ip:8080/jenkins/reload
9|0SSH 设置
9|1简介
(192.168.23.27)jinkens服务器上的maven将开发产生的*.war包,通过SSH自动推送到远程tomcat 服务器上(192.168.23.28),需要手工配置ssh key,配合自动化推送
- 192.168.23.27 是jenkins
- 192.168.23.28 是tomcat网站服务器,代表业务服务器
9|2jenkins服务器准备秘钥认证
[root@jenkins local]# ssh-keygen #一直回车
[root@jenkins local]# ssh-copy-id 192.168.23.28 #把密钥推送到192.168.23.28上 注意这里的192.168.23/28是一台tomcat网站服务器。什么都不用安装,接到代码即可 [root@jenkins local]# ssh root@192.168.23.28 #测试连接成功 Last login: Wed Nov 23 11:40:18 2022 from 192.168.23.164 [root@bogon ~]#
9|3在jenkins上配置ssh信息
准备SSH私钥
[root@bogon ~]# cat /root/.ssh/id_rsa
#复制cat出来的所有内容,粘贴到下一步页面上的key中。 -----BEGIN RSA PRIVATE KEY----- MIIEowIBAAKCAQEA0i1q/vpqEJStSCjks7wO+aKtNFxKVbhhgwW6C14MdG6aQ9J2 OnwQGwBsW92ID+2cMom/lAdwf68zK3A71zgWIGvcBNhNujPTezyKSfdZIww2qymc zW81J1bPS1/V3EmbTewmuJvEpP8yaSAYNjIcMX2YW33DuO9/p18xV0tnDuzLNRpk MiPfjL4Ya8cc+fpe8rUNDbHMIbLNd2hKTF79kB+95bNT8GWCVP8NtN6K1qnyryQd /aSiEQHhUu1NTBbkjCeGVBmy+0rfk33viDK1dcg749FCiVv0iFqre439eZnuOtGj bL1B62YFjs24HVGmQJrJmU0GIidSXD5z8Cl0fQIDAQABAoIBAD3SSC+Z3srjwJiC FstbXJhHJmVJZEAUjPIqJBAl6MnyooOii04moeIfXMAkyFnPDWu8ItLa4VddZFK5 n5BtmeyNbVkreqlzhxgvtYmOLPTnKcls4wd2V48rtKu6E8DJEdp4xOb2QoA55E0R uK1wTeSsybzXoFNsdwL3OB8yOa0kppYDcHRO0ke+MCZoE05g6L+4DNFSGxm6UQTd lO+Hx497x2kfCCMh3hPrQvBrVGjVABNlHI4/DXDCMvhbKvNWI7sxGwZgEHd8FeR5 UTZ0xRA60LwBKnm+0eREY+Fpb1q1Pzz8KI91LTfXpJBjyHpv5LLjANV6+koKR3Mo nzDdGy0CgYEA/h4eWey5XixZ3UaMt9W0ubFM/k+9A6ztago0ZqFHY84lWIVJqvsF MY6AAnHGPNk7FG3BfyJOLinEcuGSQ2PavgfKVArFjhxPt1eGmhfse1MuZs/nzYJP fhuiy0bxNZAXvdbVAtpGbRByiP4iaP6/9+0bMJQiaftvXGayepys5AsCgYEA07v5 0O5f8J3ApgP8LocqeQmsNCxyiiy/ZwXm/K++dqsUKScd2pjky3WkhbIBrXwemsmR 5fQcOUmcOmrYt538IFZgl99kcNbLEKQy2/SY4373JuKrtjGsfghzMHWq1Za2a5cO hYMuq/4DKjpse5dprfh0RgbNadiY/5g9cbeCFpcCgYBqGWMswpTmx/fBVqp8OwMZ IPj3mY1ekn4R7y7PxvjKqBCZtBT9CY+ykD/MRXqyfzSWo/jNPyKLTa8TFDGAZ5m2 DASjMFgprJJwB2BQyDpZh3JxRM8Q1B6ilaFT5EvjxETVY3ROm5oaAWsA3bK6SdsX Be17S+5Od8eYOdy9KttY3wKBgQCj60ZHIxSxYl/P5wvoNYqDNCLWLYbrRCNWLfKa s7A/jMjJ51escWvHvCcHvjygQ5Qp/11tamQjUcKaUze+R5f2rQiQ60iGNzP0iTo6 oQ1wKk5LE3ceUSyaUg5jeOUuAETv3H1IjbunObrXiW2M7TbKkavqvr9ub1pbnlAL ZqdWtwKBgH6TXyNXjQcloU/kVh2d42gLp8lQ587mODl3G6wn7p9EKzDaEYXactj4 rISNiJCw0G5Sorzry8e6QDBYZSrQes2AxKL5xAX4gs58fJwnbvKvCzpubASM05ml ym/eHttFhRFtrYudgjsuyag1wJ8Ua1GzI1ess8/t32eHwLqmU6lR -----END RSA PRIVATE KEY-----
进入jenkins系统设置
10|0新建任务
10|1创建任务
定义名称和类型
10|2设置maven
公有git仓库
10|3选择版本控制器和仓库地址
https://github.com/bingyue/easy-springmvc-maven
注意:如果是私有仓库,这里需要建立credentials身份认证
10|4设置触发器(保持默认)
10|5设置构建(编译打包)
手动添加Goals and options clean package -Dmaven.test.skip=true
11|0构建后操作
在构建后设置中 选择:(send build artifacts over ssh)通过SSH发送构建工件
-
说明:
-
name ssh server 因为之前的配置会默认出现tomcat业务服务器的名字
-
source file
- target/.war 构建之后,在jenkins服务器上是可以自动看到war包的,(该路径不需要创建) ls /root/.jenkins/jobs/testjob1/builds/target/.war
-
Remove prefix 自动删除路径前缀(不需要创建路径前缀)
-
Remote directory tomcat业务服务器上的路径,需要提前在192.168.23.28(tomcat)上创建该目录。用来存放网站源代码。(需要后台创建)
[root@bogon local]# mkdir /jenkins/war -p
-
Exec command tomcat(192.168.0.109)在接收到源码之后的自定义动作。
比如:将源码拷贝到网站的主目录(/jenkins),并执行一些其他操作如重启服务器等(或创建文件touch)(需要后台创建) -
[root@bogon local]# mkdir /jenkins/sh
[root@bogon local]# vi /jenkins/sh/1.sh touch /123.com [root@bogon local]# chmod +x /jenkins/sh/1.sh [root@bogon local]# chmod +x /jenkins/sh/
-
12|0开始构建
查看构建结果
观察tomcat网站服务器,代码和脚本
[root@bogon ~]# ls /jenkins/
sh war [root@bogon ~]# ls /jenkins/war/ easy-springmvc-maven.war #easy-springmvc-maven.war 就是推送过来的网站源码了 [root@bogon ~]# ls /123.com /123.com
__EOF__

本文链接:https://www.cnblogs.com/Jqazc/p/16915312.html
关于博主:评论和私信会在第一时间回复。或者直接私信我。
版权声明:本博客所有文章除特别声明外,均采用 BY-NC-SA 许可协议。转载请注明出处!
声援博主:如果您觉得文章对您有帮助,可以点击文章右下角【推荐】一下。您的鼓励是博主的最大动力!
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· 开源Multi-agent AI智能体框架aevatar.ai,欢迎大家贡献代码
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· AI技术革命,工作效率10个最佳AI工具