文章目录
展开jenkins的构建风格有几种?
- freestyle自由风格
- maven风格(构建Java代码)
- pipeline流水线风格
Maven介绍
maven是编译构建Java代码的工具
Maven是一个项目管理和综合工具。Maven提供给开发人员构建一个完整的生命周期框架。开发团队可以自动完成该项目的基础设施建设,Maven使用标准的目录结构和默认构建生命周期。Apache的开源项目主要服务于JAVA平台的构建、依赖管理、项目管理。Project Object Model,项目对象模型。通过xml格式保存的pom.xml文件。该文件用于管理:源代码、配置文件、开发者的信息和角色、问题追踪系统、组织信息、项目授权、项目的url、项目的依赖关系等等。该文件是由开发维护,我们运维人员可以不用去关心。
-
Maven风格
- pre steps 构建之前的操作 // 代码质量检测
- build 构建 // mvn clean package -Dxxx -Dxxx
- post steps 构建之后的操作 // 发布代码,邮件通知
编译JAVA代码的工具
比如nginx,make
比如MySQL,cmake、gmake
Java也有编译的工具
- Maven
- Ant
JAVA代码容器:
- tomcat
- resin
java代码上线流程
# 1.java开发将代码传到gitlab
# 2.运维将java代码从gitlab中拉下来(自动化:Jenkins拉取)
# 3.代码质量检测(审核等...)
# 4.代码编译
- maven
- ant
# 5.发布代码
- 灰度
- 蓝绿
- 滚动
gitlab创建Java项目
安装tomcat(web01)
[root@web01 conf.d]# yum install -y tomcat
手动部署,安装maven(gitlab)
[root@gitlab hello-world-war]# yum install -y maven
# 修改maven配置文件
[root@gitlab ~]# vim /etc/maven/settings.xml
<mirror>
<id>aliyunmaven</id>
<mirrorOf>*</mirrorOf>
<name>阿里云公共仓库</name>
<url>https://maven.aliyun.com/repository/public</url>
</mirror>
# 编译
[root@gitlab hello-world-war]# mvn clean package
## 编译完成后有个target目录
[root@gitlab hello-world-war]# ll
total 8
drwxr-xr-x 2 root root 29 May 23 2014 dist
-rw-r--r-- 1 root root 930 May 23 2014 pom.xml
-rw-r--r-- 1 root root 213 May 23 2014 README.md
drwxr-xr-x 3 root root 18 May 23 2014 src
drwxr-xr-x 5 root root 106 Aug 28 20:16 target
## 进入target目录会有.war的包
[root@gitlab hello-world-war]# cd target/
[root@gitlab target]# ll
total 4
drwxr-xr-x 4 root root 54 Aug 28 20:16 hello-world-war-1.0.0
-rw-r--r-- 1 root root 2402 Aug 28 20:16 hello-world-war-1.0.0.war
drwxr-xr-x 2 root root 28 Aug 28 20:16 maven-archiver
drwxr-xr-x 2 root root 6 Aug 28 20:16 surefire
## 将war包推到web服务器
[root@gitlab target]# scp hello-world-war-1.0.0.war 172.16.1.7:/root
## 进入tomcat站点目录
[root@web01 ~]# cd /usr/share/tomcat/webapps/
## 将war包移至站点目录
[root@web01 webapps]# mv /root/hello-world-war-1.0.0.war .
## 启动tomcat
[root@web01 webapps]# systemctl start tomcat
## 查看
[root@web01 webapps]# ll
total 4
drwxr-xr-x 4 tomcat tomcat 54 Aug 28 20:24 hello-world-war-1.0.0
-rw-r--r-- 1 root root 2402 Aug 28 20:23 hello-world-war-1.0.0.war
## 做软连接
[root@web01 webapps]# ln -s /usr/share/tomcat/webapps/hello-world-war-1.0.0 /usr/share/tomcat/webapps/ROOT
##或者low一点直接在webapps下mkdir ROOT 把解压完的 hello-world-war-1.0.0 移到ROOT目录下
## 访问页面10.0.0.7:8080
[root@web01 conf.d]# yum install -y tomcat
[root@gitlab hello-world-war]# yum install -y maven
# 修改maven配置文件
[root@gitlab ~]# vim /etc/maven/settings.xml
<mirror>
<id>aliyunmaven</id>
<mirrorOf>*</mirrorOf>
<name>阿里云公共仓库</name>
<url>https://maven.aliyun.com/repository/public</url>
</mirror>
# 编译
[root@gitlab hello-world-war]# mvn clean package
## 编译完成后有个target目录
[root@gitlab hello-world-war]# ll
total 8
drwxr-xr-x 2 root root 29 May 23 2014 dist
-rw-r--r-- 1 root root 930 May 23 2014 pom.xml
-rw-r--r-- 1 root root 213 May 23 2014 README.md
drwxr-xr-x 3 root root 18 May 23 2014 src
drwxr-xr-x 5 root root 106 Aug 28 20:16 target
## 进入target目录会有.war的包
[root@gitlab hello-world-war]# cd target/
[root@gitlab target]# ll
total 4
drwxr-xr-x 4 root root 54 Aug 28 20:16 hello-world-war-1.0.0
-rw-r--r-- 1 root root 2402 Aug 28 20:16 hello-world-war-1.0.0.war
drwxr-xr-x 2 root root 28 Aug 28 20:16 maven-archiver
drwxr-xr-x 2 root root 6 Aug 28 20:16 surefire
## 将war包推到web服务器
[root@gitlab target]# scp hello-world-war-1.0.0.war 172.16.1.7:/root
## 进入tomcat站点目录
[root@web01 ~]# cd /usr/share/tomcat/webapps/
## 将war包移至站点目录
[root@web01 webapps]# mv /root/hello-world-war-1.0.0.war .
## 启动tomcat
[root@web01 webapps]# systemctl start tomcat
## 查看
[root@web01 webapps]# ll
total 4
drwxr-xr-x 4 tomcat tomcat 54 Aug 28 20:24 hello-world-war-1.0.0
-rw-r--r-- 1 root root 2402 Aug 28 20:23 hello-world-war-1.0.0.war
## 做软连接
[root@web01 webapps]# ln -s /usr/share/tomcat/webapps/hello-world-war-1.0.0 /usr/share/tomcat/webapps/ROOT
##或者low一点直接在webapps下mkdir ROOT 把解压完的 hello-world-war-1.0.0 移到ROOT目录下
## 访问页面10.0.0.7:8080
优化一下
## 删除maven编译目录
[root@gitlab hello-world-war]# rm -fr /root/hello-world-war/target/
## 修改hello world代码
[root@gitlab webapp]# vim /root/hello-world-war/src/main/webapp/index.jsp
<html>
<head>
<title>Hello World!</title>
</head>
<body>
<h1>Hello World! v6.0</h1>
<p>
It is now
<%= new java.util.Date() %></p>
<p>
You are coming from
<%= request.getRemoteAddr() %></p>
</body>
## 编译是根据 pom.xml来编译的
[root@gitlab webapp]# cd /root/hello-world-war
[root@gitlab hello-world-war]# ll
total 8
drwxr-xr-x 2 root root 29 May 23 2014 dist
-rw-r--r-- 1 root root 930 May 23 2014 pom.xml
-rw-r--r-- 1 root root 213 May 23 2014 README.md
drwxr-xr-x 3 root root 18 May 23 2014 src
## 修改pom.xml文件
<version>1.0.0</version> -> <version>6.0.0</version>
## 编译
[root@gitlab hello-world-war]# mvn clean package
## 查看编译文件
[root@gitlab hello-world-war]# cd target/
[root@gitlab target]# ll
total 4
drwxr-xr-x 4 root root 54 Aug 28 19:57 hello-world-war-6.0.0
-rw-r--r-- 1 root root 2405 Aug 28 19:57 hello-world-war-6.0.0.war
drwxr-xr-x 2 root root 28 Aug 28 19:57 maven-archiver
drwxr-xr-x 2 root root 6 Aug 28 19:57 surefire
## 在web端创建一个历史版本的目录(web01)
[root@web01 webapps]# mkdir /hello_version
## 将war包推到历史版本目录
[root@gitlab target]# scp hello-world-war-6.0.0.war 172.16.1.7:/hello_version
## 解压war包(web01)
[root@web01 webapps]# cd /hello_version/
[root@web01 hello_version]# unzip hello-world-war-6.0.0.war -d hello-world-war-6.0.0
[root@web01 hello_version]# ll
total 4
drwxr-xr-x 4 root root 54 Aug 28 20:46 hello-world-war-6.0.0
-rw-r--r-- 1 root root 2403 Aug 28 20:41 hello-world-war-6.0.0.war
## 删除之前的1.0版本
[root@web01 hello_version]# rm -fr /usr/share/tomcat/webapps/ROOT
## 做软连接
[root@web01 hello_version]# ln -s /hello_version/hello-world-war-6.0.0 /usr/share/tomcat/webapps/ROOT
## 重启tomcat
[root@web01 hello_version]# systemctl restart tomcat
## 访问页面
使用jenkins创建mvn风格项目
# 安装maven
[root@jenkins ~]# yum install -y maven
# 修改maven配置文件
[root@gitlab ~]# vim /etc/maven/settings.xml
159 <mirror>
160 <id>aliyunmaven</id>
161 <mirrorOf>*</mirrorOf>
162 <name>阿里云公共仓库</name>
163 <url>https://maven.aliyun.com/repository/public</url>
164 </mirror>
## 查看java和maven家目录
[root@jenkins ~]# mvn -version
Apache Maven 3.0.5 (Red Hat 3.0.5-17)
Maven home: /usr/share/maven
Java version: 1.8.0_382, vendor: Red Hat, Inc.
Java home: /usr/lib/jvm/java-1.8.0-openjdk-1.8.0.382.b05-1.el7_9.x86_64/jre
Default locale: en_US, platform encoding: UTF-8
OS name: "linux", version: "3.10.0-1160.el7.x86_64", arch: "amd64", family: "unix"
## java 家目录/jer不需要填
## 版本
version=`awk -F '[><]' '/<version>/{print $3; exit}' ${WORKSPACE}/pom.xml`
history='/hello_version'
for ip in 7;do
scp ${WORKSPACE}/target/hello-world-war-${version}.war root@172.16.1.${ip}:${history}
ssh -o StrictHostKeyChecking=no -o BatchMode=yes root@172.16.1.${ip} "unzip -n ${history}/hello-world-war-${version}.war -d ${history}/hello-world-war-${version}"
ssh root@172.16.1.${ip} "rm -rf /usr/share/tomcat/webapps/ROOT"
ssh root@172.16.1.${ip} "ln -s ${history}/hello-world-war-${version} /usr/share/tomcat/webapps/ROOT"
ssh root@172.16.1.${ip} "systemctl restart tomcat"
done
[root@gitlab hello-world-war]# vim pom.xml
[root@gitlab hello-world-war]# vim src/main/webapp/index.jsp
[root@gitlab hello-world-war]# git add .
[root@gitlab hello-world-war]# git commit -m '7.0'
[master 7a4ce49] 7.0
2 files changed, 3 insertions(+), 3 deletions(-)
[root@gitlab hello-world-war]# git tag -a '7,0' -m '7.0'
[root@gitlab hello-world-war]# git push --all
Counting objects: 44, done.
Compressing objects: 100% (29/29), done.
Writing objects: 100% (44/44), 4.90 KiB | 0 bytes/s, done.
Total 44 (delta 11), reused 0 (delta 0)
remote:
remote: To create a merge request for master, visit:
remote: http://gitlab.wodeyumengouwo.com/root/hello-word/-/merge_requests/new?merge_request%5Bsource_branch%5D=master
remote:
To git@gitlab.wodeyumengouwo.com:root/hello-word.git
* [new branch] master -> master
[root@gitlab hello-world-war]# git push --tag
Counting objects: 5, done.
Compressing objects: 100% (5/5), done.
Writing objects: 100% (5/5), 646 bytes | 0 bytes/s, done.
Total 5 (delta 0), reused 0 (delta 0)
To git@gitlab.wodeyumengouwo.com:root/hello-word.git
* [new tag] 7,0 -> 7,0
* [new tag] v1.0 -> v1.0
* [new tag] v2.0 -> v2.0
* [new tag] v3.0 -> v3.0
* [new tag] v4.0 -> v4.0
- 访问网页
使用钩子创建mvn风格项目
http://10.0.0.92:8080/project/hello-word-maven-webhook
5d96999f7cc0466606795a6ebf6cc592
version=`awk -F '[><]' '/<version>/{print $3; exit}' ${WORKSPACE}/pom.xml`
history='/hello_version'
for ip in 7;do
scp ${WORKSPACE}/target/hello-world-war-${version}.war root@172.16.1.${ip}:${history}
ssh -o StrictHostKeyChecking=no -o BatchMode=yes root@172.16.1.${ip} "unzip -n ${history}/hello-world-war-${version}.war -d ${history}/hello-world-war-${version}"
ssh root@172.16.1.${ip} "rm -rf /usr/share/tomcat/webapps/ROOT"
ssh root@172.16.1.${ip} "ln -s ${history}/hello-world-war-${version} /usr/share/tomcat/webapps/ROOT"
ssh root@172.16.1.${ip} "systemctl restart tomcat"
done
Gitlab上进行钩子配置
[root@gitlab ~]# cd hello-world-war/
[root@gitlab hello-world-war]# vim src/main/webapp/index.jsp
[root@gitlab hello-world-war]# vim pom.xml
[root@gitlab hello-world-war]# mvn clean package
[root@gitlab hello-world-war]# git add .
[root@gitlab hello-world-war]# git commit -m '8.0'
[root@gitlab hello-world-war]# git tag -a '8.0' -m '8.0'
[root@gitlab hello-world-war]# git push --all
[root@gitlab hello-world-war]# git push --tag
jenkins角色关联项目关联视图
创建视图
创建用户
关联项目关联视图
- 安装插件:Role-based Authorization Strategy
- 在全局安全配置授权策略中选择role-based strategy
- 再返回系统管理中会有manage and assign roles的选项
- 切换dnf用户查看
Comments | NOTHING