Jenkins创建Mvn风格项目

Jenkins创建Mvn风格项目

jenkins的构建风格有几种

1)Freestyle自由风格

2)Maven风格(构建java代码)

3)pipeline流水线风格

Maven介绍

maven是编译构建java代码的工具

Maven是一个项目管理和综合工具。Maven提供给开发人员构建一个完整的生命周期框架。
开发团队可以自动完成该项目的基础设施建设,Maven使用标准的目录结构和默认构建生命周期。
Apache的开源项目主要服务于JAVA平台的构建、依赖管理、项目管理。
Project Object Model,项目对象模型。通过xml格式保存的pom.xml文件。该文件用于管理:源代码、配置文件、开发者的信息和角色、问题追踪系统、组织信息、项目授权、项目的url、项目的依赖关系等等。
该文件是由开发维护,我们运维人员可以不用去关心。

C写的代码:nginx,MySQL

  • make
  • cmake
  • gmake

Java代码:

  • maven
  • ant

java代码上线流程

# 1.java开发将代码传到gitlab

# 2.运维将java代码从gitlab中拉下来(自动化:Jenkins拉取)

# 3.代码质量检测(审核等...)

# 4.代码编译
    - maven
    - ant

# 5.发布代码
    - 灰度
    - 蓝绿
    - 滚动

mvn项目创建前准备

gitlab创建Java项目

image-20230828105450019

[root@gitlab hello-world-war]# git remote remove origin
[root@gitlab hello-world-war]# git remote add origin git@gitlab.driverzeng.com:root/hello-word.git

[root@gitlab hello-world-war]# git add .
[root@gitlab hello-world-war]# git commit -m 'v5.0'
[root@gitlab hello-world-war]# git tag -a v5.0 -m v5.0
[root@gitlab hello-world-war]# git push --all
[root@gitlab hello-world-war]# git push --tag

在gitlab上安装服务

[root@gitlab hello-world-war]# yum install -y maven

# 修改maven配置文件
[root@gitlab hello-world-war]# 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>

# 编译(mvn clean && mvn package)
[root@gitlab hello-world-war]# #mvn clean && mvn package
[root@gitlab hello-world-war]# mvn clean package

在web上安装服务

[root@web01 ~]# yum install -y tomcat

# 启动服务
[root@web01 ~]# systemctl start tomcat

使用jenkins创建mvn风格项目

image-20230828112602519

image-20230828164752533

# 安装maven
[root@jenkins plugins]# yum install -y maven

# 修改maven配置文件
[root@gitlab hello-world-war]# 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>

image-20230828113050160

image-20230828113641841

image-20230828113703714

image-20230828120230001

image-20230828120242932

image-20230828120307818

## 创建脚本
# 版本:
version=$(awk -F '[<> ]' 'NR==6{print $3}' ${WORKSPACE}/pom.xml)
his='/hello_version'
scp ${WORKSPACE}/target/hello-world-war-${version}.war root@172.16.1.7:${his}
ssh root@172.16.1.7 "unzip ${his}/hello-world-war-${version}.war -d ${his}/hello-world-war-${version}"
ssh root@172.16.1.7 "rm -f /usr/share/tomcat/webapps/ROOT"
ssh root@172.16.1.7 "ln -s ${his}/hello-world-war-${version} /usr/share/tomcat/webapps/ROOT"
ssh root@172.16.1.7 "systemctl restart tomcat"

操作步骤

[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 '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

image-20230828173805110

image-20230828173814318

image-20230828173820972

jenkins变量

\1. GIT_COMMIT 当前版本提交产生的哈希唯一值
\2. GIT_PREVIOUS_SUCCESSFUL_COMMIT 已经提交过的版本的哈希唯一值
使用以上两个值做比较,如果已提交则退出,如果没有提交过则继续执行构建,更改脚本做判断

if [ "$deploy_env" == "deploy" ];then
  if [ "$GIT_COMMIT" == "$GIT_PREVIOUS_SUCCESSFUL_COMMIT" ];then
    echo "构建失败该 $git_version 版本号已部署"
  else
  main
  fi
elif [ "$deploy_env" == "rollback" ];then
    ln_html
fi

使用钩子创建mvn风格项目(jenkins前半部分除去开启钩子部分可用于参数化构建)

image-20230828174008603

image-20230828174357140

image-20230828174433377

image-20230828174448758

# URL
http://10.0.0.92:8080/project/hello-world-maven-webhock

# token
f949036aa36c5169bf65fbb09803f6d0

image-20230828182059165

# 版本:
version=$(awk -F '[<> ]' 'NR==6{print $3}' ${WORKSPACE}/pom.xml)
his='/hello_version'
ssh_user=root
ssh_port=22
dev=7
test=8
prod=9

for num in ${!env};do
scp ${WORKSPACE}/target/hello-world-war-${version}.war ${ssh_user}@172.16.1.$num:${his}
ssh -o StrictHostKeyChecking=no -o BatchMode=yes ${ssh_user}@172.16.1.$num "unzip -n ${his}/hello-world-war-${version}.war -d ${his}/hello-world-war-${version}"
ssh ${ssh_user}@172.16.1.$num "rm -f /usr/share/tomcat/webapps/ROOT"
ssh ${ssh_user}@172.16.1.$num "ln -s ${his}/hello-world-war-${version} /usr/share/tomcat/webapps/ROOT"
ssh ${ssh_user}@172.16.1.$num "systemctl restart tomcat"
done

Gitlab上进行钩子配置

image-20230828102046791

image-20230828102330699

image-20230828174728661

image-20230828174825909

image-20230828174847122

使用freestyle发布java代码

其余步骤与freestyle自由风格中的参数化构建无异只需要修改脚本来适用于java代码即可,代码如下

# 版本:
version=$(awk -F '[<> ]' 'NR==6{print $3}' ${WORKSPACE}/pom.xml)
his='/hello_version'
ssh_user=root
ssh_port=22
dev=7
test=8
prod=9
cd ${WORKSPACE} && mvn clean package
for num in ${!env};do
scp ${WORKSPACE}/target/hello-world-war-${version}.war ${ssh_user}@172.16.1.$num:${his}
ssh -o StrictHostKeyChecking=no -o BatchMode=yes ${ssh_user}@172.16.1.$num "unzip -n ${his}/hello-world-war-${version}.war -d ${his}/hello-world-war-${version}"
ssh ${ssh_user}@172.16.1.$num "rm -f /usr/share/tomcat/webapps/ROOT"
ssh ${ssh_user}@172.16.1.$num "ln -s ${his}/hello-world-war-${version} /usr/share/tomcat/webapps/ROOT"
ssh ${ssh_user}@172.16.1.$num "systemctl restart tomcat"
done

jenkins 角色管理项目关联视图

image-20230829092814172

image-20230829092843395

image-20230829154512244

image-20230829154541328

image-20230829154555548

暂无评论

发送评论 编辑评论


				
|´・ω・)ノ
ヾ(≧∇≦*)ゝ
(☆ω☆)
(╯‵□′)╯︵┴─┴
 ̄﹃ ̄
(/ω\)
∠( ᐛ 」∠)_
(๑•̀ㅁ•́ฅ)
→_→
୧(๑•̀⌄•́๑)૭
٩(ˊᗜˋ*)و
(ノ°ο°)ノ
(´இ皿இ`)
⌇●﹏●⌇
(ฅ´ω`ฅ)
(╯°A°)╯︵○○○
φ( ̄∇ ̄o)
ヾ(´・ ・`。)ノ"
( ง ᵒ̌皿ᵒ̌)ง⁼³₌₃
(ó﹏ò。)
Σ(っ °Д °;)っ
( ,,´・ω・)ノ"(´っω・`。)
╮(╯▽╰)╭
o(*////▽////*)q
>﹏<
( ๑´•ω•) "(ㆆᴗㆆ)
😂
😀
😅
😊
🙂
🙃
😌
😍
😘
😜
😝
😏
😒
🙄
😳
😡
😔
😫
😱
😭
💩
👻
🙌
🖕
👍
👫
👬
👭
🌚
🌝
🙈
💊
😶
🙏
🍦
🍉
😣
Source: github.com/k4yt3x/flowerhd
颜文字
Emoji
小恐龙
花!
上一篇
下一篇