jenkins环境搭建

安装centos系统

安装参考:https://blog.csdn.net/Zwq8023520/article/details/132272082
下载地址:
https://blog.csdn.net/qq_19734597/article/details/133851437

https://mirrors.aliyun.com/centos/7.9.2009/isos/x86_64/?spm=a2c6h.25603864.0.0.5f07f5adh07MED
注意事项:

  1. u盘需要格式化:选择默认文件系统即可
  2. invalid signature detected报错处理
1.选择重新启动,然后按住F1进入BIOS,进入到security选项卡
2.进入到secure Boot 将enabled改为disabled,按F10保存当前操作,然后选择重启
  1. dracut-initqueue timeout - starting timeout scripts报错处理
1.输入blkid命令查看U盘位置,type="ufat"前面的就是U盘位置/dev/sdb4
2.选择install centos?,按E
3.inst.stage2=hd:LABLE 修改为inst.stage2=hd:/dev/sdb4
4.按Ctrl+X进行重启

安装jenkins

下载jenkins

1. 下载地址:
官网:https://www.jenkins.io/
中文:https://www.jenkins.io/zh/
2. 最好下载最新版
因为update-center.json下载的是始终是最新的插件,和旧版本的Jenkins是不兼容的
3. Jenkins更换国内源,/root/.jenkins/hudson.model.UpdateCenter.xml文件修改url
 <url>http://mirror.xmission.com/jenkins/updates/update-center.json</url>
4. /root/.jenkins/updates/default.json修改域名
①把:“http://www.google.com/”全部替换成“http://www.baidu.com/”
②把:“https://updates.jenkins.io/download”全部替换成 “http://mirrors.tuna.tsinghua.edu.cn/jenkins”
5. 最新版需要安装最低jdk11
6. 启动
nohup java -jar jenkins.war --httpPort=8080 >/home/logs/jenkins/jenkins.log 2>&1 &

插件安装

1.汉化chinese,git等插件,默认都需要安装
2.如果安装失败,更换国内源和default.json修改域名

jenkins构建项目

参考:https://blog.csdn.net/xhmico/article/details/136535498

环境

1. 安装jdk11
2. 安装git
3. 安装apache-maven-3.8.8
4. 安装node-v16.20.2
5. 安装nginx-1.24.0
6. 安装redis-7.0.13

构建java项目

Build Steps:

# Execute shell 第一步打包
mvn clean package
# Execute shell 第二步执行脚本
/home/bin/ycgy-xcx-server.sh
#!/bin/sh

#进入主目录
cd /home/jyh/

# 判断进程是否存在,再启动
python_pid_cound=`ps -ef | grep java | grep ycgy-xcx-server | grep -v grep | awk '{print $2}' | wc -l`
python_pid=`ps -ef | grep java | grep ycgy-xcx-server | grep -v grep | awk '{print $2}'`

#mkdir /backup/`date +%Y%m%d%H`

#mv /home/java/admin.jar /backup/`date +%Y%m%d%H`

rm -rf /home/jyh/ycgy/ycgy-xcx-server.jar

mv /root/.jenkins/workspace/ycgy-xcx-server/start/target/ycgy-xcx-server.jar /home/jyh/ycgy/

if [ $python_pid_cound -eq 0 ];then
    echo '进程没启动,需要启动一下'
    BUILD_ID=dontKillMe # jenkins本地这机器要有这行
    nohup java -jar /home/jyh/ycgy/ycgy-xcx-server.jar &
else
    echo '进程已启动,先停止再启动一下'
    kill -9 $python_pid
    BUILD_ID=dontKillMe # jenkins本地这机器要有这行
    nohup java -jar /home/jyh/ycgy/ycgy-xcx-server.jar &
fi
echo 'ycgy-xcx-server 启动完成'

构建vue项目

源码管理:配置git地址等

Build Steps:执行sh脚本

nohup npm run dev >/dev/null 2>&1 &
用这种方式启动,一构建任务,jenkins就卡死,除非jenkins.war别用nohup启动
猜测构建时,sh脚本里面语句有问题,导致jenkins子线程被杀死
故采用nginx部署vue项目

# Execute shell

npm cache clean -f
cd /root/.jenkins/workspace/ycgy-admin-web
npm install
npm run build
rm -rf /home/jyh/ycgy/dist/*
cp -rf /root/.jenkins/workspace/ycgy-admin-web/dist/* /home/jyh/ycgy/dist
npm cache clean -f
cd /root/.jenkins/workspace/ycgy-admin-web-online
npm install
npm run build:prod
tar -czvf dist.tar.gz dist

ssh到服务器
Source files:dist.tar.gz
Remove prefix:留空
Remote directory:/home/jyh/ycgy/
Exec command:rm -rf /home/jyh/ycgy/dist/*
再连一遍ssh
Exec command:解压:tar -zxvf /home/jyh/ycgy/dist.tar.gz -C /home/jyh/ycgy/

nginx配置

1. cd /usr/local/nginx/conf
2. vi nginx.conf
3. 
server {
        listen       90;
        server_name  192.168.2.65;

        location / {
            root   /home/jyh/ycgy/dist;
            index  index.html index.htm;
            try_files $uri $uri/ /index.html;
        }
    }
加上try_files $uri $uri/ /index.html; 刷新时不会报404(
try_files 用于指定文件的查找规则,可以配置多个规则,会按顺序执行查找规则,若找到文件则中断查找并返回文件,若找不到则返回404响应)

构建nginx uniapp项目

1. # uniapp打包h5,只能用hbuilder工具,需手动打包,暂时没找到npm run build的打包方式
hbuilder工具打包步骤
2. 打开manifest.json,基础配置中重新获取AppId,Web配置修改运行的基础路径/h5/
3. 发行-> 网站-PC web或手机H5
cd /root/.jenkins/workspace/yshop-drink-uniapp/unpackage/dist/build/h5
rm -rf /home/jyh/yshop/h5/*
cp -rf /root/.jenkins/workspace/yshop-drink-uniapp/unpackage/dist/build/h5/* /home/jyh/yshop/h5/
 server {
        listen       80;
        server_name  localhost;
        
        location / {
            root   html;
            index  index.html index.htm;
        }

        location /h5/{
            alias /home/jyh/yshop/h5/;
            try_files $uri $uri/ /index.html last;
            add_header Access-Control-Allow-Origin *;
            add_header Access-Contro1-A11ow-Headers "Origin, X-Requested-With, Content-Type, Accept";
            add_header Access-Control-Allow-Methods "GET,POST, OPTIONS";
        }
}

安装wkhtmltopdf

  1. 下载地址:https://wkhtmltopdf.org/downloads.html
    需要连vpn,要不很慢

测试用html

<!DOCTYPE html>
<html>
<meta http-equiv="content-type" content="text/html;charset=utf-8">
<head>
    <title>测试 HTML</title>
</head>
<body>
    <h1>Hello, World!</h1>
    <p>这是一个用于测试 wkhtmltopdf 的 HTML 文件。</p>
</body>
</html>

wkhtmltopdf /Users/mac/soft/wkhtmltopdf/test.html /Users/mac/soft/wkhtmltopdf/test.pdf

macos 安装wkhtmltopdf

1. 乱码问题
加了<meta http-equiv="content-type" content="text/html;charset=utf-8">后,pdf中文不乱码

centos安装wkhtmltopdf

rpm -ivh 用于安装软件包。其中,-i 表示安装,-v 表示显示详细信息,-h 表示显示安装进度。
rpm -Uvh 用于升级软件包。其中,-U 表示升级,-v 表示显示详细信息,-h 表示显示安装进度

1. 安装命令:rpm -ivh wkhtmltox-0.12.6-1.centos7.x86_64.rpm
查看是否已安装:wkhtmltopdf -V
3. 错误:依赖检测失败:
        libX11 被 wkhtmltox-1:0.12.6-1.centos7.x86_64 需要
        libXext 被 wkhtmltox-1:0.12.6-1.centos7.x86_64 需要
        libXrender 被 wkhtmltox-1:0.12.6-1.centos7.x86_64 需要
        libjpeg 被 wkhtmltox-1:0.12.6-1.centos7.x86_64 需要
        xorg-x11-fonts-75dpi 被 wkhtmltox-1:0.12.6-1.centos7.x86_64 需要
        xorg-x11-fonts-Type1 被 wkhtmltox-1:0.12.6-1.centos7.x86_64 需要
4. 下载插件
yum install --downloadonly --downloaddir=/usr/soft/wktooltopdf/ fontconfig libX11 libXext libXrender libjpeg xorg-x11-fonts-75dpi xorg-x11-fonts-Type1
5. 安装
cd /usr/soft/wktooltopdf/
rpm -ivh --force --nodeps *.rpm
6. centos测试生成pdf
wkhtmltopdf /home/software/wkhtmltox/test.html /home/software/wkhtmltox/test.pdf
7. 乱码问题处理
把C:\Windows\Fonts\simsun.ttc(宋体)上传到服务器​​/usr/share/fonts/​​里

jenkins远程连接windows发布项目

1. 源码管理:配置git仓库地址
2. Build Steps:Execute shell,mvn clean打包
3. Build Steps:Send files or execute commands over SSH 上传jar并执行脚本

windows安装openSSH

windwos安装openSSH

jenkins连接windows时报错如下

jenkins HTTP ERROR 403 No valid crumb was included in the request
在这里插入图片描述

jenkins远程连接windows,传送文件时一直是Transferred 0 file(s)


出现这个的原因,Transfer Set Source files填写错误导致
Transfer Set Source files:需要上传的文件(注意:相对于工作区的路径。看后面的配置可以填写多个,默认用,分隔)
可以在页面看到workspace是ycgy-admin-server-online/,那这里的相对路径应该从这一层开始写,也就是ycgy-web-app/target/ycgy-admin-server.jar,注意开头不要带斜杠

Remove prefix:移除目录(只能指定Transfer Set Source files中的目录)

Remote directory:远程目录,这里如果填/,默认会创建jenkins目录

Exec command:把你要执行的命令写在里面

执行bat报错:ERROR: Exception when publishing, exception message [Exec exit status not zero. Status [9,009]]

在这里插入图片描述
在这里插入图片描述

windows执行bat脚本start-server.bat

echo hello

java -version

set port=8082
for /f "tokens=1-5" %%i in ('netstat -ano^|findstr ":%port%"') do taskkill /pid %%m -t -f

javaw -Xms512m -Xmx512m -Xmn512m -jar C:\jenkins\ycgy-admin-server.jar echo bye
:end

linux 安装mysql 8.0.28

1.下载:https://downloads.mysql.com/archives/community/

在这里插入图片描述

2.删除旧版本mysql

1.停止mysql服务
查看mysql状态:sudo systemctl status mysqld
停止mysql: sudo systemctl stop mysqld

2.删除原来安装的mysql
查询已安装的mysql: rpm -qa | grep -i mysql
删除原来安装的mysql: rpm -qa | grep -i -E mysql\|mariadb | xargs -n1 sudo rpm -e --nodeps

3.删除mysql相关的文件夹
查看mysql对应的文件夹:find / -name mysql
删除文件夹:rm -rf /usr/lib64/mysql等

4.安装新的mysql,进入MySQL安装文件所在目录下,运行下面命令行(注意安装的先后顺序,后面会依赖前面)
解压:tar -xvf mysql-8.0.28-1.el7.x86_64.rpm-bundle.tar 
rpm -ivh mysql-community-common-8.0.28-1.el7.x86_64.rpm
rpm -ivh mysql-community-client-plugins-8.0.28-1.el7.x86_64.rpm
rpm -ivh mysql-community-libs-8.0.28-1.el7.x86_64.rpm 
rpm -ivh mysql-community-client-8.0.28-1.el7.x86_64.rpm
rpm -ivh mysql-community-icu-data-files-8.0.28-1.el7.x86_64.rpm 
rpm -ivh mysql-community-server-8.0.28-1.el7.x86_64.rpm

***注意mysql8.0默认区分大小写,进行select查询时表的大小写会有区别。
vim /etc/my.cnf   //编辑my.cnf文件
在[mysqld]下面添加  lower_case_table_names=1
这一步的修改要在mysql8.0安装完成之后,第一次启动初始化之前,如果mysql初始化完成之后执行上述修改会导致mysql无法重新启动
如果初始化后才修改配置导致无法启动,可以按下面方法解决,但是仅限新安装mysql,否则老数据会丢失
systemctl stop mysqld   //停止mysql服务
rm -rf /var/lib/mysql    //删除mysql文件夹所有数据
systemctl start mysqld   //重启mysql服务
执行上面操作后,账号信息什么的都没有了,需要重新初始化
set global validate_password.policy=LOW;
set global validate_password.length=6; 
ALTER user 'root'@'localhost' IDENTIFIED BY '123456';

5. MySQL安装文件所在目录下,执行下面语句,初始化后会生成一个"初始密码"
mysqld --initialize --console
查看初始密码,命令查看(注:密码为"冒号空格"后面所有字符),后面的括号也是
grep 'temporary password' /var/log/mysqld.log

6.修改安装目录的所有者/所属组,使用户拥有访问MySQL文件夹的权限
chown -R mysql:mysql  /var/lib/mysql

7.启动mysql
systemctl start mysqld

8.初次登陆MySQL
mysql -uroot -p

9. 修改初始密码密码
mysql> ALTER USER USER() IDENTIFIED BY '密码'; 
修改完初始密码后,查看数据库,如果有则表示安装成功了,不修改初始密码,无法查看
show databases;

10.开启远程连接
1)先选择数据库
mysql> use mysql
2)修改root账号为远程登录
mysql> update user set host="%" where user="root";
3)刷新
mysql> flush privileges;

11.mysql忽略大小写
vim /etc/my.cnf
在[mysqld]节点下,加入一行: lower_case_table_names=1
重启mysql: systemctl restart mysqld

11. 如果远程连接不到
	关闭linux防火墙

        查看防火墙状态systemctl status firewalld

        临时关闭防火墙sudo systemctl stop firewalld(重启linux生效)

        临时打开防火墙sudo systemctl start firewalld(重启linux生效)

        关闭防火墙systemctl stop firewalld

        打开防火墙systemctl start firewalld

        永久关闭防火墙sudo systemctl disable firewalld

        永久打开防火墙sudo systemctl enable firewalld
如果是云服务器,需要在"控制台"放开对应端口

阿里云CentOS服务器默认过一段时间就自动断开SSH连接的解决方法

ClientAliveInterval 30
ClientAliveCountMax 3600

这两行的意思分别是
1 客户端每隔多少秒向服务发送一个心跳数据
2 客户端多少秒没有相应,服务器自动断掉连接

重启sshd服务
/bin/systemctl restart sshd.service

jenkins 分环境给项目打包

项目pom文件配置

1.配置文件修改
项目的resouces目录中新建conf目录,再在其中按照环境创建相应目录,这里创建开发环境dev、测试环境test,再将原本的application.properties文件分别拷贝一份到两个目录中,根据环境修改其中的配置项,最后删除原本的配置文件
2.pom文件修改
增加profiles
<profiles>
        <profile>
            <id>dev</id>
            <properties>
                <profile.env>dev</profile.env>
            </properties>
            <activation>
                <activeByDefault>true</activeByDefault>
            </activation>
        </profile>
        <profile>
            <id>prod</id>
            <properties>
                <profile.env>prod</profile.env>
            </properties>
        </profile>
    </profiles>

<build>标签中设置打包时资源文件路径,增加resources
<resources>
            <resource>
                <directory>${basedir}/src/main/resources</directory>
                <excludes>
                    <exclude>conf/**</exclude>
                </excludes>
            </resource>
            <resource>
                <directory>src/main/resources/conf/${profile.env}</directory>
            </resource>
        </resources>
注:${basedir}为当前子模块的根目录

打包命令
 mvn -DskipTests=true clean package -Pdev
 mvn -DskipTests=true clean package -Pprod

xxl job搭建

官网地址

1. 下载后,修改数据库地址,mvn clean package打包
2. 上传到服务器部署
nohup java -jar xxl-job-admin-2.4.2-SNAPSHOT.jar --httpPort=91 >/home/logs/xxljob/xxljob.log 2>&1 &
3. 应用服务:
yml中增加配置,参考官网,主要这几个是要改的
xxl.job.admin.addresses=http://192.168.2.xx:91/xxl-job-admin
### 执行器通讯TOKEN [选填]:非空时启用;
xxl.job.accessToken=default_token
### 执行器AppName [选填]:执行器心跳注册分组依据;为空则关闭自动注册
xxl.job.executor.appname=ycgy-admin-server

增加配置类XxlJobConfig:参考官网

报错:调度失败:执行器地址为空

原因一:执行器管理页面,未注册上
原因二:任务新增时,选择了未注册的执行器

linux 搭建ngrok

注册ngrok

https://dashboard.ngrok.com/signup

下载安装

https://dashboard.ngrok.com/get-started/setup/linux

linux搭建frp

中文文档地址

1. 	lscpu | grep Architecture
如果输出结果中包含 x86_64 或 i686,则表示系统的 CPU 架构是 AMD(或者是 x86 架构的 Intel
CPU)。如果输出结果中包含 armv7l、aarch64 或 arm64,则表示系统的 CPU 架构是 ARM

2.下载frp_0.58.0_linux_amd64.tar.gz
https://github.com/fatedier/frp/releases
上传到外网服务器和内网服务器,解压
tar -zxvf frp_0.58.0_linux_amd64.tar.gz

3.配置
https://blog.csdn.net/weixin_43922901/article/details/109261700
外网服务器配置
cd frp_0.58.0_linux_amd64/
vim frps.toml

#默认端口7000,就是客户端和服务端通信的端口
bindPort = 7000 
#访问web应用,域名+6001能访问前端地址,但是前端还需要访问内网后端,这一步没通
vhostHTTPPort = 6001

transport.tls.force = true
#服务端与客户端进行认证的,要保持一致
auth.token = "public"

#web管理控制台的端口、用户名和密码
webServer.addr = "0.0.0.0"
webServer.port = 7500
webServer.user = "admin"
webServer.password = "123456"

内网服务器配置
# 公网服务端的ip地址
serverAddr = "xxx"
# 公网服务端通信端口,与服务端配置文件的bindPort保持一致
serverPort = 7000

# 令牌,与公网服务端保持一致
auth.token = "public"

# 一个[[proxies]]表示要代理的一个端口的应用,可以有多个
[[proxies]]
name = "web"
type = "http"
localPort = 90
customDomains = ["xxx服务器对应的域名"]

[[proxies]]
name = "ssh"
type = "tcp"
localIP = "127.0.0.1"
localPort = 22
remotePort = 6000

创建service服务

外网服务器

# 创建并编辑该文件
sudo vim /etc/systemd/system/frps.service

[Unit]
# 服务名称,可自定义
Description = frp server
After = network.target syslog.target
Wants = network.target

[Service]
Type = simple
# 启动命令,改为实际存放frps的路径
ExecStart = /home/software/frp_0.58.0_linux_amd64/frps -c /home/software/frp_0.58.0_linux_amd64/frps.toml

[Install]
WantedBy = multi-user.target

# 启动frp
sudo systemctl start frps
# 停止frp
sudo systemctl stop frps
# 重启frp
sudo systemctl restart frps
# 查看frp状态
sudo systemctl status frps
设置 frps 开机自启动
sudo systemctl enable frps

############ 内网服务器
# 创建并编辑该文件
sudo vi /etc/systemd/system/frpc.service

[Unit]
# 服务名称,可自定义
Description = frp server
After = network.target syslog.target
Wants = network.target

[Service]
Type = simple
# 启动命令,改为实际存放frps的路径
ExecStart = /home/software/frp_0.58.0_linux_amd64/frpc -c /home/software/frp_0.58.0_linux_amd64/frpc.toml

[Install]
WantedBy = multi-user.target

# 启动frp
sudo systemctl start frpc
# 停止frp
sudo systemctl stop frpc
# 重启frp
sudo systemctl restart frpc
# 查看frp状态
sudo systemctl status frpc
设置 frps 开机自启动
sudo systemctl enable frpc
  • 9
    点赞
  • 15
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值