Jenkins自动化部署到服务器

本文详细描述了如何在Jenkins中创建自由风格软件项目,配置源码管理和执行shell脚本,包括通过SSH部署到远程服务器、使用Python虚拟环境管理依赖并更新项目配置,以及使用Supervisor进行进程管理和企业微信构建通知的设置。
摘要由CSDN通过智能技术生成

已有Jenkins服务配置步骤就省略了,自己安装一个相关的插件这里就不详细介绍了… 直接上干货!

1、创建一个自由风格软件项目
在这里插入图片描述

2、源码管理配置
在这里插入图片描述

3、配置的 Build Steps 执行 shell 脚本(Jenkins服务器执行脚本)

​ 此脚本主要用于将Jenkins拉取下来代码的存放位置,创建一个项目的工程文件夹,将拉取下来的代码复制到新工程文件下

#!/bin/bash  
mkdir -p $WORKSPACE/CTRLER

# 假设你已经在A的父目录中,或者你可以直接指定A的完整路径  
src_dir="/var/lib/jenkins/workspace/API_CTRLER"  
dest_dir="$src_dir/CTRLER"  
  
# 进入源目录  
cd "$src_dir" || exit 1  
  
# 遍历目录中的所有项  
for item in *; do  
    # 检查当前项是否是目录并且不是B也不是隐藏文件/目录  
    if [ -d "$item" ] && [ "$item" != "CTRLER" ] && [ "${item:0:1}" != "." ]; then  
        # 移动目录及其内容到B  
        cp -r "$item" "$dest_dir/"  
    elif [ -f "$item" ] && [ "${item:0:1}" != "." ]; then  
        # 移动文件到B  
        cp "$item" "$dest_dir/"  
    fi  
done

4、Send files or execute commands over SSH 配置远程服务器操作

在这里插入图片描述

# deploy.sh

# 定义变量
PROJECT_NAME="ctrler"
SERVER_IP="192.168.***.***"
SERVER_USER="root_Linux"
SERVER_PATH="/work/ctrler_projects/$PROJECT_NAME"
VENV_PATH="/work/ctrler_projects/$PROJECT_NAME/venv"

# 检查虚拟环境是否已存在
if [ ! -d "$VENV_PATH" ]; then
    echo "=========> 创建虚拟环境..."
    python3 -m venv $VENV_PATH
else
    echo "虚拟环境已存在,跳过创建..."
fi

# 激活虚拟环境
echo "=========> 激活虚拟环境..."
source $VENV_PATH/bin/activate

# 安装依赖
echo "=========>安装依赖..."
# pip freeze > requirements.txt
pip install -r requirements.txt

####### 下面是通过脚本来修改项目配置信息,你们可以忽略  ######
# 修改配置
echo FLASK_ENV = 'development' > env.ini
# 数据库配置
echo DATABASE_URI='mysql://root:******##@192.168.***.***:3306/api' >> env.ini
echo DB_HOST = '192.168.***.***' >> env.ini
echo DB_PORT = '3306' >> env.ini
echo DB_USER = 'root' >> env.ini
echo DB_PASSWORD = 'tia*******12##' >> env.ini
echo DB_DATABASE = 'api' >> env.ini
#redis配置
echo REDIS_HOST = '127.0.0.1' >> env.ini
echo REDIS_PORT = '6379' >> env.ini
echo REDIS_PASSWD = 'tian*******st12%%' >> env.ini
#kafka配置
echo KAFKA_SERVER= '127.0.0.1:***' >> env.ini
#nacos配置
echo NACOS_SERVER="192.168.***.***:8848" >> env.ini
echo NACOS_NAMESPACE="ctrler-dev" >> env.ini
echo NACOS_USERNAME="nacos" >> env.ini
echo NACOS_PASSWORD="na*****##" >> env.ini

echo NACOS_SERVER_CTRLER_DRIVER="ctrler-driver" >> env.ini
echo NACOS_SERVER_CTRLER="ctrler" >> env.ini
echo NACOS_SERVER_CTRLER_IP="192.168.***.***" >> env.ini
echo NACOS_SERVER_CTRLER_PORT=8200 >> env.ini

#############

# 构建静态文件
echo "=========>构建静态文件..."
if [ ! -d "logs" ]; then
    mkdir logs
fi
# sed -i 's/app.run()/app.run(host="0.0.0.0",port=8200)/' wsgi.py
# python wsgi.py collectstatic --noinput
# 输出完成信息---------------
echo "===========================Deployment completed successfully!"
echo "==============  重启  =============="
supervisorctl restart ctrler   # supervisorctl 进程管理工具
# 关于supervisor

1. **安装Supervisor**:使用以下命令安装Supervisor:

   yum install supervisor

2. **启动Supervisor**:

   systemctl start supervisord
   # 开机自启
   systemctl enable supervisord

3. **验证Supervisor状态**

   systemctl status supervisord

4. **添加和管理程序**

   supervisorctl reread

5. **配置例子**

   配置文件在/etc/supervisord.d
   
   例子:
   [program:ctrler-api]
   directory = /work/ctrler_projects/ctrler_driver
   command = /work/ctrler_projects/ctrler_driver/venv/bin/gunicorn -w 4 -b 0.0.0.0:8099 wsgi:app -t 360
   autorestart = true
   user = root
   redirect_stderr = true
   stdout_logfile = /work/ctrler_projects/ctrler_driver/supervisor/stdout.log
   stderr_logfile = /work/ctrler_projects/ctrler_driver/supervisor/stderr.log
   loglevel = info
   
   # 执行
   supervisorctl reload
   
   # 全部启动
   supervisorctl restart all
   # 指定启动
   supervisorctl restart ctrler-api
   # 查看所有进程状态
   supervisorctl status

5、构建后的操作(用于发送企业微信构建通知)

在这里插入图片描述

  • 4
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值