Docker+Jenkins+ 码云仓库实现 PHP 代码自动化部署

简介: 自动化部署(持续集成/CI+持续交付/CD)是一个软件开发的趋势,是对DevOps的一个很好的帮助发展推进。今天实践的是基于Docker+Jenkins+LNMP+码云代码仓库,实现PHP代码的自动化部署过程。

环境配置

操作系统:CentOS Linux release 7.6.1810
Docker 版本:19.03.5
Jenkins 版本:2.204.1
Nginx 版本:1.15.5
PHP 版本:7.2.26
MySQL 版本:8.0.18
Redis 版本:5.0.5  
码云:代码仓库

Docker安装

请参考这篇文章:CentOS 安装 docker

Docker安装LNMP环境

请参考这篇文章:Dockerfile 方式定制 lnmp 环境

Docker安装Jenkins

请参考这篇文章:Docker 搭建 Jenkins 实现自动部署

码云仓库准备

创建项目仓库

Docker+LNMP+Jenkins+ 码云实现 PHP 代码自动化部署

Jenkins准备

安装ssh插件

因为构建项目式,需要执行服务器的一些shell命令,所以采用ssh登录方式与远程服务器进行通信。
1. 系统管理->插件管理
2. 搜索:ssh,安装即可

Docker+LNMP+Jenkins+ 码云实现 PHP 代码自动化部署

Docker+LNMP+Jenkins+ 码云实现 PHP 代码自动化部署

新建工程任务

任务名称不能是中文哦,选择第一个:Freestyle project 自定义项目

Docker+LNMP+Jenkins+ 码云实现 PHP 代码自动化部署

工程任务配置

1. 源码管理选择:git
2. Repository URL:仓库地址(我的是码云仓库)
3. Credentials选择添加
4. 添加凭据
5. 配置仓库私钥(具体可查看码云的仓库密钥管理帮助)

Docker+LNMP+Jenkins+ 码云实现 PHP 代码自动化部署

Docker+LNMP+Jenkins+ 码云实现 PHP 代码自动化部署

凭据配置成功后,选择上一步凭据配置的Username即可,这下如果成功连接上仓库地址,则不会报错了。

Docker+LNMP+Jenkins+ 码云实现 PHP 代码自动化部署

构建触发器选择:Github hook trigger for GITScm polling

Docker+LNMP+Jenkins+ 码云实现 PHP 代码自动化部署

构建环境:Use secret text(s) or file(s) //私密方式传输文件
凭据:选择指定凭据git

Docker+LNMP+Jenkins+ 码云实现 PHP 代码自动化部署

配置ssh

1. 系统管理->系统配置
2. 配置远程服务器ssh相关信息

Docker+LNMP+Jenkins+ 码云实现 PHP 代码自动化部署

Docker+LNMP+Jenkins+ 码云实现 PHP 代码自动化部署

配置构建shell脚本

构建:Execute shell script on remote host using ssh //构建时执行远程服务器shell脚本
1. 填写SSH site //远程服务器ssh登录
2. Command //shell脚本
备注:
因为代码自动部署在jenkins的工作空间workspace目录下,而项目的站点目录在/data/www下,所以在构建时,需要把更新的代码文件复制到项目站点下(这里有多种实现方式,这里使用代码复制一份,是因为代码的大小不会占很大的空间,现在很多静态资源都放在一些云服务上了)
最开始使用过软连接的方式,但因为nginx不支持软连接的访问。

Docker+LNMP+Jenkins+ 码云实现 PHP 代码自动化部署

Docker+LNMP+Jenkins+ 码云实现 PHP 代码自动化部署

配置完毕,点击保存即可

码云代码推送

码云仓库修改代码,然后提交PR到master分支

Docker+LNMP+Jenkins+ 码云实现 PHP 代码自动化部署

Docker+LNMP+Jenkins+ 码云实现 PHP 代码自动化部署

部署任务手动构建

手动点击构建,即可实现代码自动化部署
备注:
也可以配置成监控到git push就直接自动构建(测试环境建议这样做)
手动点击构建是为了更好的管理(生产环境建议这样做)

Docker+LNMP+Jenkins+ 码云实现 PHP 代码自动化部署

Docker+LNMP+Jenkins+ 码云实现 PHP 代码自动化部署

如果任务构建失败,会有报错信息和红色标记 //很方便管理

Docker+LNMP+Jenkins+ 码云实现 PHP 代码自动化部署

Docker+LNMP+Jenkins+ 码云实现 PHP 代码自动化部署

访问网站

自动化部署任务构建成功后,访问我们的项目,即可看到修改效果

Docker+LNMP+Jenkins+ 码云实现 PHP 代码自动化部署

目录
相关文章
|
14天前
|
Docker 容器
Docker自建仓库之Harbor高可用部署实战篇
关于如何部署Harbor高可用性的实战教程,涵盖了从单机部署到镜像仓库同步的详细步骤。
49 15
Docker自建仓库之Harbor高可用部署实战篇
|
1天前
|
设计模式 数据库连接 PHP
PHP中的设计模式:提高代码的可维护性与扩展性
在本文中,我们将深入探讨PHP编程语言中设计模式的重要性,以及如何通过应用这些模式来提高代码的可维护性和扩展性。设计模式是一套被反复使用、经过分类编目的代码设计经验的总结。它们代表了最佳的实践,能帮助开发者编写出更加健壮、灵活和可复用的代码。本文将介绍几种常见的设计模式,并通过PHP代码示例展示其应用。
|
3天前
|
缓存 NoSQL PHP
使用PHP-redis实现键空间通知监听key失效事件的技术与代码示例
通过上述方法,你可以有效地在PHP中使用Redis来监听键空间通知,特别是针对键失效事件。这可以帮助你更好地管理缓存策略,及时响应键的变化。
13 3
|
4天前
|
PHP 开发者
PHP中的异常处理:提升代码的健壮性与可维护性
【9月更文挑战第12天】在编程的世界里,错误和异常是不可避免的。它们像是旅途中的绊脚石,让我们的步伐变得蹒跚。然而,正是这些挑战,塑造了我们解决问题的能力。本文将引导你了解如何用PHP的异常处理机制来捕捉这些“绊脚石”,并将其转化为成长的阶梯。我们将一起探索如何通过异常处理来增强代码的健壮性和可维护性,让你的程序在面对未知和意外时,依然能够优雅地舞蹈。
|
14天前
|
存储 测试技术 数据安全/隐私保护
Docker自建仓库之Harbor部署实战
关于如何部署和使用Harbor作为Docker企业级私有镜像仓库的详细教程。
33 12
|
11天前
|
PHP
PHP中的异常处理:提升代码的健壮性
【9月更文挑战第5天】在PHP编程中,异常处理是确保应用稳定性和可靠性的关键机制。本文将深入探讨如何使用PHP的异常处理来捕捉错误、清理资源并优雅地恢复程序流程,同时通过实际代码示例展示如何实现这一过程。
|
14天前
|
Docker 容器
Docker Hub镜像公共仓库使用
这篇文章介绍了如何使用Docker Hub公共仓库进行镜像的创建、上传、下载和管理。
233 8
|
14天前
|
运维 数据安全/隐私保护 Docker
Docker自建仓库之Docker Registry部署实战
关于如何使用Docker Registry镜像搭建本地私有Docker仓库的实战教程,包括了下载镜像、创建授权目录和用户名密码、启动Registry容器、验证端口和容器、测试登录仓库、上传和下载镜像的详细步骤。
54 5
|
11天前
|
IDE PHP 开发工具
PHP中的异常处理:提升代码的健壮性
【9月更文挑战第5天】在PHP编程中,异常处理是一种强大的错误管理机制,允许开发者编写更加清晰、可维护的代码。本文将深入探讨PHP的异常处理,从基础概念到高级应用,旨在指导读者如何通过异常处理来提高代码质量,避免常见的陷阱,并实现更优雅的错误处理策略。
|
17天前
|
持续交付 jenkins Devops
WPF与DevOps的完美邂逅:从Jenkins配置到自动化部署,全流程解析持续集成与持续交付的最佳实践
【8月更文挑战第31天】WPF与DevOps的结合开启了软件生命周期管理的新篇章。通过Jenkins等CI/CD工具,实现从代码提交到自动构建、测试及部署的全流程自动化。本文详细介绍了如何配置Jenkins来管理WPF项目的构建任务,确保每次代码提交都能触发自动化流程,提升开发效率和代码质量。这一方法不仅简化了开发流程,还加强了团队协作,是WPF开发者拥抱DevOps文化的理想指南。
36 1