Skip to content
On this page

Jenkins自动化部署

安装

服务器需安装如下

  • Jenkins
  • JDK【java项目】
  • maven【打包java项目所需】
  • git【拉取git代码】
  • nodejs【打包前端项目所需】
  • nginx【代理、部署前端】
  • redis【看java项目是否需要】

Jenkins

  1. wget -O /etc/yum.repos.d/jenkins.repo https://pkg.jenkins.io/redhat-stable/jenkins.repo
  2. rpm --import https://pkg.jenkins.io/redhat-stable/jenkins.io.key
  3. 如果曾经安装过,则需执行: yum install epel-release # repository that provides 'daemonize'
  4. 安装JDK: yum install java-11-openjdk-devel
  5. 安装jenkins:yum install jenkins
  6. 刷新:systemctl daemon-reload
  7. 开机启动:systemctl enable jenkins
  8. 启动:systemctl start jenkins
  9. 检查启动状态:systemctl status jenkins

image-20220626105600404

  1. 访问jenkins:ip:8080
  2. 初次登陆需要随机密码,查看初识密码:cat /var/lib/jenkins/secrets/initialAdminPassword

image-20220626105734228

  1. 安装插件

image-20220626105855817

  1. 访问地址设置

image-20220626110312816

  1. 已就绪

image-20220626110358861

  1. 安装完成,进入主界面

image-20220626110422975

JDK

  1. 下载上传JDK:jdk-8u181-linux-x64.tar.gz
  2. tar -zxvf jdk-8u181-linux-x64.tar.gz
  3. mkdir -p /usr/local/jdk1.8.0_181
  4. cp jdk1.8.0_181/* /usr/local/jdk1.8.0_181/ -r
  5. 配置环境变量
vim /etc/profile

添加java变量:
# java environment
export JAVA_HOME=/usr/local/jdk1.8.0_181
export CLASSPATH=.:${JAVA_HOME}/jre/lib/rt.jar:${JAVA_HOME}/lib/dt.jar:${JAVA_HOME}/lib/tools.jar
export PATH=$PATH:${JAVA_HOME}/bin
  1. 刷新配置文件:source /etc/profile
  2. 检查是否安装成功:java -version 或 javac

maven

  1. 下载上传apache-maven-3.8.6-bin.tar.gz
  2. 解压到usr/localtar -zxvf apache-maven-3.8.6-bin.tar.gz -C /usr/local/
  3. 配置maven环境变量:
vim /etc/profile

增加如下配置:
export MAVEN_HOME=/usr/local/apache-maven-3.8.6
export PATH=${PATH}:${MAVEN_HOME}/bin
  1. 刷新配置文件:source /etc/profile
  2. 检查是否安装成功:mvn -v

git

  1. yum install -y git
  2. git version

nodejs

  1. wget https://nodejs.org/dist/v16.14.0/node-v16.14.0-linux-x64.tar.xz
  2. xz -d node-v16.14.0-linux-x64.tar.xz
  3. tar -xvf node-v16.14.0-linux-x64.tar
  4. mkdir -p /usr/local/node-v16.14.0
  5. cp -r node-v16.14.0-linux-x64/* /usr/local/node-v16.14.0/
  6. ln -s /usr/local/node-v16.14.0/bin/node /usr/bin/node
  7. ln -s /usr/local/node-v16.14.0/bin/npm /usr/bin/npm
  8. node -v
  9. npm -v

nginx

  1. 安装环境依赖
    1. 安装gcc环境:yum install gcc-c++
    2. 安装PCRE库,用于解析正则表达式:yum install -y pcre pcre-devel
    3. zlib压缩和解压缩依赖:yum install -y zlib zlib-devel
    4. SSL 安全的加密的套接字协议层,用于HTTP安全传输,也就是https:yum install -y openssl openssl-devel
  2. 官网下载NGINX ,上传下载的nginx包置centos服务器 或者 执行wget下载命令:wget http://nginx.org/download/nginx-1.20.2.tar.gz
  3. 解压:tar -zxvf nginx-1.20.2.tar.gz
  4. 进入到解压的目录执行以下命令:
./configure \
 --prefix=/usr/local/nginx \
 --pid-path=/var/run/nginx.pid \
 --lock-path=/var/lock/nginx.lock \
 --error-log-path=/usr/local/nginx/logs/nginx/error.log \
 --http-log-path=/usr/local/nginx/logs/nginx/access.log \
 --with-http_gzip_static_module \
 --http-client-body-temp-path=/usr/local/nginx/proxy \
 --http-fastcgi-temp-path=/usr/local/nginx/fastcgi \
 --http-uwsgi-temp-path=/usr/local/nginx/uwsgi \
 --http-scgi-temp-path=/usr/local/nginx/scgi
  1. 执行编译以及安装命令:make && make install

  2. cd /usr/local/nginx/sbin执行启动命令:./nginx

  3. 如果无法访问:请检查80端口是否开启、防火墙是否关闭

  4. 以上安装依赖如果服务器连不上互联网,可以下载对应的依赖包上传服务器进行解压和安装,类似与nginx安装方式

命令解释
--prefix指定nginx安装目录
--pid-path指向nginx的pid
--lock-path锁定安装的文件,防止被恶意篡改或操作
--error-log-path错误日志路径
--http-log-pathhttp日志路径
–with-http_gzip_static_module启用gzip模块,在线实时压缩输出数据流
–http-client-body-temp-path设定客户端请求的临时目录
–http-proxy-temp-path设定http请求的临时目录
–http-fastcgi-temp-path设定fastcgi临时目录
–http-uwsgi-temp-path设定uwsgi临时目录
–http-scgi-temp-path设定scgi临时目录
--with-http_ssl_moduhttps 模块
异常处理:
1、-bash: make: command not found
系统是mini最小化安装,缺少make、vim命令
解决:yum -y install gcc automake autoconf libtool make
2、缺少nginx.pid文件时,重新创建对应的目录 =》./nginx
3、启动时pid文件失效:./nginx -c nginx.conf所有的决定路径(重新指向配置文件后,重新生成pid文件)

配置

gitee获取令牌

  1. 登陆gitee码云,进入设置页面

image-20220626110644346

  1. 点击左侧私人令牌按钮

image-20220626110748676

  1. 点击生成新令牌

image-20220626110822719

  1. 填写描述,后添加提交

image-20220626110904339

  1. 输入gitee密码

image-20220626110943688

  1. 生成得私人令牌,保存好只能查看一次,只能修改或者删除

image-20220626111040873

gitee全局凭据添加(用户密码)

git仓库的credentials 只能选择ssh key 或者用户名密码的凭据,gitee api token的凭据只是给触发器插件用的,目前这是两套凭据。所以需要单独为git源码管理插件配置ssh key 或者用户名密码凭据哦

在构建的时候,有可能选不到gitee令牌,只能添加用户密码令牌

image-20220626142521832

image-20220626142537258

image-20220626142552932

image-20220626142607372

image-20220626142642342

jenkins配置

安装中文插件和gitee码云、nodeJS插件

image-20220626111220948

image-20220626111305082

image-20220626111659774

系统配置JDK、Maven、nodejs、gitee令牌

  1. JDK、Maven

image-20220626112307763

  1. Gitee配置

image-20220626112511106

image-20220626112729975

image-20220626112849488

全局工具配置

image-20220626114210383

image-20220626114159149

image-20220626114228336

构建任务

image-20220626114518458

image-20220626143125572

image-20220626130433134

image-20220626130507887

gitee码云项目配置webHook

image-20220626130317358

image-20220626130409137

image-20220626142912177

image-20220626130616713

image-20220626143229556

image-20220626143303965

--- shell命令:---


#!/bin/bash -il

cd /var/lib/jenkins/workspace/vitepress-notes
sleep 1
rm -rf dist
sleep 1
npm install
sleep 1
npm run docs:build
sleep 1
rm -rf /usr/local/nginx/html/*
sleep 1
cp -r /var/lib/jenkins/workspace/vitepress-notes/docs/.vitepress/dist/*  /usr/local/nginx/html/

image-20220626145527547

Java项目

  1. 和以上Vue项目配置差不多,只是gitee地址和执行的shell命令不一样

java的shell命令

#!/bin/bash -il
mvn clean install '-Dmaven.test.skip=true'
sleep 1
# ./ry.sh start 启动 stop 停止 restart 重启 status 状态
AppName=jiliang-admin.jar
APP_HOME=/home

# JVM参数
JVM_OPTS="-Dname=$AppName  -Duser.timezone=Asia/Shanghai -Xms512m -Xmx1024m -XX:MetaspaceSize=128m -XX:MaxMetaspaceSize=512m -XX:+HeapDumpOnOutOfMemoryError -XX:+PrintGCDateStamps  -XX:+PrintGCDetails -XX:NewRatio=1 -XX:SurvivorRatio=30 -XX:+UseParallelGC -XX:+UseParallelOldGC"
LOG_PATH=$APP_HOME/logs/$AppName.log

function start()
{
    PID=`ps -ef |grep java|grep $AppName|grep -v grep|awk '{print $2}'`

	if [ x"$PID" != x"" ]; then
	    echo "$AppName is running..."
	else
		BUILD_ID=nohup java $JVM_OPTS -jar /var/lib/jenkins/workspace/jiliang-admin/target/$AppName > /dev/null 2>&1 &
		echo "Start $AppName success..."
	fi
}

function stop()
{
    echo "Stop $AppName"

	PID=""
	query(){
		PID=`ps -ef |grep java|grep $AppName|grep -v grep|awk '{print $2}'`
	}

	query
	if [ x"$PID" != x"" ]; then
		kill -TERM $PID
		echo "$AppName (pid:$PID) exiting..."
		while [ x"$PID" != x"" ]
		do
			sleep 1
			query
		done
		echo "$AppName exited."
	else
		echo "$AppName already stopped."
	fi
}

function restart()
{
    stop
    sleep 2
    start
}

restart

问题点:

执行shell时权限不足:

切记【版本号:2.346.1】:修改jenkins配置文件:vim /usr/lib/systemd/system/jenkins.service 而不是:vim /etc/sysconfig/jenkins

1. 修改为root权限
vim /usr/lib/systemd/system/jenkins.service
User=root
Group=root

2. 路径授权
chown -R root:root /var/lib/jenkins
chown -R root:root /var/log/jenkins
chown -R root:root /var/cache/jenkins