当前位置: 首页 > news >正文

day070-Jenkins自动化与部署java、前端代码

文章目录

  • 0. 老男孩思想-四种性格的特点
  • 1. Jenkins自动化-webhook(钩子)
    • 1.1 Jenkins配置
    • 1.2 GitLab配置
      • 1.2.1 开启gitlab内网域名解析
      • 1.2.2 配置webhook和token
  • 2. 防止重复构建
  • 3. 部署java代码
    • 3.1 部署maven
    • 3.2 maven编译测试
    • 3.3 前端页面配置maven
    • 3.4 推送代码到gitlab
    • 3.5 创建Jenkins-maven任务
    • 3.6 发布步骤(Post Steps)
  • 4. 部署前端代码
    • 4.1 部署nodejs环境
    • 4.2 编译前端代码
      • 4.2.1 前端代码
      • 4.2.2 下载前端依赖
      • 4.2.3 编译前端代码
      • 4.2.4 nginx展示页面
    • 4.3 推送代码
    • 4.4 创建任务
  • 5. 思维导图

0. 老男孩思想-四种性格的特点

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

1. Jenkins自动化-webhook(钩子)

  • 开发写的代码需要立即看到执行结果,而不是需要手动的设置Jenkins再去部署代码
  • 这就需要一个触发器,当前开发人员将代码发布到代码仓库后,仓库可以通知Jenkins代码已更新,并且去部署代码
  • 这个过程需要webhook来实现

在这里插入图片描述

1.1 Jenkins配置

  • 新建项目

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

1.2 GitLab配置

1.2.1 开启gitlab内网域名解析

  • 默认gitlab进制内网域名解析,现在需要开启

在这里插入图片描述

在这里插入图片描述

1.2.2 配置webhook和token

在这里插入图片描述

在这里插入图片描述

  • gitlab和Jenkins需要添加域名解析

在这里插入图片描述

2. 防止重复构建

防⽌重复运⾏jenkins任务造成web节点重复部署代码

  • 每次git commit会有Id,Jenkins判断当前Id与之前Id是否相同即可
  • 相同则表示代码未修改,则不运行任务

在这里插入图片描述

在这里插入图片描述

  • 在编译的Shell脚本开头添加cid判断:
#0.防止重复构建
if [ "${GIT_COMMIT}" == "${GIT_PREVIOUS_SUCCESSFUL_COMMIT}" ];thenecho "重复构建"echo "当前CID: ${GIT_COMMIT}"echo "上一次成功运行的CID: ${GIT_PREVIOUS_SUCCESSFUL_COMMIT}"exit 0
fi
  • 运行任务

在这里插入图片描述

3. 部署java代码

  • java代码需要通过maven编译,打包成jar包或war包
  • 运行代码前需要下载相关maven依赖,需要部署maven下载源
  • maven结构代码的配置文件:pom.xml

3.1 部署maven

  • 官方下载地址:[Maven Releases History – Maven](https://maven.apache.org/docs/history.html)
  • 软件包:apache-maven-3.9.6-bin.tar.gz 链接: https://pan.baidu.com/s/1B5pQ5gN3F43epa6hFXbPCg?pwd=xe8b 提取码: xe8b
mkdir -p /app/tools/
tar xf apache-maven-3.9.6-bin.tar.gz -C /app/tools/
ln -s /app/tools/apache-maven-3.9.6 /app/tools/maven
# 添加环境变量
echo 'export PATH=/app/tools/maven/bin/:$PATH' >>/etc/profile
source /etc/profile
mvn --version
  • 修改maven的默认下载源,使用阿里云的镜像源:[maven镜像_maven下载地址_maven安装教程-阿里巴巴开源镜像站](https://developer.aliyun.com/mirror/maven?spm=a2c6h.13651102.0.0.7be81b11FtqZkj)
    • 配置文件:/app/tools/maven/conf/settings.xml

在这里插入图片描述

在这里插入图片描述

3.2 maven编译测试

  • 测试代码:hello-world-war-src-code.zip 链接: https://pan.baidu.com/s/1Sv7tr09T5-5cMA4TF1eAzg?pwd=errp 提取码: errp
  • maven依赖的默认下载路径:~/.m2/repository
[root@devops-jenkins /app/code/hello_world]# ll
总用量 8
drwxr-xr-x 2 root root  29  523  2014 dist
-rw-r--r-- 1 root root 930  523  2014 pom.xml
-rw-r--r-- 1 root root 213  523  2014 README.md
drwxr-xr-x 3 root root  18  523  2014 src
# 在pox.xml目录下编译代码
[root@devops-jenkins /app/code/hello_world]# mvn clean package
[INFO] Scanning for projects...
[INFO] 
[INFO] --------------------< com.efsavage:hello-world-war >--------------------
……
# 编译成war包
[root@devops-jenkins /app/code/hello_world/target]# ll
总用量 4
drwxr-xr-x 4 root root   54  88 08:17 hello-world-war-1.0.0
-rw-r--r-- 1 root root 2419  88 08:17 hello-world-war-1.0.0.war
drwxr-xr-x 2 root root   28  88 08:17 maven-archiver
  • 将war包传递到web03,使用tomcat打开:
[root@devops-jenkins /app/code/hello_world/target]# scp hello-world-war-1.0.0.war web03:/app/tools/tomcat/webapps/ROOT.war

在这里插入图片描述

3.3 前端页面配置maven

在这里插入图片描述

在这里插入图片描述

3.4 推送代码到gitlab

  • 新建项目仓库

在这里插入图片描述

  • 提交并推送代码
# 删除自带的git仓库信息
rm .git
git config --global user.name "Administrator"
git config --global user.email "admin@example.com"
git init 
git remote add origin git@gitlab.oldboy.cn:gitlab-instance-b39d975d/hello-world.git
git add .
git commit -m "初始代码"
git tag -a "v1.0" -m "v1.0"
git push -u origin --all
git push --tags

在这里插入图片描述

3.5 创建Jenkins-maven任务

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

  • Jenkins需要将war包发布到web03上,需配置密钥认证

在这里插入图片描述

3.6 发布步骤(Post Steps)

在这里插入图片描述

echo $WORKSPACE
echo "#####1.打包#####"echo "#####2.分发#####"
##2.ansible 
ip_list=10.0.0.9for ip in $ip_list
doscp ./target/hello-world-war-*.war  root@$ip:/opt/ROOT.war#if
doneecho "#####3.部署#####"
#1.ssh ip 命令
#2.ansible for pp in $ip_list
dossh root@$pp  <<EOF\mv /opt/ROOT.war /app/tools/tomcat/webapps/ROOT.war;/app/tools/tomcat/bin/shutdown.sh ;sleep 3;/app/tools/tomcat/bin/startup.sh; 
EOF
doneecho "#####4.通知#####"
  • 运行任务
  • 解决中文乱码问题:
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<title>Hello World!</title>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<style>h1 { font-family: "Microsoft YaHei", "SimSun", sans-serif; }
</style>
</head>
……

在这里插入图片描述

4. 部署前端代码

  • 前端依赖的底层环境:Node.js

    • 下载地址:[Node.js — Download Node.js®](https://nodejs.org/zh-cn/download)

    在这里插入图片描述

  • Node.js的包管理工具:npm

  • 前端项目的核心配置文件:package.json

4.1 部署nodejs环境

  • nodejs软件包:node-v14.19.3-linux-x64.tar.xz等2个文件 链接: https://pan.baidu.com/s/1mkLbEAF24QNQkFozBuvGwA?pwd=jiry 提取码: jiry
[root@devops-jenkins ~]# tar xf node-v16.19.1-linux-x64.tar.xz -C /app/tools/
[root@devops-jenkins ~]# ln -s /app/tools/node-v16.19.1-linux-x64 /app/tools/node
[root@devops-jenkins ~]# chown -R root:root /app/tools/node/
[root@devops-jenkins ~]# echo "export PATH=/app/tools/node/bin:$PATH" >> /etc/profile
[root@devops-jenkins ~]# source /etc/profile
[root@devops-jenkins ~]# node -v
v16.19.1
[root@devops-jenkins ~]# npm -v
8.19.3
# 设置npm下载源
[root@devops-jenkins ~]# npm config set registry https://registry.npmmirror.com
# 下载源配置文件
[root@devops-jenkins ~]# cat .npmrc 
registry=https://registry.npmmirror.com/

4.2 编译前端代码

4.2.1 前端代码

  • 前端代码:china-ex-main.zip 链接: https://pan.baidu.com/s/1ieP8_PEaCPh8qEMNL6Yr7Q 提取码: ku3a

在这里插入图片描述

4.2.2 下载前端依赖

  • 当前目录下要有package.json文件
  • npm install

在这里插入图片描述

4.2.3 编译前端代码

  • npm run build

在这里插入图片描述

4.2.4 nginx展示页面

  • web01节点:
mkdir -p /app/code/china
cd /app/codechina/
scp 10.0.0.72:/app/code/china/china-ex-main/dist/* .
cd /etc/nginx/conf.d/
cp bird.oldboy.cn.conf china.oldboy.cn.conf 
vim china.oldboy.cn.conf -> :%s#bird#china#g
nginx -t
systemctl reload nginx.service 
  • 主机配置hosts

在这里插入图片描述

在这里插入图片描述

4.3 推送代码

  • 创建gitlab仓库

在这里插入图片描述

  • 推送代码
git config --global user.name "Administrator"
git config --global user.email "admin@example.com"
git init
git remote add origin git@gitlab.oldboy.cn:gitlab-instance-b39d975d/china.git
git add .
git commit -m "初始代码"
git tag -a "v1.0" -m "v1.0"
git push origin --all
git push --tags

在这里插入图片描述

4.4 创建任务

在这里插入图片描述

  • 构建步骤
#0.vars
CODE_NAME=china.tar.gz
CODE_TMP_DIR=/opt/
CODE_DIR=/app/code/china/
IP_ADDRS="10.0.0.7 "# 编译
export PATH=/app/tools/node/bin:/app/tools/maven/bin/:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/root/bin:/root/bin
npm install
npm run build#1.打包
cd dist/
tar zcf ${CODE_TMP_DIR}${CODE_NAME} .#2.分发-后期交给ansible copy模块/unarchive 模块
for ip in ${IP_ADDRS}
doscp ${CODE_TMP_DIR}${CODE_NAME} $ip:${CODE_TMP_DIR}
done#3.部署-后期交给ansible
#(未涉及到) tag标签
#代码直接解压到/app/code/bird/目录下即可.
for ip in ${IP_ADDRS}
dossh $ip <<EOFrm -fr $CODE_DIR mkdir -p ${CODE_DIR}tar xf ${CODE_TMP_DIR}${CODE_NAME} -C ${CODE_DIR}
EOF
done
#4.日志记录
#5.通知
  • 运行

在这里插入图片描述

5. 思维导图

https://kdocs.cn/join/gpuxq6r?f=101\r\n邀请你加入共享群「老男孩教育Linux运维99期-孙克旭」一起进行文档协作

http://www.dtcms.com/a/320709.html

相关文章:

  • linux安装mysql8.0,二进制码安装
  • 《Graph machine learning for integrated multi-omics analysis》
  • ChipCamp探索系列 -- 1. Soft-Core RISC-V on FPGA
  • 【全栈自动驾驶与异构加速】系统学习计划
  • React 状态管理入门:从 useState 到复杂状态逻辑
  • 【MongoDB】查询条件运算符:$expr 和 $regex 详解,以及为什么$where和$expr难以使用索引
  • 使用pybind11封装C++API
  • HTML <picture> 元素:让图片根据设备 “智能切换” 的响应式方案
  • 数据结构(16)排序(上)
  • 时序数据库-涛思数据库
  • 6.Linux 系统上的库文件生成与使用
  • Linux 内核发包流程与路由控制实战
  • 医防融合中心-智慧化慢病全程管理医疗AI系统开发(上)
  • 後端開發技術教學(三) 表單提交、數據處理
  • 排序知识总结
  • 五、mysql8.0在linux中的安装
  • 引领云原生时代,华为云助您构建敏捷未来
  • php防注入和XSS过滤参考代码
  • Orange的运维学习日记--35.DNS拓展与故障排除
  • 31-数据仓库与Apache Hive-Insert插入数据
  • 专利服务系统平台|个人专利服务系统|基于java和小程序的专利服务系统设计与实现(源码+数据库+文档)
  • 代数系统的一般概念与格与布尔代数
  • 云平台运维工具 ——Azure 原生工具
  • 二倍精灵图的做法
  • Jetpack Compose 动画全解析:从基础到高级,让 UI “动” 起来
  • 网络基础——网络层级
  • VSCode 禁用更新检查的方法
  • 并查集算法的一个实战应用详解
  • 基于Flask + Vue3 的新闻数据分析平台源代码+数据库+使用说明,爬取今日头条新闻数据,采集与清洗、数据分析、建立数据模型、数据可视化
  • 认识爬虫 —— 正则表达式提取