在现代软件开发中,自动化部署是提高效率和减少人为错误的重要手段。rsync
结合 Jenkins
是一种流行的自动化部署方案,可以实现代码的自动同步和应用的持续集成。以下是使用 rsync
和 Jenkins
实现服务自动部署的全流程:
1. 服务器安装配置 rsync
首先,确保所有服务器上都安装了 rsync
。在 CentOS 7 环境中,可以通过以下命令安装:
yum -y install rsync
2. 被控端(业务节点服务器)配置 rsync
在被控端服务器上,创建 /etc/rsync.pass
文件并配置相应的权限和同步模块:
touch /etc/rsync.pass
编辑 /etc/rsync.pass
文件,设置允许访问的用户、路径等:
uid = root
gid = root
port = 873
use chroot = no
read only = no
list = no
timeout = 600
auth users = xx
hosts allow = 10.8.11.240
hosts deny = 0.0.0.0/32
[hello-world]
path = /data/spring/hello-world
comment = hello-world
启动 rsync
守护进程:
rsync --daemon
3. 主控端(Jenkins服务器)配置 rsync
在主控端服务器上,创建认证文件 /etc/passwd.txt
:
touch /etc/passwd.txt && echo admin@789 > /etc/passwd.txt
修改文件权限:
chmod 600 /etc/passwd.txt
4. 验证文件同步功能
在主控端执行文件同步命令:
rsync -avz activity-annual.jar xx@10.8.11.248::activity-annual --password-file=/etc/passwd.txt
5. 配置 Jenkins 自动部署
在 Jenkins 中创建一个新的 Job,并配置源码管理、构建触发器和构建步骤。
5.1 创建 Job
在 Jenkins Web 界面,创建一个新的 Job,选择“构建一个自由风格的软件项目”。
5.2 配置源码管理
配置 Git 仓库地址,并添加认证信息。
5.3 配置构建触发器
选择适合的触发方式,如定时构建或 Webhook。
5.4 配置构建步骤
在“构建”部分,选择“执行 shell”,并添加以下脚本:
echo ${WORKSPACE}
echo ${JOB_NAME}
context_name=hello-world
wget ${backend_package_url} -O ${context_name}.tar.gz
tar -zxvf ${context_name}.tar.gz
mv ${WORKSPACE}/target/*.jar ${context_name}.jar
chmod -R o+g ${context_name}.jar
jar=${context_name}.jar
TIMESTAMP=`date +%Y%m%d_%H%M`
ansible 10.8.11.248 -m shell -a "sh /root/spring_add.sh ${context_name}"
ansible 10.8.11.249 -m shell -a "sh /root/system_add.sh ${context_name}"
rsync -avz ${jar} xx@10.8.11.248::${context_name} --password-file=/etc/passwd.txt
rsync -avz ${jar} xx@10.8.11.249::${context_name} --password-file=/etc/passwd.txt
sleep 10
ansible 10.8.11.248 -m systemd -a "name=${context_name} state=restarted"
ansible 10.8.11.249 -m systemd -a "name=${context_name} state=restarted"
6. 构建与部署
点击“Build with Parameters”,输入必要的参数,如后端包下载地址,然后点击“Build”按钮,Jenkins 将自动执行打包和部署流程。
通过以上步骤,可以实现从代码提交到自动部署的全流程自动化,大大提高了部署效率和减少了人为错误。