docker+jenkins自动化部署PHP项目
安装Jenkins:(注意关注端口占用清空 netstat -anp | grep xxx)镜像使用的是 “jenkins/jenkins:lts”最后我通过shell脚本基于rsync工具实现远程同步,这里是因为我基于选择的分支去同步不同路径上的项目。然后配置到代码管理平台上,记得在容器中试拉去下是否成功~~浏览器访问项目:http://${服务IP}:8080。:(这里是定义了一个全局变量br
Docker+Jenkin实现PHP项目自动化部署
前期准备:
- 更新安装Docker环境;
- 拉去运行jenkins镜像;
- 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
更多推荐




所有评论(0)