Docker+Jenkin实现PHP项目自动化部署

前期准备:

  1. 更新安装Docker环境;
  2. 拉去运行jenkins镜像;
  3. jenkins安装配置相关插件;

安装Docker环境:

卸载docker旧版:

yum remove docker \

​         docker-client \

​         docker-client-latest \

​         docker-common \

​         docker-latest \

​         docker-latest-logrotate \

​         docker-logrotate \

​         docker-engine  

安装yum-utils包:

yum install -y yum-utils

设置阿里云镜像仓库:

yum-config-manager \

  --add-repo \

  http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo

启动Docker:

systemctl start docker

运行jenkin镜像:

安装Jenkins:(注意关注端口占用清空 netstat -anp | grep xxx)镜像使用的是 “jenkins/jenkins:lts”

docker run -itd -uroot -p 8080:8080 -p 50000:50000 --memory="1g" -v /var/jenkins_home:/var/jenkins_home -e JAVA_OPTS="-Xms512m -Xmx1024m"  jenkins/jenkins:lts

浏览器访问项目:http://${服务IP}:8080
在这里插入图片描述

进入容器获取密码:

# 进入Jenkins
docker exec -it ${容器ID} /bin/bash
#查看密码
cat /var/jenkins_home/secrets/initialAdminPassword

选择安装推荐的插件,然后等待Jenkins自行安装:

在这里插入图片描述

全部安装完成,点击继续。

安装配置插件:

在系统管理->插件管理->

在这里插入图片描述

PHP项目是非编译型的,所以不需要配置安装maven,是需要安装SSH一个即可。其他就是gitee用到可以装一下,如果像我一样需要多分支构建则还需要添加"Git Parameter Plug-In"。。
在这里插入图片描述

全局配置:

在系统管理->全局配置,拉到最低添加SSH Server:

在这里插入图片描述

Jenkins主机将密钥发布到web主机:

[root@jenkins ~]# su -s /bin/bash jenkins
bash-4.2$ ssh-keygen
bash-4.2$ ssh-copy-id root@[远程Web服务IP]

这样在添加SSH Server点击测试连接才能跑通~~

在这里插入图片描述

新建任务:

点击构建一个自由风格的软件项目

在这里插入图片描述

获取我们的仓库地址(gitlab、gitee…) 我的用的是coding

在这里插入图片描述

这里需要现在jenkins容器中配置好SSH密钥:

ssh-keygen -t rsa
cat ~/.ssh/id_rsa.pub

然后配置到代码管理平台上,记得在容器中试拉去下是否成功~~

由于我需要多分支配置,所以我先配置分支变量:(这里是定义了一个全局变量branch,后续会用到)

最终效果:

在这里插入图片描述

配置步骤:

在这里插入图片描述

填写拉去仓库地址配置:

在这里插入图片描述

最后我通过shell脚本基于rsync工具实现远程同步,这里是因为我基于选择的分支去同步不同路径上的项目

在这里插入图片描述

一般简单一句:

rsync -avz --delete * "root@[远程服务IP]:$dest" 

这是我需要用到的:

#!/bin/bash

if [ "$branch" == "origin/master" ]; then
    dest="/www/wwwroot/new_zhubao"
elif [ "$branch" == "origin/test" ]; then
    dest="/www/wwwroot/test_zhubao"
else
    dest="/www/wwwroot/dev_zhubao"
fi

rsync -avz --delete * "root@[远程服务IP]:$dest"

这里补充下,如果执行失败可能是没有下载rsync,记得远程服务和本地服务都要安装一下哦,确保万无一失~~

centos:yum install rsync
ubantu: sudo apt update
        sudo apt-get install rsync

补充2:如果ssh每次拉取会出现一致卡在执行脚本上很大可能是没有配置jenkins至其他服务器之间免密钥ssh登录,这个是你安装了Publish Over SSH 插件后,配置好依旧无法执行的问题所在!!!

生成免密码ssh密钥(部署jenkins的服务器)
ssh-keygen -t rsa

传输公钥至部署代码的服务器
ssh-copy-id root@XX.XX.176.119
Logo

一站式 AI 云服务平台

更多推荐