Appearance
Jenkins自动化部署
安装
服务器需安装如下
- Jenkins
- JDK【java项目】
- maven【打包java项目所需】
- git【拉取git代码】
- nodejs【打包前端项目所需】
- nginx【代理、部署前端】
- redis【看java项目是否需要】
Jenkins
wget -O /etc/yum.repos.d/jenkins.repo https://pkg.jenkins.io/redhat-stable/jenkins.repo
rpm --import https://pkg.jenkins.io/redhat-stable/jenkins.io.key
- 如果曾经安装过,则需执行:
yum install epel-release # repository that provides 'daemonize'
- 安装JDK:
yum install java-11-openjdk-devel
- 安装jenkins:
yum install jenkins
- 刷新:
systemctl daemon-reload
- 开机启动:
systemctl enable jenkins
- 启动:
systemctl start jenkins
- 检查启动状态:
systemctl status jenkins
- 访问jenkins:
ip:8080
- 初次登陆需要随机密码,查看初识密码:
cat /var/lib/jenkins/secrets/initialAdminPassword
- 安装插件
- 访问地址设置
- 已就绪
- 安装完成,进入主界面
JDK
- 下载上传JDK:
jdk-8u181-linux-x64.tar.gz
tar -zxvf jdk-8u181-linux-x64.tar.gz
mkdir -p /usr/local/jdk1.8.0_181
cp jdk1.8.0_181/* /usr/local/jdk1.8.0_181/ -r
- 配置环境变量
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
- 刷新配置文件:
source /etc/profile
- 检查是否安装成功:
java -version 或 javac
maven
- 下载上传
apache-maven-3.8.6-bin.tar.gz
- 解压到
usr/local
:tar -zxvf apache-maven-3.8.6-bin.tar.gz -C /usr/local/
- 配置maven环境变量:
vim /etc/profile
增加如下配置:
export MAVEN_HOME=/usr/local/apache-maven-3.8.6
export PATH=${PATH}:${MAVEN_HOME}/bin
- 刷新配置文件:
source /etc/profile
- 检查是否安装成功:
mvn -v
git
yum install -y git
git version
nodejs
wget https://nodejs.org/dist/v16.14.0/node-v16.14.0-linux-x64.tar.xz
xz -d node-v16.14.0-linux-x64.tar.xz
tar -xvf node-v16.14.0-linux-x64.tar
mkdir -p /usr/local/node-v16.14.0
cp -r node-v16.14.0-linux-x64/* /usr/local/node-v16.14.0/
ln -s /usr/local/node-v16.14.0/bin/node /usr/bin/node
ln -s /usr/local/node-v16.14.0/bin/npm /usr/bin/npm
node -v
npm -v
nginx
- 安装环境依赖
- 安装gcc环境:
yum install gcc-c++
- 安装PCRE库,用于解析正则表达式:
yum install -y pcre pcre-devel
- zlib压缩和解压缩依赖:
yum install -y zlib zlib-devel
- SSL 安全的加密的套接字协议层,用于HTTP安全传输,也就是https:
yum install -y openssl openssl-devel
- 安装gcc环境:
- 官网下载NGINX ,上传下载的nginx包置centos服务器 或者 执行wget下载命令:
wget http://nginx.org/download/nginx-1.20.2.tar.gz
- 解压:
tar -zxvf nginx-1.20.2.tar.gz
- 进入到解压的目录执行以下命令:
./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
执行编译以及安装命令:
make && make install
cd /usr/local/nginx/sbin
执行启动命令:./nginx
如果无法访问:请检查80端口是否开启、防火墙是否关闭
以上安装依赖如果服务器连不上互联网,可以下载对应的依赖包上传服务器进行解压和安装,类似与nginx安装方式
命令 | 解释 |
---|---|
--prefix | 指定nginx安装目录 |
--pid-path | 指向nginx的pid |
--lock-path | 锁定安装的文件,防止被恶意篡改或操作 |
--error-log-path | 错误日志路径 |
--http-log-path | http日志路径 |
–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_modu | https 模块 |
异常处理:
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获取令牌
- 登陆gitee码云,进入设置页面
- 点击左侧私人令牌按钮
- 点击生成新令牌
- 填写描述,后添加提交
- 输入gitee密码
- 生成得私人令牌,保存好只能查看一次,只能修改或者删除
gitee全局凭据添加(用户密码)
git仓库的credentials 只能选择ssh key 或者用户名密码的凭据,gitee api token的凭据只是给触发器插件用的,目前这是两套凭据。所以需要单独为git源码管理插件配置ssh key 或者用户名密码凭据哦
在构建的时候,有可能选不到gitee令牌,只能添加用户密码令牌
jenkins配置
安装中文插件和gitee码云、nodeJS插件
系统配置JDK、Maven、nodejs、gitee令牌
- JDK、Maven
- Gitee配置
全局工具配置
构建任务
gitee码云项目配置webHook
--- 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/
Java项目
- 和以上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